diff -Nru uget-2.0.2/aclocal.m4 uget-2.2.2/aclocal.m4 --- uget-2.0.2/aclocal.m4 2015-09-11 12:13:18.000000000 +0000 +++ uget-2.2.2/aclocal.m4 2019-05-19 16:51:31.000000000 +0000 @@ -1,8 +1,7 @@ -# generated automatically by aclocal 1.11.3 -*- Autoconf -*- +# generated automatically by aclocal 1.16.1 -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, -# Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -12,13 +11,14 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, -[m4_warning([this file was generated for autoconf 2.68. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 1995-2002 Free Software Foundation, Inc. # Copyright (C) 2001-2003,2004 Red Hat, Inc. @@ -47,7 +47,10 @@ # # Modified to require ngettext # Matthias Clasen 08/06/2004 -# + +# Increment this whenever this file is changed. +#serial 1 + # We need this here as well, since someone might use autoconf-2.5x # to configure GLib then an older version to configure a package # using AM_GLIB_GNU_GETTEXT @@ -119,6 +122,51 @@ AC_SUBST($1)dnl ]) +dnl Checks for special options needed on Mac OS X. +dnl Defines INTL_MACOSX_LIBS. +dnl +dnl Copied from intlmacosx.m4 in gettext, GPL. +dnl Copyright (C) 2004-2013 Free Software Foundation, Inc. +glib_DEFUN([glib_gt_INTL_MACOSX], +[ + dnl Check for API introduced in Mac OS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + [gt_cv_func_CFPreferencesCopyAppValue], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFPreferencesCopyAppValue(NULL, NULL)]])], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], + [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in Mac OS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFLocaleCopyCurrent();]])], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], + [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) + # GLIB_WITH_NLS #----------------- glib_DEFUN([GLIB_WITH_NLS], @@ -132,6 +180,8 @@ XGETTEXT=: INTLLIBS= + glib_gt_INTL_MACOSX + AC_CHECK_HEADER(libintl.h, [gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" @@ -215,7 +265,7 @@ fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then - INTLLIBS="-lintl $libintl_extra_libs" + INTLLIBS="-lintl $libintl_extra_libs $INTL_MACOSX_LIBS" fi if test "$gt_cv_have_gettext" = "yes"; then @@ -335,9 +385,8 @@ # on various variables needed by the Makefile.in.in installed by # glib-gettextize. dnl -glib_DEFUN([GLIB_GNU_GETTEXT], +AU_DEFUN([GLIB_GNU_GETTEXT], [AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl GLIB_LC_MESSAGES GLIB_WITH_NLS @@ -406,7 +455,8 @@ rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES - ]) + ], + [[$0: This macro is deprecated. You should use upstream gettext instead.]]) # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE) # ------------------------------- @@ -591,31 +641,6 @@ # Substitute ALL_LINGUAS so we can use it in po/Makefile AC_SUBST(ALL_LINGUAS) -# Set DATADIRNAME correctly if it is not set yet -# (copied from glib-gettext.m4) -if test -z "$DATADIRNAME"; then - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[]], - [[extern int _nl_msg_cat_cntr; - return _nl_msg_cat_cntr]])], - [DATADIRNAME=share], - [case $host in - *-*-solaris*) - dnl On Solaris, if bind_textdomain_codeset is in libc, - dnl GNU format message catalog is always supported, - dnl since both are added to the libc all together. - dnl Hence, we'd like to go with DATADIRNAME=share - dnl in this case. - AC_CHECK_FUNC(bind_textdomain_codeset, - [DATADIRNAME=share], [DATADIRNAME=lib]) - ;; - *) - [DATADIRNAME=lib] - ;; - esac]) -fi -AC_SUBST(DATADIRNAME) - IT_PO_SUBDIR([po]) ]) @@ -673,19 +698,19 @@ # nls.m4 serial 5 (gettext-0.18) -dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation, -dnl Inc. +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016 Free Software +dnl Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -dnl This file can can be used in projects which are not available under +dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. +dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: @@ -705,32 +730,63 @@ AC_SUBST([USE_NLS]) ]) -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 11 (pkg-config-0.29.1) -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.1]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) @@ -752,18 +808,19 @@ PKG_CONFIG="" fi fi[]dnl -])# PKG_PROG_PKG_CONFIG +])dnl PKG_PROG_PKG_CONFIG -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have to call PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ @@ -773,8 +830,10 @@ $3])dnl fi]) -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" @@ -786,10 +845,11 @@ else pkg_failed=untried fi[]dnl -])# _PKG_CONFIG +])dnl _PKG_CONFIG -# _PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -797,19 +857,17 @@ else _pkg_short_errors_supported=no fi[]dnl -])# _PKG_SHORT_ERRORS_SUPPORTED +])dnl _PKG_SHORT_ERRORS_SUPPORTED -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -# -# -# -------------------------------------------------------------- +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl @@ -863,27 +921,175 @@ AC_MSG_RESULT([yes]) $3 fi[]dnl -])# PKG_CHECK_MODULES +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------ +dnl +dnl Prepare a "--with-" configure option using the lowercase +dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and +dnl PKG_CHECK_MODULES in a single macro. +AC_DEFUN([PKG_WITH_MODULES], +[ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +])dnl PKG_WITH_MODULES + +dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ----------------------------------------------- +dnl +dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES +dnl check._[VARIABLE-PREFIX] is exported as make variable. +AC_DEFUN([PKG_HAVE_WITH_MODULES], +[ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +])dnl PKG_HAVE_WITH_MODULES + +dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------------------ +dnl +dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after +dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make +dnl and preprocessor variable. +AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], +[ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +])dnl PKG_HAVE_DEFINE_WITH_MODULES -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 2002-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' +[am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.3], [], +m4_if([$1], [1.16.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -899,19 +1105,17 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.3])dnl +[AM_AUTOMAKE_VERSION([1.16.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) -# Copyright (C) 2011 Free Software Foundation, Inc. +# Copyright (C) 2011-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # AM_PROG_AR([ACT-IF-FAIL]) # ------------------------- # Try to determine the archiver interface, and trigger the ar-lib wrapper @@ -926,7 +1130,8 @@ : ${AR=ar} AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], - [am_cv_ar_interface=ar + [AC_LANG_PUSH([C]) + am_cv_ar_interface=ar AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) @@ -943,7 +1148,7 @@ fi rm -f conftest.lib libconftest.a ]) - ]) + AC_LANG_POP([C])]) case $am_cv_ar_interface in ar) @@ -967,17 +1172,15 @@ # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and @@ -996,7 +1199,7 @@ # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you +# harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, @@ -1014,30 +1217,26 @@ # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1997-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 9 - # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl @@ -1056,16 +1255,14 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, -# 2010, 2011 Free Software Foundation, Inc. +# Copyright (C) 1999-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 12 -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing @@ -1075,7 +1272,7 @@ # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was @@ -1088,12 +1285,13 @@ AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], @@ -1101,8 +1299,8 @@ # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -1142,16 +1340,16 @@ : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -1160,8 +1358,8 @@ test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else @@ -1169,7 +1367,7 @@ fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -1217,7 +1415,7 @@ # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl @@ -1227,9 +1425,13 @@ # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' @@ -1244,67 +1446,54 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1999-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -#serial 5 - # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files + # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) shift - for mf + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf do # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS @@ -1313,29 +1502,31 @@ # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# Copyright (C) 1996-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 16 - # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- @@ -1348,7 +1539,7 @@ # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl +[AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl @@ -1377,33 +1568,42 @@ # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl @@ -1412,34 +1612,82 @@ [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. @@ -1461,21 +1709,18 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, -# Inc. +# Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then +if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -1483,16 +1728,14 @@ install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi -AC_SUBST(install_sh)]) +AC_SUBST([install_sh])]) -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2003-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], @@ -1508,102 +1751,55 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. +# Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 4 - # AM_MAKE_INCLUDE() # ----------------- -# Check to see how make treats includes. +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' am__doit: - @echo this is the am__doit target + @echo this is the am__doit target >confinc.out .PHONY: am__doit END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_PROG_CC_C_O -# -------------- -# Like AC_PROG_CC_C_O, but changed for automake. -AC_DEFUN([AM_PROG_CC_C_O], -[AC_REQUIRE([AC_PROG_CC_C_O])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -dnl Make sure AC_PROG_CC is never called again, or it will override our -dnl setting of CC. -m4_define([AC_PROG_CC], - [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) -]) +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1997-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 6 - # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], @@ -1611,11 +1807,10 @@ $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) - # AM_MISSING_HAS_RUN # ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl @@ -1628,54 +1823,22 @@ esac fi # Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " else am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) + AC_MSG_WARN(['missing' script is too old or missing]) fi ]) -# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, -# Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software -# Foundation, Inc. +# Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 - # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], @@ -1685,7 +1848,7 @@ # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ @@ -1699,24 +1862,82 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Check to make sure that the build environment is sane. -*- Autoconf -*- +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -1727,32 +1948,40 @@ esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac -# Do `set' in a subshell so we don't clobber the current shell's +# Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done test "$[2]" = conftest.file ) then @@ -1762,46 +1991,118 @@ AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi -AC_MSG_RESULT(yes)]) +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# Copyright (C) 2009-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- -# One issue with vendor `install' (even GNU) is that you can't +# One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize +# always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. +# Copyright (C) 2006-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 3 - # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. @@ -1815,18 +2116,16 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. +# Copyright (C) 2004-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory @@ -1836,76 +2135,114 @@ # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar +# AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. + +# We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR diff -Nru uget-2.0.2/ar-lib uget-2.2.2/ar-lib --- uget-2.0.2/ar-lib 2012-04-02 17:37:09.000000000 +0000 +++ uget-2.2.2/ar-lib 2018-02-26 20:38:27.000000000 +0000 @@ -2,9 +2,9 @@ # Wrapper for Microsoft lib.exe me=ar-lib -scriptversion=2012-01-30.22; # UTC +scriptversion=2012-03-01.08; # UTC -# Copyright (C) 2010, 2012 Free Software Foundation, Inc. +# Copyright (C) 2010-2018 Free Software Foundation, Inc. # Written by Peter Rosin . # # This program is free software; you can redistribute it and/or modify @@ -18,7 +18,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -153,7 +153,9 @@ delete= extract= list= +quick= replace= +index= create= while test -n "$action" @@ -162,7 +164,10 @@ d*) delete=yes ;; x*) extract=yes ;; t*) list=yes ;; + q*) quick=yes ;; r*) replace=yes ;; + s*) index=yes ;; + S*) ;; # the index is always updated implicitly c*) create=yes ;; u*) ;; # TODO: don't ignore the update modifier v*) ;; # TODO: don't ignore the verbose modifier @@ -173,8 +178,8 @@ action=${action#?} done -case $delete$extract$list$replace in - yes) +case $delete$extract$list$quick$replace,$index in + yes,* | ,yes) ;; yesyes*) func_error "more than one action specified" @@ -225,7 +230,7 @@ done fi -elif test -n "$replace"; then +elif test -n "$quick$replace"; then if test ! -f "$orig_archive"; then if test -z "$create"; then echo "$me: creating $orig_archive" diff -Nru uget-2.0.2/AUTHORS uget-2.2.2/AUTHORS --- uget-2.0.2/AUTHORS 2013-08-26 00:15:04.000000000 +0000 +++ uget-2.2.2/AUTHORS 2019-05-19 16:49:05.000000000 +0000 @@ -0,0 +1,16 @@ +uGet - A download manager with GUI. +============================================= + +Active Developer: +------------------ +C.H. Huang (plushuang.tw@gmail.com) - Maintainer + +Project Manager: +------------------ +Michael Tunnell (visuex.com) + +Artists: +-------- +Michael Tunnell - Logo Designer +saf1 (linuxac.org) - Former Logo Designer +Skeleton_Eel (linuxac.org) - Former Logo improver diff -Nru uget-2.0.2/compile uget-2.2.2/compile --- uget-2.0.2/compile 2012-04-02 17:37:09.000000000 +0000 +++ uget-2.2.2/compile 2018-03-08 20:15:51.000000000 +0000 @@ -1,10 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-01-04.17; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free -# Software Foundation, Inc. +# Copyright (C) 1999-2018 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -18,7 +17,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -79,6 +78,53 @@ esac } +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () @@ -109,43 +155,34 @@ ;; esac ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; -l*) - lib=${1#-l} - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - set x "$@" "$dir/$lib.dll.lib" - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - set x "$@" "$dir/$lib.lib" - break - fi - done - IFS=$save_IFS - - test "$found" != yes && set x "$@" "$lib.lib" + func_cl_dashl "${1#-l}" + set x "$@" "$lib" shift ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; -L*) - func_file_conv "${1#-L}" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" + func_cl_dashL "${1#-L}" ;; -static) shared=false @@ -218,7 +255,8 @@ echo "compile $scriptversion" exit $? ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac @@ -302,9 +340,9 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -Nru uget-2.0.2/config.h.in uget-2.2.2/config.h.in --- uget-2.0.2/config.h.in 2015-09-11 12:13:37.000000000 +0000 +++ uget-2.2.2/config.h.in 2019-05-19 16:52:05.000000000 +0000 @@ -9,9 +9,20 @@ /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #undef HAVE_BIND_TEXTDOMAIN_CODESET +/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + /* Define to 1 if you have the `dcgettext' function. */ #undef HAVE_DCGETTEXT +/* Define to 1 if you have the `ftruncate' function. */ +#undef HAVE_FTRUNCATE + /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT @@ -42,6 +53,12 @@ /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H +/* Define to 1 if you have the `posix_fallocate' function. */ +#undef HAVE_POSIX_FALLOCATE + +/* Define to 1 to enable RSS Notify. */ +#undef HAVE_RSS_NOTIFY + /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H @@ -66,9 +83,6 @@ /* Define the location where the catalogs will be installed */ #undef LOCALEDIR -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - /* Name of package */ #undef PACKAGE @@ -99,5 +113,8 @@ /* Define to 1 if openssl support is required. */ #undef USE_OPENSSL +/* Define to 1 to use UNIX Domain Socket. */ +#undef USE_UNIX_DOMAIN_SOCKET + /* Version number of package */ #undef VERSION diff -Nru uget-2.0.2/configure uget-2.2.2/configure --- uget-2.0.2/configure 2015-09-11 12:13:21.000000000 +0000 +++ uget-2.2.2/configure 2019-05-19 16:51:35.000000000 +0000 @@ -1,11 +1,9 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for uget 2.0.2. +# Generated by GNU Autoconf 2.69 for uget 2.2.2. # # -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation @@ -134,6 +132,31 @@ # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh @@ -167,7 +190,8 @@ else exitcode=1; echo positional parameters were not saved. fi -test x\$exitcode = x0 || exit 1" +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && @@ -212,21 +236,25 @@ if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi if test x$as_have_required = xno; then : @@ -328,6 +356,14 @@ } # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take @@ -449,6 +485,10 @@ chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). @@ -483,16 +523,16 @@ # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' + as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -504,28 +544,8 @@ as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x +as_test_x='test -x' +as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -557,8 +577,8 @@ # Identity of this package. PACKAGE_NAME='uget' PACKAGE_TARNAME='uget' -PACKAGE_VERSION='2.0.2' -PACKAGE_STRING='uget 2.0.2' +PACKAGE_VERSION='2.2.2' +PACKAGE_STRING='uget 2.2.2' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -640,14 +660,15 @@ INTLLIBS INSTOBJEXT GMOFILES +DATADIRNAME CATOBJEXT CATALOGS MSGFMT_OPTS +INTL_MACOSX_LIBS EGREP GREP CPP GETTEXT_PACKAGE -DATADIRNAME ALL_LINGUAS INTLTOOL_PERL GMSGFMT @@ -679,7 +700,6 @@ INTLTOOL__v_MERGE_0 INTLTOOL__v_MERGE_ INTLTOOL_V_MERGE -AM_DEFAULT_VERBOSITY INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE @@ -694,7 +714,6 @@ AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE -am__quote am__include DEPDIR OBJEXT @@ -704,6 +723,10 @@ LDFLAGS CFLAGS CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V am__untar am__tar AMTAR @@ -764,10 +787,12 @@ PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR -SHELL' +SHELL +am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking +enable_silent_rules enable_dependency_tracking enable_nls with_gnutls @@ -776,6 +801,8 @@ enable_appindicator enable_gstreamer enable_pwmd +enable_rss_notify +enable_unix_socket ' ac_precious_vars='build_alias host_alias @@ -1258,8 +1285,6 @@ if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1345,7 +1370,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures uget 2.0.2 to adapt to many kinds of systems. +\`configure' configures uget 2.2.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1411,7 +1436,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of uget 2.0.2:";; + short | recursive ) echo "Configuration of uget 2.2.2:";; esac cat <<\_ACEOF @@ -1419,14 +1444,20 @@ --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build --disable-nls do not use Native Language Support --disable-notify Disable libnotify support. --enable-appindicator=[no/auto/yes] Build support for application indicators. --disable-gstreamer Disable GStreamer audio support. --enable-pwmd Enable pwmd support. + --disable-rss-notify Disable RSS Notify. + --enable-unix-socket Enable UNIX Domain Socket. Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1540,10 +1571,10 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -uget configure 2.0.2 -generated by GNU Autoconf 2.68 +uget configure 2.2.2 +generated by GNU Autoconf 2.69 -Copyright (C) 2010 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1619,7 +1650,7 @@ test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext + test -x conftest$ac_exeext }; then : ac_retval=0 else @@ -1742,48 +1773,6 @@ } # ac_fn_c_try_cpp -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using @@ -1871,6 +1860,48 @@ } # ac_fn_c_check_header_mongrel +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in @@ -1905,8 +1936,8 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by uget $as_me 2.0.2, which was -generated by GNU Autoconf 2.68. Invocation command line was +It was created by uget $as_me 2.2.2, which was +generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2255,7 +2286,7 @@ ## Use automake (add automake to autogen.sh) -am__api_version='1.11' +am__api_version='1.16' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do @@ -2323,7 +2354,7 @@ # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -2381,9 +2412,6 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -2394,32 +2422,40 @@ esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac -# Do `set' in a subshell so we don't clobber the current shell's +# Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done test "$2" = conftest.file ) then @@ -2431,6 +2467,16 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. @@ -2441,8 +2487,8 @@ ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in @@ -2453,15 +2499,15 @@ esac fi # Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi -if test x"${install_sh}" != xset; then +if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -2470,10 +2516,10 @@ esac fi -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. +# will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. @@ -2492,7 +2538,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2532,7 +2578,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2583,7 +2629,7 @@ test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ @@ -2612,12 +2658,6 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -2636,7 +2676,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2700,6 +2740,45 @@ fi rmdir .tst 2>/dev/null +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." @@ -2722,7 +2801,7 @@ # Define the identity of the package. PACKAGE='uget' - VERSION='2.0.2' + VERSION='2.2.2' cat >>confdefs.h <<_ACEOF @@ -2750,12 +2829,22 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' @@ -2763,6 +2852,49 @@ +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + ## --- Use config.h (autogen.sh add autoheader) ac_config_headers="$ac_config_headers config.h" @@ -2790,7 +2922,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2830,7 +2962,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2883,7 +3015,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2924,7 +3056,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -2982,7 +3114,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3026,7 +3158,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3472,8 +3604,7 @@ /* end confdefs.h. */ #include #include -#include -#include +struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -3557,49 +3688,108 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" - -am_make=${MAKE-make} -cat > confinc << 'END' +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' am__doit: - @echo this is the am__doit target + @echo this is the am__doit target >confinc.out .PHONY: am__doit END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +$as_echo "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : @@ -3632,8 +3822,8 @@ # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -3668,16 +3858,16 @@ : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -3686,8 +3876,8 @@ test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else @@ -3695,7 +3885,7 @@ fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -3751,131 +3941,6 @@ ## --- Check C compiler -c -o options. -if test "x$CC" != xcc; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 -$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 -$as_echo_n "checking whether cc understands -c and -o together... " >&6; } -fi -set dummy $CC; ac_cc=`$as_echo "$2" | - sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -# Make sure it works both with $CC and with simple cc. -# We do the test twice because some compilers refuse to overwrite an -# existing .o file with -o, though they will create one. -ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -rm -f conftest2.* -if { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && - test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; -then - eval ac_cv_prog_cc_${ac_cc}_c_o=yes - if test "x$CC" != xcc; then - # Test first that cc exists at all. - if { ac_try='cc -c conftest.$ac_ext >&5' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' - rm -f conftest2.* - if { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && - test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; - then - # cc works too. - : - else - # cc exists but doesn't like -o. - eval ac_cv_prog_cc_${ac_cc}_c_o=no - fi - fi - fi -else - eval ac_cv_prog_cc_${ac_cc}_c_o=no -fi -rm -f core conftest* - -fi -if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h - -fi - -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi - ## --- Determine a C++ compiler to use. @@ -3902,7 +3967,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3946,7 +4011,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3990,7 +4055,13 @@ if ${am_cv_ar_interface+:} false; then : $as_echo_n "(cached) " >&6 else - am_cv_ar_interface=ar + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + am_cv_ar_interface=ar cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int some_variable = 0; @@ -4021,6 +4092,11 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 @@ -4062,7 +4138,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4102,7 +4178,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4138,6 +4214,32 @@ fi +## --- Check function posix_fallocate() +for ac_func in posix_fallocate +do : + ac_fn_c_check_func "$LINENO" "posix_fallocate" "ac_cv_func_posix_fallocate" +if test "x$ac_cv_func_posix_fallocate" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_POSIX_FALLOCATE 1 +_ACEOF + +fi +done + + +## --- Check function ftruncate() +for ac_func in ftruncate +do : + ac_fn_c_check_func "$LINENO" "ftruncate" "ac_cv_func_ftruncate" +if test "x$ac_cv_func_ftruncate" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_FTRUNCATE 1 +_ACEOF + +fi +done + + ## ---------------------------------------------- ## L10N (add intltoolize to autogen.sh) @@ -4194,7 +4296,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_UPDATE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4234,7 +4336,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_MERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4274,7 +4376,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_EXTRACT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4458,7 +4560,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4498,7 +4600,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4538,7 +4640,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4578,7 +4680,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4629,7 +4731,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4678,44 +4780,6 @@ # Substitute ALL_LINGUAS so we can use it in po/Makefile -# Set DATADIRNAME correctly if it is not set yet -# (copied from glib-gettext.m4) -if test -z "$DATADIRNAME"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -extern int _nl_msg_cat_cntr; - return _nl_msg_cat_cntr - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - DATADIRNAME=share -else - case $host in - *-*-solaris*) - ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" -if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : - DATADIRNAME=share -else - DATADIRNAME=lib -fi - - ;; - *) - DATADIRNAME=lib - ;; - esac -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi - - @@ -4877,7 +4941,7 @@ for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in @@ -4943,7 +5007,7 @@ for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in @@ -5175,6 +5239,82 @@ XGETTEXT=: INTLLIBS= + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } +if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } +if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFLocaleCopyCurrent=yes +else + gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" if test "x$ac_cv_header_libintl_h" = xyes; then : gt_cv_func_dgettext_libintl="no" @@ -5515,7 +5655,7 @@ fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then - INTLLIBS="-lintl $libintl_extra_libs" + INTLLIBS="-lintl $libintl_extra_libs $INTL_MACOSX_LIBS" fi if test "$gt_cv_have_gettext" = "yes"; then @@ -5618,7 +5758,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5879,7 +6019,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5922,7 +6062,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6249,7 +6389,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GETCONF="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6298,7 +6438,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CURL_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6378,7 +6518,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_LIBGCRYPT_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6998,12 +7138,12 @@ pkg_cv_LIBPWMD_CFLAGS="$LIBPWMD_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpwmd-7.0 >= 7.0.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libpwmd-7.0 >= 7.0.0") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpwmd-8.0 >= 8.3.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libpwmd-8.0 >= 8.3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_LIBPWMD_CFLAGS=`$PKG_CONFIG --cflags "libpwmd-7.0 >= 7.0.0" 2>/dev/null` + pkg_cv_LIBPWMD_CFLAGS=`$PKG_CONFIG --cflags "libpwmd-8.0 >= 8.3.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -7015,12 +7155,12 @@ pkg_cv_LIBPWMD_LIBS="$LIBPWMD_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpwmd-7.0 >= 7.0.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libpwmd-7.0 >= 7.0.0") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpwmd-8.0 >= 8.3.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libpwmd-8.0 >= 8.3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_LIBPWMD_LIBS=`$PKG_CONFIG --libs "libpwmd-7.0 >= 7.0.0" 2>/dev/null` + pkg_cv_LIBPWMD_LIBS=`$PKG_CONFIG --libs "libpwmd-8.0 >= 8.3.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -7041,14 +7181,14 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - LIBPWMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpwmd-7.0 >= 7.0.0" 2>&1` + LIBPWMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpwmd-8.0 >= 8.3.0" 2>&1` else - LIBPWMD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpwmd-7.0 >= 7.0.0" 2>&1` + LIBPWMD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpwmd-8.0 >= 8.3.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBPWMD_PKG_ERRORS" >&5 - as_fn_error $? "Package requirements (libpwmd-7.0 >= 7.0.0) were not met: + as_fn_error $? "Package requirements (libpwmd-8.0 >= 8.3.0) were not met: $LIBPWMD_PKG_ERRORS @@ -7093,6 +7233,38 @@ fi +## ----------------- +## RSS Notify +# Check whether --enable-rss-notify was given. +if test "${enable_rss_notify+set}" = set; then : + enableval=$enable_rss_notify; enable_rss_notify="$enableval" +else + enable_rss_notify="yes" + +fi + +if test "x$enable_rss_notify" = "xyes"; then + +$as_echo "#define HAVE_RSS_NOTIFY 1" >>confdefs.h + +fi + +## ----------------- +## UNIX Domain Socket +# Check whether --enable-unix-socket was given. +if test "${enable_unix_socket+set}" = set; then : + enableval=$enable_unix_socket; enable_unix_socket="$enableval" +else + enable_unix_socket="no" + +fi + +if test "x$enable_unix_socket" = "xyes"; then + +$as_echo "#define USE_UNIX_DOMAIN_SOCKET 1" >>confdefs.h + +fi + ## ---------------------------------------------- ## output ac_config_files="$ac_config_files Makefile doc/Makefile tests/Makefile uget/Makefile uglib/Makefile ui-gtk/Makefile ui-gtk-1to2/Makefile pixmaps/Makefile sounds/Makefile po/Makefile.in Windows/Makefile" @@ -7207,6 +7379,14 @@ LTLIBOBJS=$ac_ltlibobjs +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -7529,16 +7709,16 @@ # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' + as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -7598,28 +7778,16 @@ as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -7640,8 +7808,8 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by uget $as_me 2.0.2, which was -generated by GNU Autoconf 2.68. Invocation command line was +This file was extended by uget $as_me 2.2.2, which was +generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -7706,11 +7874,11 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -uget config.status 2.0.2 -configured by $0, generated by GNU Autoconf 2.68, +uget config.status 2.2.2 +configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" -Copyright (C) 2010 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -7801,7 +7969,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' @@ -7825,7 +7993,7 @@ # # INIT-COMMANDS # -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" _ACEOF @@ -8447,32 +8615,38 @@ case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files + # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac shift - for mf + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf do # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -8490,55 +8664,48 @@ q } s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } - /^X\(\/\/\)$/{ + /^X\/\(\/\/\)$/{ s//\1/ q } - /^X\(\/\).*/{ + /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk } ;; "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*) diff -Nru uget-2.0.2/configure.ac uget-2.2.2/configure.ac --- uget-2.0.2/configure.ac 2015-09-11 12:12:53.000000000 +0000 +++ uget-2.2.2/configure.ac 2019-05-19 16:50:00.000000000 +0000 @@ -1,4 +1,4 @@ -AC_INIT(uget, 2.0.2) +AC_INIT(uget, 2.2.2) ## Use automake (add automake to autogen.sh) AM_INIT_AUTOMAKE @@ -21,6 +21,12 @@ ## Use library (static library) AC_PROG_RANLIB +## --- Check function posix_fallocate() +AC_CHECK_FUNCS([posix_fallocate]) + +## --- Check function ftruncate() +AC_CHECK_FUNCS([ftruncate]) + ## ---------------------------------------------- ## L10N (add intltoolize to autogen.sh) AC_PROG_INTLTOOL @@ -210,11 +216,35 @@ [enable_pwmd="no"] ) if test "x$enable_pwmd" = "xyes"; then - PKG_CHECK_MODULES(LIBPWMD, [libpwmd-7.0 >= 7.0.0]) + PKG_CHECK_MODULES(LIBPWMD, [libpwmd-8.0 >= 8.3.0]) AC_DEFINE(HAVE_LIBPWMD, 1, [Define to 1 if libpwmd support is required.]) fi AM_CONDITIONAL([WITH_LIBPWMD], [test "x$enable_pwmd" = "xyes"]) +## ----------------- +## RSS Notify +AC_ARG_ENABLE( + [rss-notify], + AC_HELP_STRING([--disable-rss-notify], [Disable RSS Notify.]), + [enable_rss_notify="$enableval"], + [enable_rss_notify="yes"] +) +if test "x$enable_rss_notify" = "xyes"; then + AC_DEFINE(HAVE_RSS_NOTIFY, 1, [Define to 1 to enable RSS Notify.]) +fi + +## ----------------- +## UNIX Domain Socket +AC_ARG_ENABLE( + [unix-socket], + AC_HELP_STRING([--enable-unix-socket], [Enable UNIX Domain Socket.]), + [enable_unix_socket="$enableval"], + [enable_unix_socket="no"] +) +if test "x$enable_unix_socket" = "xyes"; then + AC_DEFINE(USE_UNIX_DOMAIN_SOCKET, 1, [Define to 1 to use UNIX Domain Socket.]) +fi + ## ---------------------------------------------- ## output AC_CONFIG_FILES([ diff -Nru uget-2.0.2/COPYING uget-2.2.2/COPYING --- uget-2.0.2/COPYING 2012-04-02 17:37:09.000000000 +0000 +++ uget-2.2.2/COPYING 2019-05-19 16:49:05.000000000 +0000 @@ -1,674 +1,504 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. - + Copyright (C) - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see . + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff -Nru uget-2.0.2/debian/changelog uget-2.2.2/debian/changelog --- uget-2.0.2/debian/changelog 2015-12-03 04:22:39.000000000 +0000 +++ uget-2.2.2/debian/changelog 2019-11-17 19:07:35.000000000 +0000 @@ -1,9 +1,90 @@ -uget (2.0.2-1ubuntu1) xenial; urgency=medium +uget (2.2.2-1ppa1~xenial1) xenial; urgency=medium - * Resync with Debian. Remaining change: - + Build-depend on libappindicator3-dev on Ubuntu. + * Automated backport upload; no source changes. - -- Bhavani Shankar Wed, 02 Dec 2015 23:10:40 -0500 + -- Alexander Pozdnyakov Sun, 17 Nov 2019 22:07:35 +0300 + +uget (2.2.2-1) unstable; urgency=medium + + * New upstream release + + -- Alexander Pozdnyakov Tue, 11 Jun 2019 21:03:20 +0300 + +uget (2.2.1-1+nmu2) unstable; urgency=medium + + * Rebuild + + -- Alexander Pozdnyakov Fri, 21 Dec 2018 22:01:26 +0300 + +uget (2.2.1-1+nmu1) unstable; urgency=medium + + * Non-maintainer upload. + * Backports from Sid + + -- Alexander Pozdnyakov Sun, 06 May 2018 21:46:04 +0300 + +uget (2.2.1-1) unstable; urgency=medium + + * New upstream release + + -- Elías Alejandro Año Mendoza Fri, 16 Mar 2018 13:10:09 -0300 + +uget (2.2.0-1) unstable; urgency=medium + + * New upstream release + * Updated Standard-Version to 4.1.3 + * Bump debhelper to 11 + * Disable 06_fix_spelling_error.patch: upstream already has considered + * Add lintian override for desktop-command-not-in-package + * debian/patches: removed + * debian/copyright: Updated year + + -- Elías Alejandro Año Mendoza Tue, 16 Jan 2018 09:59:02 -0500 + +uget (2.0.10-1) unstable; urgency=medium + + * New upstream release. Closes:#873870 + * Updated Standard-Version to 4.1.0 + * Add 06_fix_spelling_error.patch: fixing spelling errors in source code + * debian/rules: adding upstream changelog + * debian/control: Updated Vcs-Git with https + * debian/watch: Updated to version 4 + * debian/copyright: Updated year + + -- Elías Alejandro Año Mendoza Sat, 02 Sep 2017 08:25:46 -0300 + +uget (2.0.8-1) unstable; urgency=medium + + * New upstream release + * Updated Standard-Version to 3.9.8 + + -- Elías Alejandro Año Mendoza Sun, 28 Aug 2016 13:28:13 -0300 + +uget (2.0.7-1) unstable; urgency=medium + + * New upstream release + * Remove 04-keywords-desktop-file.patch: upstream already has considered + * Remove 05_ignore_build_potfiles.patch: upstream already has considered + + -- Elías Alejandro Año Mendoza Sun, 24 Apr 2016 20:18:52 -0500 + +uget (2.0.6-1) unstable; urgency=medium + + * New upstream release + * Updated Standard-Version to 3.9.7 + * Add 05_ignore_build_potfiles.patch: ignore missing files + * Remove 03-uglib_missing_potfile.patch: upstream already has considered + * gitignore file: added debian/.pot + + -- Elías Alejandro Año Mendoza Mon, 04 Apr 2016 18:41:00 -0500 + +uget (2.0.4-1) unstable; urgency=medium + + * New upstream release + * debian/menu: Removed menu file from package + * Updated year in debian/copyright + + -- Elías Alejandro Año Mendoza Mon, 25 Jan 2016 21:16:08 -0500 uget (2.0.2-1) unstable; urgency=low @@ -32,7 +113,7 @@ * New upstream release. Closes: #735937 * Updated Standard-Version to 3.9.5 * Added 03-uglib_missing_potfile.patch: Avoid missing translate file - * Updated debian/control canonicalize VCS-* fields + * Updated debian/control canonicalize VCS-* fields * Updated year in debian/copyright -- Elías Alejandro Año Mendoza Sat, 25 Jan 2014 21:29:41 -0500 diff -Nru uget-2.0.2/debian/control uget-2.2.2/debian/control --- uget-2.0.2/debian/control 2015-12-03 04:13:06.000000000 +0000 +++ uget-2.2.2/debian/control 2019-06-11 18:03:20.000000000 +0000 @@ -1,22 +1,16 @@ Source: uget Section: net Priority: optional -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Elías Alejandro Año Mendoza +Maintainer: Alexander Pozdnyakov Build-Depends: debhelper (>= 9), intltool, - dh-autoreconf, libnotify-dev, libgstreamer1.0-dev, - autotools-dev, libgtk-3-dev, libssl-dev, - libcurl4-openssl-dev, - libappindicator3-dev -Standards-Version: 3.9.6 + libcurl4-openssl-dev +Standards-Version: 4.3.0 Homepage: http://urlget.sourceforge.net/ -Vcs-Git: git://anonscm.debian.org/collab-maint/uget.git -Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/uget.git Package: uget Architecture: any diff -Nru uget-2.0.2/debian/copyright uget-2.2.2/debian/copyright --- uget-2.0.2/debian/copyright 2015-10-05 00:18:49.000000000 +0000 +++ uget-2.2.2/debian/copyright 2019-06-11 18:03:20.000000000 +0000 @@ -1,20 +1,20 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: uget Upstream-Contact: C.H. Huang Source: http://sourceforge.net/projects/urlget/files/ Files: * -Copyright: 2005-2015 C.H. Huang +Copyright: 2005-2018 C.H. Huang License: LGPL-2.1+ Files: uget/pwmd.c uget/pwmd.h -Copyright: 2011 Ben Kibbey +Copyright: 2011-2016 Ben Kibbey License: GPL-2+ Files: debian/* Copyright: - 2011-2015 Elías Alejandro Año Mendoza + 2011-2018 Elías Alejandro Año Mendoza 2011, Alessio Treglia 2011, Dennis Craven License: LGPL-2.1+ diff -Nru uget-2.0.2/debian/menu uget-2.2.2/debian/menu --- uget-2.0.2/debian/menu 2015-10-05 00:18:49.000000000 +0000 +++ uget-2.2.2/debian/menu 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -?package(uget):\ - needs="X11"\ - section="Applications/Network/File Transfer"\ - title="Uget"\ - icon="/usr/share/pixmaps/uget.xpm"\ - command="/usr/bin/uget-gtk" diff -Nru uget-2.0.2/debian/patches/01-natty_ftbfs.patch uget-2.2.2/debian/patches/01-natty_ftbfs.patch --- uget-2.0.2/debian/patches/01-natty_ftbfs.patch 2015-10-05 00:18:49.000000000 +0000 +++ uget-2.2.2/debian/patches/01-natty_ftbfs.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -Description: Correct linking order to prevent FTBFS with newest toolchain. -Author: Alessio Treglia -Forwarded: no ---- - Makefile.am | 1 - - configure.ac | 3 ++- - uget-cmd/Makefile.am | 5 +++-- - uget-gtk/Makefile.am | 5 +++-- - 4 files changed, 8 insertions(+), 6 deletions(-) - ---- uget.orig/uget-gtk/Makefile.am -+++ uget/uget-gtk/Makefile.am -@@ -5,8 +5,9 @@ FOR_GTK3_CFLAGS = -DGDK_DISABLE_DEPRECAT - # set the include path found by configure - uget_gtk_CPPFLAGS = -DDATADIR='"$(datadir)"' -I$(top_srcdir)/uglib -I$(top_srcdir)/uget-gtk $(FOR_GTK3_CFLAGS) - uget_gtk_CFLAGS = @LFS_CFLAGS@ @GTK_CFLAGS@ @GIO_CFLAGS@ @GTHREAD_CFLAGS@ @CURL_CFLAGS@ @LIBNOTIFY_CFLAGS@ @GSTREAMER_CFLAGS@ @LIBPWMD_CFLAGS@ --uget_gtk_LDFLAGS = @LFS_LDFLAGS@ @GTK_LIBS@ @GIO_LIBS@ @GTHREAD_LIBS@ @CURL_LIBS@ @LIBNOTIFY_LIBS@ @GSTREAMER_LIBS@ @LIBPWMD_LIBS@ --uget_gtk_LDADD = $(top_builddir)/uglib/libuglib.a -+uget_gtk_LDFLAGS = @LDFLAGS@ -+uget_gtk_LDADD = $(top_builddir)/uglib/libuglib.a \ -+ @LFS_LDFLAGS@ @GTK_LIBS@ @GIO_LIBS@ @GTHREAD_LIBS@ @CURL_LIBS@ @LIBNOTIFY_LIBS@ @GSTREAMER_LIBS@ @LIBPWMD_LIBS@ - - uget_gtk_SOURCES = \ - UgSelector.c UgSummary.c UgSettingForm.c \ ---- uget.orig/uget-cmd/Makefile.am -+++ uget/uget-cmd/Makefile.am -@@ -3,8 +3,9 @@ noinst_PROGRAMS = uget-cmd - # set the include path found by configure - uget_cmd_CPPFLAGS = -DDATADIR='"$(datadir)"' -I$(top_srcdir)/uglib -I$(top_srcdir)/uget-cmd - uget_cmd_CFLAGS = @LFS_CFLAGS@ @GIO_CFLAGS@ @GTHREAD_CFLAGS@ @CURL_CFLAGS@ @GSTREAMER_CFLAGS@ @LIBPWMD_CFLAGS@ --uget_cmd_LDFLAGS = @LFS_LDFLAGS@ @GIO_LIBS@ @GTHREAD_LIBS@ @CURL_LIBS@ @GSTREAMER_LIBS@ @LIBPWMD_LIBS@ --uget_cmd_LDADD = $(top_builddir)/uglib/libuglib.a -+uget_cmd_LDFLAGS = @LDFLAGS@ -+uget_cmd_LDADD = $(top_builddir)/uglib/libuglib.a \ -+ @LFS_LDFLAGS@ @GIO_LIBS@ @GTHREAD_LIBS@ @CURL_LIBS@ @GSTREAMER_LIBS@ @LIBPWMD_LIBS@ - - uget_cmd_SOURCES = \ - UgCategory-cmd.c \ ---- uget.orig/Makefile.am -+++ uget/Makefile.am -@@ -3,7 +3,6 @@ SUBDIRS = \ - uglib \ - uget-gtk \ - uget-cmd \ -- tests \ - pixmaps \ - sounds \ - po \ ---- uget.orig/configure.ac -+++ uget/configure.ac -@@ -36,7 +36,8 @@ AM_GLIB_GNU_GETTEXT - AM_GLIB_DEFINE_LOCALEDIR(LOCALEDIR) - ## Use AM_GLIB_DEFINE_LOCALEDIR with AC_CONFIG_HEADERS - -- -+LDFLAGS="$LDFLAGS" -+AC_SUBST(LDFLAGS) - ## ---------------------------------------------- - ## checks for requirements. - PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.18) diff -Nru uget-2.0.2/debian/patches/02-potfiles_missing.patch uget-2.2.2/debian/patches/02-potfiles_missing.patch --- uget-2.0.2/debian/patches/02-potfiles_missing.patch 2015-10-05 00:18:49.000000000 +0000 +++ uget-2.2.2/debian/patches/02-potfiles_missing.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -Description: Add missing file contain translation to the POTFILES.in file - Put string "uglib/UgPlugin-aria2.c" in po/POTFILES.in - -Forwarded: not-needed -Author: Elías Alejandro Año Mendoza -Last-Update: 2011-06-09 - ---- uget.orig/po/POTFILES.in 2011-06-09 17:35:17.000000000 -0500 -+++ uget/po/POTFILES.in 2011-06-09 17:36:36.000000000 -0500 -@@ -9,6 +9,7 @@ - uglib/UgMessage.c - uglib/UgOption.c - uglib/UgPlugin.c -+uglib/UgPlugin-aria2.c - uglib/UgPlugin-curl.c - uglib/UgRegistry.c - uglib/UgRunning.c diff -Nru uget-2.0.2/debian/patches/03-uglib_missing_potfile.patch uget-2.2.2/debian/patches/03-uglib_missing_potfile.patch --- uget-2.0.2/debian/patches/03-uglib_missing_potfile.patch 2015-10-05 02:12:21.000000000 +0000 +++ uget-2.2.2/debian/patches/03-uglib_missing_potfile.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -Description: Add missing file contain translation to the POTFILES.in file - Put string "uget/pwmd.c" in po/POTFILES.in - -Forwarded: not-needed -Author: Elías Alejandro Año Mendoza -Last-Update: 2015-10-04 - ---- uget.orig/po/POTFILES.in -+++ uget/po/POTFILES.in -@@ -2,6 +2,7 @@ uget/pwmd.c - uget/UgetApp.c - uget/UgetEvent.c - uget/UgetPluginAria2.c -+uget/pwmd.c - ui-gtk/UgtkAboutDialog.c - ui-gtk/UgtkApp-main.c - ui-gtk/UgtkApp-timeout.c diff -Nru uget-2.0.2/debian/patches/04-keywords-desktop-file.patch uget-2.2.2/debian/patches/04-keywords-desktop-file.patch --- uget-2.0.2/debian/patches/04-keywords-desktop-file.patch 2015-10-05 00:18:49.000000000 +0000 +++ uget-2.2.2/debian/patches/04-keywords-desktop-file.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -Description: Add Keywords entry into desktop file - Adding Keywords entry to facilitate searching through entries - -Forwarded: not-needed -Author: Elías Alejandro Año Mendoza -Last-Update: 2015-08-09 - ---- uget.orig/uget-gtk.desktop -+++ uget/uget-gtk.desktop -@@ -6,4 +6,4 @@ Icon=uget-icon - Terminal=false - Type=Application - Categories=Network;FileTransfer; -- -+Keywords=filetransfer;download files;download manager; diff -Nru uget-2.0.2/debian/patches/series uget-2.2.2/debian/patches/series --- uget-2.0.2/debian/patches/series 2015-10-05 01:07:49.000000000 +0000 +++ uget-2.2.2/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -03-uglib_missing_potfile.patch -04-keywords-desktop-file.patch diff -Nru uget-2.0.2/debian/rules uget-2.2.2/debian/rules --- uget-2.0.2/debian/rules 2015-10-05 02:12:21.000000000 +0000 +++ uget-2.2.2/debian/rules 2019-06-11 18:03:20.000000000 +0000 @@ -3,7 +3,10 @@ export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed %: - dh $@ --with autoreconf + dh $@ + +override_dh_installchangelogs: + dh_installchangelogs README override_dh_auto_install: dh_auto_install -- DESTDIR=$(CURDIR)/debian/uget diff -Nru uget-2.0.2/debian/uget.lintian-overrides uget-2.2.2/debian/uget.lintian-overrides --- uget-2.0.2/debian/uget.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/debian/uget.lintian-overrides 2019-06-11 18:03:20.000000000 +0000 @@ -0,0 +1,2 @@ +# env is used to set the environment variable for /usr/bin/uget-gtk +uget binary: desktop-command-not-in-package usr/share/applications/uget-gtk.desktop env diff -Nru uget-2.0.2/debian/watch uget-2.2.2/debian/watch --- uget-2.0.2/debian/watch 2015-10-05 00:18:49.000000000 +0000 +++ uget-2.2.2/debian/watch 2019-06-11 18:03:20.000000000 +0000 @@ -1,3 +1,3 @@ -version=3 +version=4 -http://sf.net/urlget/uget-([0-9].+)\.(?:tar\.gz) +http://sf.net/urlget/ .*stable.*/uget-([\d.]+)\.tar\.(?:bz2|gz|xz) diff -Nru uget-2.0.2/depcomp uget-2.2.2/depcomp --- uget-2.0.2/depcomp 2012-04-02 17:37:09.000000000 +0000 +++ uget-2.2.2/depcomp 2018-03-08 20:15:51.000000000 +0000 @@ -1,10 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2011-12-04.11; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, -# 2011 Free Software Foundation, Inc. +# Copyright (C) 1999-2018 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,7 +16,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -28,9 +27,9 @@ case $1 in '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] @@ -40,8 +39,8 @@ Environment variables: depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. @@ -57,6 +56,66 @@ ;; esac +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 @@ -69,6 +128,9 @@ rm -f "$tmpdepfile" +# Avoid interferences from the environment. +gccflag= dashmflag= + # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case @@ -80,26 +142,32 @@ fi if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc fi case "$depmode" in @@ -122,8 +190,7 @@ done "$@" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -131,13 +198,17 @@ ;; gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then @@ -145,33 +216,31 @@ fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. + # The second -e expression handles DOS-style file names with drive + # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. +## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory +## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -189,8 +258,7 @@ "$@" -MDupdate "$tmpdepfile" fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -198,43 +266,41 @@ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" - # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the + # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" ;; +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the + # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u @@ -247,9 +313,7 @@ "$@" -M fi stat=$? - - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi @@ -258,44 +322,100 @@ do test -f "$tmpdepfile" && break done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : + # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -307,8 +427,8 @@ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -319,9 +439,8 @@ # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d @@ -332,8 +451,7 @@ "$@" +Maked fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi @@ -343,77 +461,61 @@ test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" else - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; msvc7) if test "$libtool" = yes; then @@ -424,8 +526,7 @@ "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" - if test "$stat" = 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -443,14 +544,15 @@ p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g -s/\(.*\)/ \1 \\/p +s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { - s/.*/ / + s/.*/'"$tab"'/ G p }' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; @@ -478,7 +580,7 @@ shift fi - # Remove `-o $object'. + # Remove '-o $object'. IFS=" " for arg do @@ -498,18 +600,18 @@ done test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' + # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -562,11 +664,12 @@ # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; @@ -583,7 +686,7 @@ shift fi - # Remove `-o $object'. + # Remove '-o $object'. IFS=" " for arg do @@ -602,10 +705,10 @@ esac done - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" @@ -637,23 +740,23 @@ shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; + set fnord "$@" + shift + shift + ;; *) - set fnord "$@" "$arg" - shift - shift - ;; + set fnord "$@" "$arg" + shift + shift + ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -680,9 +783,9 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -Nru uget-2.0.2/doc/Makefile.am uget-2.2.2/doc/Makefile.am --- uget-2.0.2/doc/Makefile.am 2015-04-30 23:37:53.000000000 +0000 +++ uget-2.2.2/doc/Makefile.am 2019-05-19 16:49:05.000000000 +0000 @@ -1,5 +1,6 @@ EXTRA_DIST = \ uget.txt \ folders.txt \ - JSON-RPC_interface.txt + JSON-RPC_interface.txt \ + To_build_uGet_in_MinGW.txt diff -Nru uget-2.0.2/doc/Makefile.in uget-2.2.2/doc/Makefile.in --- uget-2.0.2/doc/Makefile.in 2015-09-11 12:13:20.000000000 +0000 +++ uget-2.2.2/doc/Makefile.in 2019-05-19 16:51:34.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -15,6 +14,61 @@ @SET_MAKE@ VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -32,17 +86,36 @@ PRE_UNINSTALL = : POST_UNINSTALL = : subdir = doc -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -100,6 +173,7 @@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LFS_CFLAGS = @LFS_CFLAGS@ LFS_LDFLAGS = @LFS_LDFLAGS@ @@ -194,7 +268,8 @@ EXTRA_DIST = \ uget.txt \ folders.txt \ - JSON-RPC_interface.txt + JSON-RPC_interface.txt \ + To_build_uGet_in_MinGW.txt all: all-am @@ -211,14 +286,13 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -229,14 +303,17 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): -tags: TAGS -TAGS: +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -368,15 +445,18 @@ .MAKE: install-am install-strip -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am +.PHONY: all all-am check check-am clean clean-generic cscopelist-am \ + ctags-am distclean distclean-generic distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags-am uninstall uninstall-am + +.PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru uget-2.0.2/doc/To_build_uGet_in_MinGW.txt uget-2.2.2/doc/To_build_uGet_in_MinGW.txt --- uget-2.0.2/doc/To_build_uGet_in_MinGW.txt 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/doc/To_build_uGet_in_MinGW.txt 2019-05-19 16:49:05.000000000 +0000 @@ -0,0 +1,20 @@ +To build uGet in MinGW environment + +# ------------ Install packages -------------- +# toolchain +pacman -S mingw-w64-i686-binutils mingw-w64-i686-gcc mingw-w64-i686-gdb + +# make and Autotools +pacman -S make pkgconfig autoconf automake libtool intltool + +# gtk familiy +pacman -S mingw-w64-i686-gtk3 + +# curl +pacman -S mingw-w64-i686-curl + +# ------------ Build uGet -------------- +. autogen.sh +./configure --disable-notify --disable-gstreamer _WINDOWS=1 NDEBUG=1 +make + diff -Nru uget-2.0.2/doc/uget.txt uget-2.2.2/doc/uget.txt --- uget-2.0.2/doc/uget.txt 2014-05-06 07:39:43.000000000 +0000 +++ uget-2.2.2/doc/uget.txt 2019-05-19 16:49:05.000000000 +0000 @@ -1,48 +1,47 @@ UgNode | - `- UgetNode (Root, Category, Download, File) + `-- UgetNode (Root, Category, Download, File) ------------------------------------------------------------------------------- UgetNode Tree chart: - Root -+- Category1 -+- Download1 (URI) -+- File - | | | - | | + X cookie or post file (attachment) - | | - | +- Download2 (URI) -+- File1 - | | (torrent path) | - | | +- File2 - | | | - | | +- torrent file (attachment) - | | - | +- Download3 (URI) -+- File - | (metalink path) | - | +- metalink file (attachment) - +-- Category2 + Root --+-- Category1 --+-- Download1 (URI) + | | + | | + | | + | `-- Download2 (URI) + | (torrent path) + | + | + `-- Category2 --+-- Download3 (URI) + | (metalink path) + | + | + `-- Download4 (URI) ------------------------------------------------------------------------------- UgetNode Tree chart for "All Category" Real node and Fake node: - Real Fake L1 Fake L2 + Real Fake L1 Fake L2 - Category0 -+ - Category1 -+--> all ------+--> all active - Category2 -+ +--> all queuing - +--> all finished - +--> all recycled + Category0 --+ + Category1 --+--> all ------+--> all active + Category2 --+ +--> all queuing + +--> all finished + `--> all recycled ------------------------------------------------------------------------------- UgetNode Tree chart for "All Status" Real node and Fake node: - Real Fake + Real Fake - Category -+--> active - +--> queuing - +--> finished - +--> recycled - | - +--> sorted + Category --+--> active + +--> queuing + +--> finished + +--> recycled + | + `--> sorted ------------------------------------------------------------------------------- @@ -50,29 +49,30 @@ Category-Home.json { - "name": "Home", "info": { - "common": {}, + "category": {}, + "common": { + "name": "Home" + }, "proxy": {}, "http": {}, "ftp": {} }, "children": [ { - "name": "download-file1", - "info": { - "common": {}, - "proxy": {}, - "http": {}, - "ftp": {} - }, - "children": [ - ] - }, - { - "name": "download-file2", "info": { - "common": {}, + "common": { + "name": "download-file1", + "file": "download-file1.torrent" + }, + "files": { + "collection" : [ + { + "name": "download-file1.zip", + "type": 0 + } + ] + } "proxy": {}, "http": {}, "ftp": {} @@ -81,9 +81,11 @@ ] }, { - "name": "download-file3", "info": { - "common": {}, + "common": { + "name": "download-file3", + "file": "download-file3.7z" + }, "proxy": {}, "http": {}, "ftp": {} diff -Nru uget-2.0.2/INSTALL uget-2.2.2/INSTALL --- uget-2.0.2/INSTALL 2012-04-02 17:37:09.000000000 +0000 +++ uget-2.2.2/INSTALL 2018-02-26 20:38:27.000000000 +0000 @@ -1,8 +1,8 @@ Installation Instructions ************************* -Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation, -Inc. + Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software +Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -12,97 +12,96 @@ Basic Installation ================== - Briefly, the shell commands `./configure; make; make install' should -configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for + Briefly, the shell command './configure && make && make install' +should configure, build, and install this package. The following +more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this -`INSTALL' file but do not implement all of the features documented +'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. - The `configure' shell script attempts to guess correct values for + The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that +those values to create a 'Makefile' in each directory of the package. +It may also create one or more '.h' files containing system-dependent +definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). +file 'config.log' containing compiler output (useful mainly for +debugging 'configure'). - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. + It can also use an optional file (typically called 'config.cache' and +enabled with '--cache-file=config.cache' or simply '-C') that saves the +results of its tests to speed up reconfiguring. Caching is disabled by +default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can +to figure out how 'configure' could check whether to do them, and mail +diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you +some point 'config.cache' contains results you don't want to keep, you may remove or edit it. - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. + The file 'configure.ac' (or 'configure.in') is used to create +'configure' by a program called 'autoconf'. You need 'configure.ac' if +you want to change it or regenerate 'configure' using a newer version of +'autoconf'. The simplest way to compile this package is: - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. + 1. 'cd' to the directory containing the package's source code and type + './configure' to configure the package for your system. - Running `configure' might take a while. While running, it prints + Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. - 2. Type `make' to compile the package. + 2. Type 'make' to compile the package. - 3. Optionally, type `make check' to run any self-tests that come with + 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. - 4. Type `make install' to install the programs and any data files and + 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular - user, and only the `make install' phase executed with root + user, and only the 'make install' phase executed with root privileges. - 5. Optionally, type `make installcheck' to repeat any self-tests, but + 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a - regular user, particularly if the prior `make install' required + regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly + source code directory by typing 'make clean'. To also remove the + files that 'configure' created (so you can compile the package for + a different kind of computer), type 'make distclean'. There is + also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. - 7. Often, you can also type `make uninstall' to remove the installed + 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. - 8. Some packages, particularly those that use Automake, provide `make + 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other - targets like `make install' and `make uninstall' work correctly. + targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' +the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: + You can give 'configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here is +an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix @@ -113,21 +112,21 @@ You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the +own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. This -is known as a "VPATH" build. +the 'configure' script. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. This is known +as a "VPATH" build. - With a non-GNU `make', it is safer to compile the package for one + With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before +installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or -"universal" binaries--by specifying multiple `-arch' options to the -compiler but only a single `-arch' option to the preprocessor. Like +"universal" binaries--by specifying multiple '-arch' options to the +compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ @@ -136,105 +135,104 @@ This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results -using the `lipo' tool if you have problems. +using the 'lipo' tool if you have problems. Installation Names ================== - By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX', where PREFIX must be an + By default, 'make install' installs the package's commands under +'/usr/local/bin', include files under '/usr/local/include', etc. You +can specify an installation prefix other than '/usr/local' by giving +'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses +pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. In general, the -default for these options is expressed in terms of `${prefix}', so that -specifying just `--prefix' will affect all of the other directory +options like '--bindir=DIR' to specify different values for particular +kinds of files. Run 'configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the default +for these options is expressed in terms of '${prefix}', so that +specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the -correct locations to `configure'; however, many packages provide one or +correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the -`make install' command line to change installation locations without +'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each -affected directory. For example, `make install +affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of -`${prefix}'. Any directories that were specified during `configure', -but not in terms of `${prefix}', must each be overridden at install -time for the entire installation to be relocated. The approach of -makefile variable overrides for each directory variable is required by -the GNU Coding Standards, and ideally causes no recompilation. -However, some platforms have known limitations with the semantics of -shared libraries that end up requiring recompilation when using this -method, particularly noticeable in packages that use GNU Libtool. - - The second method involves providing the `DESTDIR' variable. For -example, `make install DESTDIR=/alternate/directory' will prepend -`/alternate/directory' before all installation names. The approach of -`DESTDIR' overrides is not required by the GNU Coding Standards, and +'${prefix}'. Any directories that were specified during 'configure', +but not in terms of '${prefix}', must each be overridden at install time +for the entire installation to be relocated. The approach of makefile +variable overrides for each directory variable is required by the GNU +Coding Standards, and ideally causes no recompilation. However, some +platforms have known limitations with the semantics of shared libraries +that end up requiring recompilation when using this method, particularly +noticeable in packages that use GNU Libtool. + + The second method involves providing the 'DESTDIR' variable. For +example, 'make install DESTDIR=/alternate/directory' will prepend +'/alternate/directory' before all installation names. The approach of +'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even -when some directory options were not specified in terms of `${prefix}' -at `configure' time. +when some directory options were not specified in terms of '${prefix}' +at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. +with an extra prefix or suffix on their names by giving 'configure' the +option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the + Some packages pay attention to '--enable-FEATURE' options to +'configure', where FEATURE indicates an optional part of the package. +They may also pay attention to '--with-PACKAGE' options, where PACKAGE +is something like 'gnu-as' or 'x' (for the X Window System). The +'README' should mention any '--enable-' and '--with-' options that the package recognizes. - For packages that use the X Window System, `configure' can usually + For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. +you can use the 'configure' options '--x-includes=DIR' and +'--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the -execution of `make' will be. For these packages, running `./configure +execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be -overridden with `make V=1'; while running `./configure +overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be -overridden with `make V=0'. +overridden with 'make V=0'. Particular systems ================== - On HP-UX, the default C compiler is not ANSI C compatible. If GNU -CC is not installed, it is recommended to use the following options in + On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC +is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. - HP-UX `make' updates targets which have the same time stamps as -their prerequisites, which makes it generally unusable when shipped -generated files such as `configure' are involved. Use GNU `make' -instead. + HP-UX 'make' updates targets which have the same time stamps as their +prerequisites, which makes it generally unusable when shipped generated +files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -parse its `' header file. The option `-nodtk' can be used as -a workaround. If GNU CC is not installed, it is therefore recommended -to try +parse its '' header file. The option '-nodtk' can be used as a +workaround. If GNU CC is not installed, it is therefore recommended to +try ./configure CC="cc" @@ -242,26 +240,26 @@ ./configure CC="cc -nodtk" - On Solaris, don't put `/usr/ucb' early in your `PATH'. This + On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of -these programs are available in `/usr/bin'. So, if you need `/usr/ucb' -in your `PATH', put it _after_ `/usr/bin'. +these programs are available in '/usr/bin'. So, if you need '/usr/ucb' +in your 'PATH', put it _after_ '/usr/bin'. - On Haiku, software installed for all users goes in `/boot/common', -not `/usr/local'. It is recommended to use the following options: + On Haiku, software installed for all users goes in '/boot/common', +not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== - There may be some features `configure' cannot figure out + There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints +_same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: +'--build=TYPE' option. TYPE can either be a short name for the system +type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM @@ -270,101 +268,101 @@ OS KERNEL-OS - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't + See the file 'config.sub' for the possible values of each field. If +'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will +use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. +eventually be run) with '--host=TYPE'. Sharing Defaults ================ - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. + If you want to set default values for 'configure' scripts to share, +you can create a site shell script called 'config.site' that gives +default values for variables like 'CC', 'cache_file', and 'prefix'. +'configure' looks for 'PREFIX/share/config.site' if it exists, then +'PREFIX/etc/config.site' if it exists. Or, you can set the +'CONFIG_SITE' environment variable to the location of the site script. +A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run +environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: +them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc -causes the specified `gcc' to be used as the C compiler (unless it is +causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf bug. Until the bug is fixed you can use this workaround: +Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an +Autoconf limitation. Until the limitation is lifted, you can use this +workaround: - CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash -`configure' Invocation +'configure' Invocation ====================== - `configure' recognizes the following options to control how it + 'configure' recognizes the following options to control how it operates. -`--help' -`-h' - Print a summary of all of the options to `configure', and exit. +'--help' +'-h' + Print a summary of all of the options to 'configure', and exit. -`--help=short' -`--help=recursive' +'--help=short' +'--help=recursive' Print a summary of the options unique to this package's - `configure', and exit. The `short' variant lists options used - only in the top level, while the `recursive' variant lists options - also present in any nested packages. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' + 'configure', and exit. The 'short' variant lists options used only + in the top level, while the 'recursive' variant lists options also + present in any nested packages. + +'--version' +'-V' + Print the version of Autoconf used to generate the 'configure' script, and exit. -`--cache-file=FILE' +'--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to + traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' +'--config-cache' +'-C' + Alias for '--cache-file=config.cache'. + +'--quiet' +'--silent' +'-q' Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error + suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). -`--srcdir=DIR' +'--srcdir=DIR' Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. + 'configure' can determine that directory automatically. -`--prefix=DIR' - Use DIR as the installation prefix. *note Installation Names:: - for more details, including other options available for fine-tuning - the installation locations. +'--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: for + more details, including other options available for fine-tuning the + installation locations. -`--no-create' -`-n' +'--no-create' +'-n' Run the configure checks, but stop before creating any output files. -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - +'configure' also accepts some other, not widely useful, options. Run +'configure --help' for more details. diff -Nru uget-2.0.2/install-sh uget-2.2.2/install-sh --- uget-2.0.2/install-sh 2012-04-02 17:37:09.000000000 +0000 +++ uget-2.2.2/install-sh 2018-03-11 21:18:51.000000000 +0000 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2011-01-19.21; # UTC +scriptversion=2018-03-11.20; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,25 +35,21 @@ # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it +# 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. +tab=' ' nl=' ' -IFS=" "" $nl" +IFS=" $tab$nl" -# set DOITPROG to echo to test this script +# Set DOITPROG to "echo" to test this script. -# Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi +doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. @@ -68,17 +64,6 @@ rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - posix_mkdir= # Desired mode of installed file. @@ -97,7 +82,7 @@ dst_arg= copy_on_change=false -no_target_directory= +is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE @@ -137,46 +122,57 @@ -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift;; + shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; -s) stripcmd=$stripprog;; - -t) dst_arg=$2 - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; - -T) no_target_directory=true;; + -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -190,7 +186,7 @@ fi shift # arg dst_arg=$arg - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac @@ -202,12 +198,21 @@ echo "$0: no input file specified." >&2 exit 1 fi - # It's OK to call `install-sh -d' without argument. + # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 @@ -223,16 +228,16 @@ *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -240,7 +245,7 @@ for src do - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac @@ -266,122 +271,113 @@ fi dst=$dst_arg - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. + # If destination is a directory, append the input filename. if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst - dst=$dstdir/`basename "$src"` + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac dstdir_status=0 else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - + dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + # Note that $RANDOM variable is not portable (e.g. dash); Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p' feature. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else @@ -391,53 +387,51 @@ # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; esac - eval "$initialize_posix_glob" - oIFS=$IFS IFS=/ - $posix_glob set -f + set -f set fnord $dstdir shift - $posix_glob set +f + set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue + test X"$d" = X && continue - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -450,8 +444,8 @@ else # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 @@ -472,15 +466,12 @@ # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - + set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then @@ -493,24 +484,24 @@ # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 @@ -519,9 +510,9 @@ done # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -Nru uget-2.0.2/Makefile.am uget-2.2.2/Makefile.am --- uget-2.0.2/Makefile.am 2014-04-11 09:47:35.000000000 +0000 +++ uget-2.2.2/Makefile.am 2019-05-19 16:49:05.000000000 +0000 @@ -12,7 +12,9 @@ doc \ Windows -EXTRA_DIST = uget-gtk.desktop +EXTRA_DIST = \ + uget-gtk.desktop \ + .snapcraft.yaml appsdir = $(datadir)/applications apps_DATA = uget-gtk.desktop diff -Nru uget-2.0.2/Makefile.in uget-2.2.2/Makefile.in --- uget-2.0.2/Makefile.in 2015-09-11 12:13:21.000000000 +0000 +++ uget-2.2.2/Makefile.in 2019-05-19 16:51:33.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -18,6 +17,61 @@ # intltool : add "po" in SUBDIRS VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -35,29 +89,45 @@ PRE_UNINSTALL = : POST_UNINSTALL = : subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ - ar-lib compile depcomp install-sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -89,12 +159,37 @@ DATA = $(apps_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \ + COPYING ChangeLog INSTALL NEWS README ar-lib compile depcomp \ + install-sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -104,6 +199,7 @@ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi +am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ @@ -131,6 +227,7 @@ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best +DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' @@ -191,6 +288,7 @@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LFS_CFLAGS = @LFS_CFLAGS@ LFS_LDFLAGS = @LFS_LDFLAGS@ @@ -294,7 +392,10 @@ doc \ Windows -EXTRA_DIST = uget-gtk.desktop +EXTRA_DIST = \ + uget-gtk.desktop \ + .snapcraft.yaml + appsdir = $(datadir)/applications apps_DATA = uget-gtk.desktop all: config.h @@ -316,15 +417,14 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -337,8 +437,8 @@ $(am__aclocal_m4_deps): config.h: stamp-h1 - @if test ! -f $@; then rm -f stamp-h1; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 @@ -352,8 +452,11 @@ -rm -f config.h stamp-h1 install-appsDATA: $(apps_DATA) @$(NORMAL_INSTALL) - test -z "$(appsdir)" || $(MKDIR_P) "$(DESTDIR)$(appsdir)" @list='$(apps_DATA)'; test -n "$(appsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(appsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(appsdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -370,22 +473,25 @@ dir='$(DESTDIR)$(appsdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -400,57 +506,12 @@ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -466,12 +527,7 @@ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -483,15 +539,11 @@ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -500,11 +552,36 @@ here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @@ -538,13 +615,10 @@ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ @@ -572,41 +646,43 @@ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__remove_distdir) + $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) + $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) + $(am__post_remove_distdir) dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) + $(am__post_remove_distdir) -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another @@ -614,11 +690,9 @@ distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ @@ -626,22 +700,23 @@ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ @@ -664,7 +739,7 @@ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 - $(am__remove_distdir) + $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' @@ -801,13 +876,12 @@ uninstall-am: uninstall-appsDATA -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ - ctags-recursive install-am install-strip tags-recursive +.MAKE: $(am__recursive_targets) all install-am install-strip -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ - dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ @@ -818,7 +892,9 @@ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ - tags-recursive uninstall uninstall-am uninstall-appsDATA + tags-am uninstall uninstall-am uninstall-appsDATA + +.PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru uget-2.0.2/missing uget-2.2.2/missing --- uget-2.0.2/missing 2012-04-02 17:37:09.000000000 +0000 +++ uget-2.2.2/missing 2018-03-08 20:15:51.000000000 +0000 @@ -1,11 +1,10 @@ #! /bin/sh -# Common stub for a few missing GNU programs while installing. +# Common wrapper for a few potentially missing GNU programs. -scriptversion=2012-01-06.13; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,7 +17,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -26,68 +25,40 @@ # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "Try '$0 --help' for more information" exit 1 fi -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi +case $1 in -msg="missing on your system" + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - yacc create \`y.tab.[ch]', if possible, from existing .[ch] + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. Send bug reports to ." exit $? @@ -99,233 +70,146 @@ ;; -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; +# Run the given program, remember its exit status. +"$@"; st=$? - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; +# If it succeeded, we are done. +test $st -eq 0 && exit 0 - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi -exit 0 +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -Nru uget-2.0.2/pixmaps/Makefile.in uget-2.2.2/pixmaps/Makefile.in --- uget-2.0.2/pixmaps/Makefile.in 2015-09-11 12:13:20.000000000 +0000 +++ uget-2.2.2/pixmaps/Makefile.in 2019-05-19 16:51:34.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,6 +15,61 @@ @SET_MAKE@ VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -33,18 +87,35 @@ PRE_UNINSTALL = : POST_UNINSTALL = : subdir = pixmaps -DIST_COMMON = $(dist_ugetpixmap_DATA) $(nobase_dist_icons_DATA) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_ugetpixmap_DATA) \ + $(nobase_dist_icons_DATA) $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -74,6 +145,8 @@ } am__installdirs = "$(DESTDIR)$(ugetpixmapdir)" "$(DESTDIR)$(iconsdir)" DATA = $(dist_ugetpixmap_DATA) $(nobase_dist_icons_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -131,6 +204,7 @@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LFS_CFLAGS = @LFS_CFLAGS@ LFS_LDFLAGS = @LFS_LDFLAGS@ @@ -285,14 +359,13 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pixmaps/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu pixmaps/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -305,8 +378,11 @@ $(am__aclocal_m4_deps): install-dist_ugetpixmapDATA: $(dist_ugetpixmap_DATA) @$(NORMAL_INSTALL) - test -z "$(ugetpixmapdir)" || $(MKDIR_P) "$(DESTDIR)$(ugetpixmapdir)" @list='$(dist_ugetpixmap_DATA)'; test -n "$(ugetpixmapdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(ugetpixmapdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(ugetpixmapdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -323,15 +399,18 @@ dir='$(DESTDIR)$(ugetpixmapdir)'; $(am__uninstall_files_from_dir) install-nobase_dist_iconsDATA: $(nobase_dist_icons_DATA) @$(NORMAL_INSTALL) - test -z "$(iconsdir)" || $(MKDIR_P) "$(DESTDIR)$(iconsdir)" @list='$(nobase_dist_icons_DATA)'; test -n "$(iconsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(iconsdir)" || exit 1; \ + fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ - echo "$(MKDIR_P) '$(DESTDIR)$(iconsdir)/$$dir'"; \ + echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)/$$dir"; }; \ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(iconsdir)/$$dir'"; \ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(iconsdir)/$$dir" || exit $$?; }; \ @@ -342,14 +421,17 @@ @list='$(nobase_dist_icons_DATA)'; test -n "$(iconsdir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir) -tags: TAGS -TAGS: +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -486,19 +568,21 @@ .MAKE: install-am install-strip -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-dist_ugetpixmapDATA install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man \ +.PHONY: all all-am check check-am clean clean-generic cscopelist-am \ + ctags-am distclean distclean-generic distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dist_ugetpixmapDATA install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ install-nobase_dist_iconsDATA install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ - pdf-am ps ps-am uninstall uninstall-am \ + pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-dist_ugetpixmapDATA uninstall-nobase_dist_iconsDATA +.PRECIOUS: Makefile + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru uget-2.0.2/po/ar.po uget-2.2.2/po/ar.po --- uget-2.0.2/po/ar.po 2015-09-11 12:14:37.000000000 +0000 +++ uget-2.2.2/po/ar.po 2019-05-19 16:49:05.000000000 +0000 @@ -3,41 +3,39 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# ABDULSALAM Arromaih , 2016 # ahmad , 2013 # Benamara Mohamed , 2015 +# Hayder Majid , 2016 # Ibrahim Saed , 2014 -# صفا الفليج , 2013-2014 +# Omar Anwar , 2017 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-09-09 14:59+0000\n" -"Last-Translator: Benamara Mohamed \n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-09-22 23:51+0000\n" +"Last-Translator: Omar Anwar \n" "Language-Team: Arabic (http://www.transifex.com/uget/uget/language/ar/)\n" -"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " -"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" #: ../../po/../uget/pwmd.c:32 #, c-format msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "خادم مدير كلمات السر:uget\n\nأثناء محاولة عمل أتصال SSH مع %s , حصل خطأ بالتحقق من مفاتيح الإستضافة الخاصة به مع ملف الإستضافات الموثوقة بسبب عدم العثور عليها في هذا الملف .\n\nهل ترغب بمعالجة هذا الخطأ في الاتصال بجعله موثوق الأن و في الإتصالات المستقبلية عن طريق إضافة مفاتيح إستضافة %s's إلي ملف الإستضافات المعروفة ؟" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" -msgstr "كلّ الفئات" +msgstr "كل الفئات" #. UGET_EVENT_NORMAL_CUSTOM #: ../../po/../uget/UgetEvent.c:58 @@ -50,7 +48,7 @@ msgstr "يحيل..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "الإعادة" @@ -60,7 +58,7 @@ msgstr "اكتمل التنزيل" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "انتهى" @@ -68,25 +66,25 @@ #. resumable #: ../../po/../uget/UgetEvent.c:64 msgid "Resumable" -msgstr "قابل للاستئناف" +msgstr "قابل للإستئناف" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" -msgstr "غير قابل للاستئناف" +msgstr "غير قابل للإستئناف" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "تعذّرت تسمية الملف المُخرج." #. UGET_EVENT_ERROR_CUSTOM #: ../../po/../uget/UgetEvent.c:81 msgid "couldn't connect to host." -msgstr "تعذّر الاتصال بالمضيف." +msgstr "تعذّر الإتصال بالمضيف." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "تعذّر إنشاء المجلد." @@ -118,12 +116,12 @@ #. UGET_EVENT_ERROR_OUT_OF_RESOURCE #: ../../po/../uget/UgetEvent.c:88 msgid "No output file." -msgstr "لا ملف مخرج." +msgstr "لا ملف مُخرج." #. UGET_EVENT_ERROR_NO_OUTPUT_FILE #: ../../po/../uget/UgetEvent.c:89 msgid "No output setting." -msgstr "لا إعدادات مخرجة." +msgstr "لا إعدادات مُخرجة." #. UGET_EVENT_ERROR_NO_OUTPUT_SETTING #: ../../po/../uget/UgetEvent.c:90 @@ -133,7 +131,7 @@ #. UGET_EVENT_ERROR_TOO_MANY_RETRIES #: ../../po/../uget/UgetEvent.c:91 msgid "Unsupported scheme (protocol)." -msgstr "مخطّط (ميفاق) غير مدعوم." +msgstr "مخطّط (بروتوكول) غير مدعوم." #. UGET_EVENT_ERROR_UNSUPPORTED_SCHEME #: ../../po/../uget/UgetEvent.c:92 @@ -143,140 +141,164 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "الملف الملصق غير موجود." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "ملف الكوكيز غير موجود." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "تم حذف هذا الفيديو." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "حصل خطأ اثناء الحصول على معلومات الفيديو." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "حصل خطأ اثناء الحصول على صفحة الويب للفيديو." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "لا يوجد تعريف للفيديو في رابط اليوتيوب." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: حدث خطأ مجهول." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." -msgstr "" +msgstr "الوضع2: إنتهت المهلة." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: لم يُعثر على المورد." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" +msgstr "شاهد aria2 عدد من اخطاء 'المصدر غير موجود' . انظر الى خيارات --max-file-not-found" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: كانت السرعة بطيئة جدًّا." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: حدثت مشكلة شبكيّة." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: تنزيلات غير منتهية." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "نفذت الموارد" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." -msgstr "" +msgstr "aria2: طول القطعة مختلف عن احدى الموجودات . ملف تحكم aria2" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "كان aria2 ينزّل نفس الملف." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "كان aria2 ينزّل نفس معلومات تلبيدة السيل." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: الملف موجود بالفعل. طالع خيار ‎--allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: ﻻ يمكن فتح ملف موجود." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." -msgstr "" +msgstr "aria2: لا يمكن إنشاء ملف جديد أو اقتطاع ملف موجود." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." -msgstr "aria2: حدث خطأ دَخْل/خَرْج ملفات." +msgstr "aria2: حدث خطأ دَخْل/خَرْج الملفات." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." -msgstr "" +msgstr "aria2: فشل تحليل الأسم." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: تعذّر تحليل مستند ميتالِنك." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: فشل أمر FTP." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." -msgstr "aria2: ترويسة ردّ HTTP سيّئة أو غير متوقّعة." +msgstr "aria2: ردّ HTTP سيّئ أو غير متوقّع." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "إعادات توجيه كثيرة." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." -msgstr "aria2: فشل استيثاق HTTP." +msgstr "aria2: فشل إستيثاق HTTP." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." -msgstr "" +msgstr "aria2: لا يمكن تحليل ملف bencoded(عادة ملف .torrent)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." -msgstr "aria2: ملف السيل معطوب أو معلوماته ناقصة." +msgstr "aria2: ملف الترونت معطوب أو معلوماته ناقصة." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: معرّف URI الممغنط سيّئ." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" +msgstr "aria2: تم اعطاء خيار سيء/غير معروف او تم اعطاء عنصر غير مقبول" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." -msgstr "" +msgstr "aria2: لم يتمكن خادوم التحكم من الحصول على الطلب" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." -msgstr "" +msgstr "aria2: لا يمكن تحليل طلب JSON-RPC" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "لا استجابة. هل aria2 مطفأ؟" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." -msgstr "" +msgstr "aria2: تم حذف gid " + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "فشل في الحصول على رابط الوسائط" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "لا يوجد وسائط متطابقة." #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" @@ -294,249 +316,266 @@ msgid "uGet Project Manager: " msgstr "مدير مشروع uGet:" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "من المهام" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "جديد من الحافظة" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "تنزيل جديد" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "الحافظة" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "سطر الأوامر" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "حدث خطأ" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "حدث خطأ أثناء التنزيل." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "يبدأ التنزيل" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "يبدأ طابور التنزيل." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "اكتمل التنزيل" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "جميع التنزيلات المصطفّة اكتملت." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "الحالة" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "الفئة" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "أنشئ تنزيل جديد" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "تن_زيل جديد..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "_فئة جديدة..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "دف_عة جديدة من الحافظة..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "دفعة و_صلات متسلسلة جديدة..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "تورنت جديد..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "ميتالِنك جديد..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "احفظ كلّ الإعدادات" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "عيّن التنزيلات المحدّدة إلى قابلية التشغيل" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "عيّن التنزيلات المحدّدة إلى الإلباث" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "عيّن خصائص التنزيلات المحدّدة" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "انقل التنزيل المحدّد لأعلى" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "انقل التنزيل المحدّد لأسفل" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "انقل التنزيل المحدّد للأعلى" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "انقل التنزيل المحدّد للأسفل" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "فئة جديدة" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "نسخة - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "خصائص الفئة" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "خصائص التنزيل" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "تورنت جديد" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "ميتالِنك جديد" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "افتح ملف تورنت" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "ملف تورنت (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "افتح ملف ميتالِنك" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "فشل حفظ ملف الفئة." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "فشل تحميل ملف الفئة." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "احفظ ملف الفئة" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "افتح ملف فئة" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr " ملف JSON (*.json)" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "رابط " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "صورة " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "ملف نصّي" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "استورد وصلات من ملف HTML" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "ملف HTML (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "استورد وصلات من ملف نصّي" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "ملف نصي بسيط" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "صدّر العناوين إلى ملف نصّيّ" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "دفعة وصلات متسلسلة" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "لا توجد وصلات في الحافظة." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "كلّ العناوين موجودة." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "دفعة من الحافظة" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "جديد" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "خطأ" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "رسالة" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "%d من العناصر محدّدة" @@ -566,14 +605,17 @@ msgid "Category _name:" msgstr "ا_سم الفئة:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "التن_زيلات النشطة:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "سعة المنتهية:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "سعة المحذوفة" @@ -582,19 +624,19 @@ #. URI Matching conditions #: ../../po/../ui-gtk/UgtkCategoryForm.c:111 msgid "URI Matching conditions" -msgstr "" +msgstr "الشروط مطابقة URI" #: ../../po/../ui-gtk/UgtkCategoryForm.c:118 msgid "Matched _Hosts:" -msgstr "" +msgstr "الاستضافات_المطابقة:" #: ../../po/../ui-gtk/UgtkCategoryForm.c:129 msgid "Matched _Schemes:" -msgstr "" +msgstr "الرسوم_المطابقة:" #: ../../po/../ui-gtk/UgtkCategoryForm.c:140 msgid "Matched _Types:" -msgstr "" +msgstr "الأنواع_المطابقة:" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 msgid "Really Quit?" @@ -626,9 +668,9 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" -msgstr "" +msgstr "_الرابط:" #. Mirrors - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:130 @@ -637,12 +679,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "الملف:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "اختر مجلدًا" @@ -696,7 +738,7 @@ msgstr "ملف الكعكات:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "اختر ملف الكعكات" @@ -706,7 +748,7 @@ msgstr "الملف البريدي:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "اختر ملفًا بريديًّا" @@ -743,10 +785,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "ك.بايت/ث" @@ -812,13 +854,14 @@ #. Offline mode #: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 msgid "Offline Mode" -msgstr "" +msgstr "وضع عدم الاتصال" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 msgid "_Edit" msgstr "_حرّر" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -828,28 +871,28 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 #: ../../po/../ui-gtk/UgtkTrayIcon.c:103 msgid "Clipboard works quietly" -msgstr "" +msgstr "الحافظة تعمل بهدوء" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:107 msgid "Command-line works quietly" -msgstr "" +msgstr "عمل سطر الاوامر بصورة هادئة" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 #: ../../po/../ui-gtk/UgtkTrayIcon.c:111 msgid "Skip existing URI" -msgstr "" +msgstr "تجاهل الرابط الموجود" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "طبّق إعدادات التنزيل الأخيرة" #. --- Completion Auto-Actions --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 msgid "Completion _Auto-Actions" -msgstr "" +msgstr "إنهاء _التطبيقات-التلقائية" #. Completion Auto-Actions - Disable #: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 @@ -947,7 +990,7 @@ msgid "Download _Columns" msgstr "أ_عمدة التنزيل" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "م_كتمل" @@ -974,25 +1017,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "السرعة" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "سرعة الرفع" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "المرفوع" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "النسبة" @@ -1003,13 +1046,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "أُضيف في" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "انتهى في" @@ -1031,7 +1074,8 @@ msgid "_Download" msgstr "ن_زّل" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "ا_حذف المدخلة" @@ -1105,116 +1149,116 @@ msgid "Check for Updates" msgstr "التمس التحديثات" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "إعدادات" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "تعذّر تشغيل التطبيق الافتراضي للملف \"%s\"." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "\"%s\" - المجلد هذا غير موجود." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "معرّف URI موجود" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "معرّف URI موجد، أمتأكّد من المتابعة؟" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "عامّ" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "متقدّم" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "إعدادات الفئة" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "الافتراضي للتنزيل الجديد 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "الافتراضي 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "غير معنون" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "مُلبث" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "يرفع" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "اكتمل" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "المحذوفة" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "المصطفّة" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "النشطة" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "كلّ الحالات" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "الاسم" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "مكتمل" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "الحجم" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "المنقضي" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "المتبقي" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" -msgstr "" +msgstr "رابط" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "الكمية" @@ -1241,67 +1285,67 @@ msgid "Port:" msgstr "المنفذ:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "المقبس:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "مُعطيات المقبس:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "العنصر:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "الإثنين" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "الثلاثاء" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "الأربعاء" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "الخميس" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "الجمعة" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "السبت" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "الأحد" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "م_كّن الجدولة" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "أطفئ" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- أوقف كل المهام" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "عادي" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- شغّل المهمة اعتياديًا" @@ -1360,271 +1404,306 @@ msgstr "_علّم بالمرشّح..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "مثال" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_من:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "إلى" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "الخانات:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "م_ن:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "حسّاس للأحرف" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "لا حرف بدل (*) في مُدخلة الوصلة." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "الوصلة غير صالحة." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "لا محارف في مدخلات \"من\" أو \"إلى\"." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "معاينة" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "واجهة المستخدم" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "عرض النطاق" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "الجدولة" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "الإضافات" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "موقع الوسائط" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "أخرى" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "م_كّن مراقبة الحافظة" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "الوضع ال_صامت" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "فهرس الفئة الافتراضي" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." -msgstr "" +msgstr "اضافة عدد من الفئات اذا لم يتم المطابقة مع فئة" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "_Monitor عرض رابط موقع الوسائط" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "راقب الحافظة بحثًا عن أنواع الملفات:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "افصل الأنواع بالمحرف \"|\"." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "تستطيع استعمال التعابير النمطية هنا." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "أكّد" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "أظهر حواري تأكيدي عن الخروج" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "أظهر تأكيد عند حذف الملفات" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "صينيّة النظام" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "أظهر صينية النظام دائمًا" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "صغّر إلى الصينية عند البدء" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "أغلق إلى الصينيّة عند إغلاق النافذة" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "استخدم مؤشّر برمجيات أبونتو" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "مكّن وضع عدم الاتصال عند البدء" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "إخطار بدء التنزيل" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "إصدار صوت عند انتهاء التنزيل" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "اعرض رموز كبيرة" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "سيؤثّر هذا على كلّ الإضافات." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "حدّ السرعة العموميّ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "حدّ الرفع العموميّ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "حدّ التنزيل العموميّ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "إجراءات الاكتمال الآليّة" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "أمر مخصّص:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "أمر مخصّص إن حدث خطأ:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "احفظ آ_ليًّا" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "دقيقة" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "ال_مدة:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "دقيقة" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "إعدادات سطر الأوامر" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "استخدم \"‎--quiet\" افتراضيًا" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "ترتيب مطابقة الملحقات:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "خيارات ملحقات Aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" -msgstr "" +msgstr "رمز ترخيص RPC السري" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "حدّ السرعة العموميّ لِـ aria2 فقط" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "ا_بدء aria2 عند بدء التشغيل" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "أو_قف تشغيل aria2 عند الخروج" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "أطلِق aria2 على جهاز محلّيّ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "المسار" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "المُعطيات" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "عليك إعادة تشغيل uGet بعد تعديلها." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "نمط تطابق الميديا" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "تطابق الشروط" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "الجودة:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "النوع:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "ملف" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "مجلد" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "عنصر" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "قيمة" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "انسخ ال_كلّ" diff -Nru uget-2.0.2/po/be.po uget-2.2.2/po/be.po --- uget-2.0.2/po/be.po 2015-09-11 12:14:37.000000000 +0000 +++ uget-2.2.2/po/be.po 2019-05-19 16:49:05.000000000 +0000 @@ -8,33 +8,27 @@ msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-30 13:28+0000\n" -"Last-Translator: Mihail Varantsou \n" -"Language-Team: Belarusian (http://www.transifex.com/projects/p/uget/language/" -"be/)\n" -"Language: be\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: Michael Tunnell \n" +"Language-Team: Belarusian (http://www.transifex.com/uget/uget/language/be/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" -"%100>=11 && n%100<=14)? 2 : 3);\n" +"Language: be\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" #: ../../po/../uget/pwmd.c:32 #, c-format msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Усе катэгорыі" @@ -49,7 +43,7 @@ msgstr "Перадача..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Спробы" @@ -59,7 +53,7 @@ msgstr "Сцягванне скончана" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Сцягнутыя" @@ -70,12 +64,12 @@ msgstr "Можна дацягнуць пазней" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Без дацягвання" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Немагчыма пераназваць выходны файл." @@ -85,7 +79,7 @@ msgstr "немагчыма падлучыцца да хоста." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Немагчыма стварыць каталог." @@ -149,134 +143,158 @@ msgid "cookie file not found." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "" #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Няма рэсурсаў" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "" #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "" #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Занадта шмат перанакіраванняў." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Няма адказу. Можа, aria2 адключаная?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "" +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Кіраўнік сцягванняў" @@ -293,249 +311,266 @@ msgid "uGet Project Manager: " msgstr "Кіраўнік праекту uGet: " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "заданні" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Новае з буферу абмену" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Новае сцягванне" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Буфер абмену" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Загадны радок" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Узнікла памылка" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Падчас сцягвання ўзнікла памылка." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Пачалося сцягванне" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Пачалося сцягванне па чарзе." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Сцягванне скончана" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Уся чарга сцягванняў скончана." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Стан" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Катэгорыі" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Стварыць новае сцягванне" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Новае _сцягванне..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Новая катэгорыя..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Новае _з буферу абмену..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Новае пакетнае сцягванне..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Новы торэнт..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Новая мета-спасылка..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Захаваць усе настáўленні" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Запусціць вылучаныя сцягванні" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Прыпыніць вылучаныя сцягванні" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Наставіць вылучаныя сцягванні" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Пасунуць вылучанае вышэй" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Пасунуць вылучанае ніжэй" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Пасунуць вылучанае дагары" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Пасунуць вылучанае дадолу" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Новая катэгорыя" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Скапіяваць - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Уласцівасці катэгорыі" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Уласцівасці сцягвання" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Новы торэнт" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Новая мета-спасылка" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Адкрыць Torrent-файл" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Адкрыць файл мета-спасылкі" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "Не выйшла захаваць файл катэгорыі." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "Не выйшла прачытаць файл катэгорыі." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Захаваць файл катэгорыі" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Адкрыць файл катэгорыі" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Спасылка " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Выява " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Тэкставы файл" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Імпартаваць URL'ы з HTML-файла" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Імпартаваць URL'ы з тэкставага файла" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Экспартаваць URL'ы у тэкставы файл" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Пакетнае сцягванне" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Не знойдзена URL'аў у буферы абмену." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Усе URL'ы ўжо існавалі." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Настáўленні _буферу абмену" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Новы" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Памылка" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Стан" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Абрана %d элементаў" @@ -547,9 +582,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"мы запусцілі Donation Drive для далейшай распрацоўкі uGet. Калі ласка, " -"пстрыкніце " +msgstr "мы запусцілі Donation Drive для далейшай распрацоўкі uGet. Калі ласка, пстрыкніце " #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -567,14 +600,17 @@ msgid "Category _name:" msgstr "Назва катэгорыі:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Дзейных сцягванняў, не болей за:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Памятаць скончаных сцягванняў, не болей за:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Памятаць выдаленых сцягванняў, не болей за:" @@ -627,7 +663,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -638,12 +674,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Файл:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Пазначыць каталог" @@ -697,7 +733,7 @@ msgstr "Файл кукі:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Пазначыць файл кукі" @@ -707,7 +743,7 @@ msgstr "Файл для дасылання:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Пазначыць файл, што трэба даслаць" @@ -744,10 +780,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "КіБ/с" @@ -819,7 +855,8 @@ msgid "_Edit" msgstr "_Змяніць" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -842,9 +879,9 @@ msgstr "Пропуск існага URI" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Ужываць настáўленні апошняга сцягвання" #. --- Completion Auto-Actions --- start --- @@ -948,7 +985,7 @@ msgid "Download _Columns" msgstr "Слупкі _спісу сцягванняў" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Колькі сцягнута" @@ -975,25 +1012,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Хуткасць сцягвання" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Хуткасць раздачы" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Раздадзена" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Стасунак" @@ -1004,13 +1041,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Калі дададзена" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Калі скончана" @@ -1032,7 +1069,8 @@ msgid "_Download" msgstr "_Сцягванне" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "_Выдаліць элемент" @@ -1106,116 +1144,116 @@ msgid "Check for Updates" msgstr "Праверыць на абнаўленні" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Настáўленні" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Немагчыма запусціць стандартную праграму для файла '%s'" -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - гэты каталог не існуе." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "URI ужо існаваў" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "Гэты URI ужо існаваў. Вы сапраўды жадаеце працягваць?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Галоўныя" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Дадатковыя" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Настáўленні катэгорыі" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Стандартныя настáўленні катэгорыі" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Дадатковыя стандартныя настáўленні" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "безназоўны" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Прыпынена" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Зацягванне" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Скончана" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Выдаленыя" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "У чарзе" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Дзейныя" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Агульны стан" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Назва" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Сцягнута" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Памер" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "Рух, %" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Мінула" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Засталося" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Колькасць" @@ -1242,67 +1280,67 @@ msgid "Port:" msgstr "Порт:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Сокет:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Аргументы сокета:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Элемент:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Пнд" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Аўт" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Срд" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Чцв" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Птн" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Сбт" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Ндз" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Праца паводле раскладу" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Спыніць" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- спыніць усе заданні" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Запусціць" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- запусціць заданні як звычайна" @@ -1361,271 +1399,306 @@ msgstr "_Вылучыць паводле фільтру..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "напрыклад" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_З:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "_Па:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "лічбаў:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "_З:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "зважаць на рэгістр" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Няма знака падстановы(*) у полі URL." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL нядзейсны." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "У палях 'З' ці 'Па' нічога няма." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Перадпрагляд" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Інтэрфэйс карыстальніка" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Прапускная здольнасць" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Планавальнік" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Убудовы" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Іншае" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Уключыць назіральнік буферу абмену" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Аўтаматычны рэжым" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Стандартны індэкс катэгорыі" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "Даданне да N-ай катэгорыі, калі катэгорыя не распазнана." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "Сачыць за буферам абмену на прадмет дадзеных тыпаў файлаў:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Тыпы размяжоўваюцца знакам '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Дазваляюцца рэгулярныя выразы." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Пацверджанне" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Паказваць вакенца пацверджання пры закрыцці" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Пацверджанне выдалення файлаў" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Сістэмны трэй" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Заўсёды паказваць значок у трэі" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Згарнуць у трэй на пачатку" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Згортвацца ў трэй пры закрыцці вакна" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Выкарыстоўваць індыкатар праграм Ubuntu" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Увайсці ў афлайн-рэжым на пачатку" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Абвяшчэнне пра пачатак сцягвання" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Гук, калі сцягванне скончана" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "Гэта паўплывае на ўсе ўбудовы." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Глабальнае абмежаванне хуткасці" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Найбольшая хуткасць зацягвання" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Найбольшая хуткасць сцягвання" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Дзеянні па сканчэнні" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Свой загад:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Свой загад на выпадак узнікнення памылкі:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "_Аўтазахаванне" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "хвілін" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Прамежак часу:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "хвілін" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Загадны радок" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Выкарыстоўваць '--quiet' стандартна" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "Парадак распазнання убудоў:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Параметры убудовы aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "Сакрэтны токен RPC-аўтарызацыі" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Глабальнае абмежаванне хуткасці выключна для aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Запускаць aria2 на пачатку" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Спыняць aria2 пры закрыцці" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Запускаць aria2 на лакальнай прыладзе" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Шлях" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Аргументы" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Трэба перазапусціць uGet пасля змянення." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Файл" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Каталог" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Элемент" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Значэнне" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Капіяваць _усё" diff -Nru uget-2.0.2/po/bg.po uget-2.2.2/po/bg.po --- uget-2.0.2/po/bg.po 2015-09-11 12:14:37.000000000 +0000 +++ uget-2.2.2/po/bg.po 2019-05-19 16:49:05.000000000 +0000 @@ -8,15 +8,14 @@ msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-27 15:51+0000\n" -"Last-Translator: Atanas Kovachki \n" -"Language-Team: Bulgarian (http://www.transifex.com/projects/p/uget/language/" -"bg/)\n" -"Language: bg\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: Michael Tunnell \n" +"Language-Team: Bulgarian (http://www.transifex.com/uget/uget/language/bg/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -24,15 +23,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Всички категории" @@ -47,7 +43,7 @@ msgstr "Предаване..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Отново" @@ -57,7 +53,7 @@ msgstr "Изтеглянето приключи" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Завършено" @@ -68,12 +64,12 @@ msgstr "Възобновено" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Не е възобновено" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Изходния файл не може да се преименува." @@ -83,15 +79,14 @@ msgstr "не може да се свърже с хоста." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Папката не може да бъде създадена." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:83 msgid "File can't be created (bad filename or file exist)." -msgstr "" -"Файла не може да бъде създаден (лошо име на файл или файла съществува)." +msgstr "Файла не може да бъде създаден (лошо име на файл или файла съществува)." #. UGET_EVENT_ERROR_FILE_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:84 @@ -148,134 +143,158 @@ msgid "cookie file not found." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "" #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "" #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "" #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Твърде много пренасочвания." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "" +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Даунлоуд мениджър" @@ -292,249 +311,266 @@ msgid "uGet Project Manager: " msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "задачи" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Нов от клипборда" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Ново изтегляне" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Клипборд" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Команден ред" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Изтеглянето стартира" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Стартиране на чакащо изтегляне." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Изтеглянето завърши" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Всички чакащи сваляния, са завършени." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Статус" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Категория" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Създай ново изтегляне" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Ново _изтегляне..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Нова _категория..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Нов _от клипборда" #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Нова последователност от _връзки..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Нов торент..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Нов металинк..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Съхрани всички настройки" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Установи избраното изтегляне на изпълнение" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Установи избраното изтегляне на пауза" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Настройки на избраните изтегляния" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Премести избраното изтегляне нагоре" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Премести избраното изтегляне надолу" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Премести избраното изтегляне най-отгоре" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Премести избраното изтегляне най-отдолу" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Нова категория" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Копирай - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Свойства на категорията" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Свойства на изтеглянето" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Нов торент" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Нов металинк" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Отвори торент файл" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Отвори металинк файл" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Връзка " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Изображение " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Текстов файл" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Импорт на връзки от HTML файл" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Импорт на връзки от текстов файл" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Последователност на връзките" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Няма открити връзки в клипборда." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "От клипборда" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Грешка" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Съобщение" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Избрани %d елемента" @@ -546,8 +582,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"ние пуснахме Donation Drive за бъдещото развитие на uGet, моля, кликнете" +msgstr "ние пуснахме Donation Drive за бъдещото развитие на uGet, моля, кликнете" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -565,14 +600,17 @@ msgid "Category _name:" msgstr "_Име на категорията:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Активни _изтегляния:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Количество изтегляния:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Количество изтрити:" @@ -625,7 +663,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "" @@ -636,12 +674,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Файл:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Изберете папка" @@ -695,7 +733,7 @@ msgstr "Файл с бисквитките:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Изберете файл с бисквитките" @@ -705,7 +743,7 @@ msgstr "Изпращащ файл:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Изберете файл за изпращане" @@ -742,10 +780,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "кб/с" @@ -817,7 +855,8 @@ msgid "_Edit" msgstr "_Редактиране" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -840,9 +879,9 @@ msgstr "" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Приложи настройките от последното изтегляне" #. --- Completion Auto-Actions --- start --- @@ -946,7 +985,7 @@ msgid "Download _Columns" msgstr "_Колони за изтеглянето" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Завършено" @@ -973,25 +1012,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Скорост" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Скорост на качване" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Качено" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Рейтинг" @@ -1002,13 +1041,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Добавено на" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Завършено на" @@ -1030,7 +1069,8 @@ msgid "_Download" msgstr "_Изтегляне" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "" @@ -1104,116 +1144,116 @@ msgid "Check for Updates" msgstr "Проверете за актуализации" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Настройки" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Не може да се стартира стандартното приложение за файла '%s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - папката не съществува." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Главни" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Разширени" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Настройки на категорията" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Стандартно за ново изтегляне 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Стандартно 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "неименуван" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "На пауза" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Изтрити" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Чакащи" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Активни" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Име" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Завършено" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Размер" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Измина" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Остава" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Количество" @@ -1240,67 +1280,67 @@ msgid "Port:" msgstr "Порт:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Сокет:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Сокет аргументи:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Елемент:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Пон" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Вто" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Сря" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Чет" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Пет" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Съб" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Нед" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Включи планировчика" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Изключи" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- спри всички задачи" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Нормално" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- стартирай нормално задачата" @@ -1359,271 +1399,306 @@ msgstr "_Маркирай по филтър..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "Например:" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "О_т:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "До:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "цифри:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "_От:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "малки и главни букви" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Няма символа в шаблона(*) във връзката." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "Връзката не е валидна." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "В полетата 'От' или 'До' няма нищо." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Преглед" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Потребителски интерфейс" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Планировчик" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Плъгини" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Други" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Тих режим" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Разделете видове, използвайки символа \"|\"." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Можете да използвате регулярни изрази тук." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Потвърждение при изтриване на файлове" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Винаги показвай иконката в трея" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Минимизирай в трея при стартиране" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Включи тихия режим при стартиране" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Известие при стартиране на изгегляне" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Звуково известие при завършване на изтеглянето" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "" #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "минути" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Интервал:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "минути" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Настройки на командния ред" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Използвай '--quiet' стандартно" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Пускай aria2 при стартиране" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Изключвай aria2 при изход" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Път" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Аргументи" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Файл" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Папка" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Елемент" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Значение" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Копирай _всички" diff -Nru uget-2.0.2/po/bn_BD.po uget-2.2.2/po/bn_BD.po --- uget-2.0.2/po/bn_BD.po 2015-09-11 12:14:37.000000000 +0000 +++ uget-2.2.2/po/bn_BD.po 2019-05-19 16:49:05.000000000 +0000 @@ -3,22 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Reazul Iqbal , 2015 +# Nazir Ahmed Sabbir , 2015 +# Reazul Iqbal , 2015,2017 # Towfique Anam, 2013 -# Nazir Ahmed Sabbir , 2015 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-08-15 03:24+0000\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-07-12 20:35+0000\n" "Last-Translator: Reazul Iqbal \n" -"Language-Team: Bengali (Bangladesh) (http://www.transifex.com/uget/uget/" -"language/bn_BD/)\n" -"Language: bn_BD\n" +"Language-Team: Bengali (Bangladesh) (http://www.transifex.com/uget/uget/language/bn_BD/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: bn_BD\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -26,15 +25,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "সকল বিভাগ" @@ -49,7 +45,7 @@ msgstr "প্রেরিত হচ্ছে..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "পুনঃচেষ্টা" @@ -59,7 +55,7 @@ msgstr "ডাউনলোড সমাপ্ত" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "সমাপ্ত" @@ -70,12 +66,12 @@ msgstr "পুনরায় আরম্ভযোগ্য" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "পুনরয়ায় আরম্ভযোগ্য নয়" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "আউটপুট ফাইল পুনরায় নামকরন করা যাবে না।" @@ -85,7 +81,7 @@ msgstr "হোস্টের সাথে যুক্ত হতে ব্যর্থ।" #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "ফোল্ডার তৈরী করা সম্ভব নয়।" @@ -142,141 +138,165 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "পোস্ট পাওয়া যায়নি।" #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." +msgstr "কুকি ফাইল পাওয়া যায়নি।" + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "ভিডিওটি সরানো হয়েছে।" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "ভিডিওটির তথ্য আনতে ক্রুটি হয়েছে।" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." msgstr "" #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: একটি অজানা ত্রুটি ঘটেছে।" -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: টাইম আউট হয়েছে।" -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "" #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "" #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "" #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "অনেক বেশী পুনঃনির্দেশ।" -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "" +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "ডাউনলোড ম্যানেজার" @@ -293,249 +313,266 @@ msgid "uGet Project Manager: " msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "কাজসমূহ" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "ক্লিপবোর্ড থেকে নতুন" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "নতুন ডাউনলোড" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "ক্লিপবোর্ড" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "কমান্ড লাইন" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "ডাউনলোড শুরু হচ্ছে" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "ডাউনলোডের তালিকা চালু" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "ডাউনলোড সমাপ্ত" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "তালিকাকৃত সকল ডাউনলোড সমাপ্ত" #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "অবস্থা" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "ক্যাটাগরি" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "নতুন ডাউনলোড তৈরী" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "New _Download..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "New _Category..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "New Clipboard _batch..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "New _URL Sequence batch..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "নতুন টরেন্ট..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "নতুন মেটালিঙ্ক..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "নির্বাচিত ডাউনলোড চালুর উপযোগী হিসেবে সেট করুন" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "নির্বাচিত ডাউনলোড বিরতির জন্য সেট করুন" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "নির্বাচিত ডাউনলোডের বৈশিষ্ট্য দেখানোর জন্য সেট করুন" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "নির্বাচিত ডাউনলোড উপরে তুলুন" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "নির্বাচিত ডাউনলোড নিচে নামান" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "নির্বাচিত ডাউনলোড সবার উপরে তুলুন" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "নির্বাচিত ডাউনলোড সবার নিচে নামান" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "নতুন ক্যাটাগরি" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "কপি" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "ক্যাটাগরি বৈশিষ্ট্য" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "ডাউনলোড বৈশিষ্ট্য" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "নতুন টরেন্ট" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "নতুন মেটালিংক" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "টরেন্ট ফাইল খুলুন" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "মেটালিংক ফাইল খুলুন" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "লিংক " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "ছবি " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "টেক্সট ফাইল" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "HTML ফাইল থেকে URL ইমপোর্ট" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "টেক্সট ফাইল থেকে URL ইমপোর্ট" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "ক্রমানুসারে সাজানো URL " -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "ক্লিপবোর্ডে কোন ইউআরএল পাওয়া যায়নি" -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "সাজানো ক্লিপবোর্ড" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "ত্রুটি" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "বার্তা" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "%d সংখ্যক বস্তু নির্বাচিত" @@ -565,14 +602,17 @@ msgid "Category _name:" msgstr "Category _name:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Active _downloads:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "সমাপ্তের ধারণক্ষমতা:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "পুনঃব্যবহার ধারণক্ষমতা:" @@ -625,7 +665,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "" @@ -636,12 +676,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "ফাইল:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "ফোল্ডার নির্বাচন" @@ -695,7 +735,7 @@ msgstr "কুকি ফাইল:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "কুকি ফাইল সিলেক্ট করুন" @@ -705,7 +745,7 @@ msgstr "ফাইল পোস্ট:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "পোস্ট ফাইল নির্বাচন:" @@ -742,10 +782,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "কিবাইট/সে" @@ -817,7 +857,8 @@ msgid "_Edit" msgstr "_Edit" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -840,9 +881,9 @@ msgstr "" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "সাম্প্রতিক ডাউনলোড সেটিং প্রয়োগ" #. --- Completion Auto-Actions --- start --- @@ -946,7 +987,7 @@ msgid "Download _Columns" msgstr "Download _Columns" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Complete" @@ -973,25 +1014,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "গতি" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "আপলোড গতি" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "আপলোডেড" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "অনুপাত" @@ -1002,13 +1043,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "শুরু হয়েছে" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "সমাপ্ত হয়েছে" @@ -1030,7 +1071,8 @@ msgid "_Download" msgstr "_Download" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "" @@ -1104,116 +1146,116 @@ msgid "Check for Updates" msgstr "আপডেট চেক করুন" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "সেটিং" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "'%s' এর জন্য ডিফল্ট এপ্লিকেশন পাওয়া যায়নি" -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - এই ফোল্ডারটি নেই" #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "সাধারণ" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "অগ্রবর্তী" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "ক্যাটাগরি সেটিংস" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "নতুন ডাউনলোড 1 এর জন্য পূর্বনির্ধারিত" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "পূর্বনির্ধারিত 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "নামবিহীন" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "পুনঃচালনা" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "সারিবদ্ধ করা হচ্ছে" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "সক্রিয়" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "নাম" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "সমাপ্ত" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "আকার" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "অতিক্রান্ত হয়েছে" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "বাকি আছে" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "পরিমাণ" @@ -1240,67 +1282,67 @@ msgid "Port:" msgstr "পোর্ট:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "সকেট:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "সকেট আর্গুমেন্ট:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "উপাদান:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "সোম" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "মঙ্গল" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "বুধ" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "বৃহঃ" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "শুক্র" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "শনি" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "রবি" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Enable Scheduler" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "বন্ধ করুন" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "-সব কাজ বন্ধ করুন" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "স্বাভাবিক" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "-কাজ স্বাভাবিকভাবে চালান" @@ -1359,271 +1401,306 @@ msgstr "_Mark by filter..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "যেমন:" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_From:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "প্রতি:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "সংখ্যা:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "F_rom:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "কেস-সংবেদনশীল" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "URL এন্ট্রিতে কোন ওয়াইল্ডকার্ড(*) বর্ণ নেই।" -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL টি সঠিক নয়" -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "'from' বা 'to' এন্ট্রিতে কোন বর্ণ নেই।" -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "প্রিভিউ" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "শিডিওলার" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "প্লাগ-ইন" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "অন্যান্য" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Quiet mode" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "টাইপগুলোকে '|' দিয়ে আলাদা করুন" -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "এখানে রেগুলার এক্সপ্রেশন ব্যবহার করতে পারেন।" -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "ফাইল ডিলিট করার আগে নিশ্চিত করুন" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "সবসময় ট্রে আইকন দেখান" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "স্টার্টআপে ট্রেতে মিনিমাইজ করুন" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "স্টার্টআপে অফলাইন মুড চালু করুন" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "ডাউনলোড শুরু হবার নোটিফিকেশন" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "ডাউনলোড সমাপ্ত হলে শব্দ বাজান" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "" #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "মিনিট" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Interval:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "মিনিট" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "কমান্ডলাইন সেটিংস" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "'--quiet' পূর্বনির্ধারিতভাবে ব্যবহার করুন" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Launch aria2 on startup" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Shutdown aria2 on exit" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "পথ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "আর্গুমেন্টসমূহ" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "ফাইল" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "ফোল্ডার" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "বস্তু" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "মান" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Copy _All" diff -Nru uget-2.0.2/po/ca.po uget-2.2.2/po/ca.po --- uget-2.0.2/po/ca.po 2015-09-11 12:14:38.000000000 +0000 +++ uget-2.2.2/po/ca.po 2019-05-19 16:49:05.000000000 +0000 @@ -8,15 +8,14 @@ msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-01-03 19:08+0000\n" -"Last-Translator: dsabadell \n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/uget/language/" -"ca/)\n" -"Language: ca\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: Michael Tunnell \n" +"Language-Team: Catalan (http://www.transifex.com/uget/uget/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -24,15 +23,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Totes les categories" @@ -47,7 +43,7 @@ msgstr "Transmetent..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Torna a provar" @@ -57,7 +53,7 @@ msgstr "La descàrrega ha estat completada" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Ha finalitzat" @@ -68,12 +64,12 @@ msgstr "Reprèn la baixada" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "No es pot reprendre" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "L'arxiu de sortida no pot ser reanomenat." @@ -83,7 +79,7 @@ msgstr "S'ha produït un error al connectar amb l'amfitrió." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "No es pot crear la carpeta." @@ -147,140 +143,158 @@ msgid "cookie file not found." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: s'ha produït un error desconegut." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: el temps d'espera s'ha esgotat." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: no s'ha trobat el recurs." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 ha arribat al límit d'errors 'recurs no trobat' de l'opció --max-file-" -"not-found." +msgstr "aria2 ha arribat al límit d'errors 'recurs no trobat' de l'opció --max-file-not-found." -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: la velocitat de baixada és massa lenta." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: s'ha produït un error de xarxa." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: no s'han enllestit les descàrregues." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Manquen recursos." #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." -msgstr "" -"aria2: la mida del fragment és diferent de la consignada al fitxer de " -"control .aria2." +msgstr "aria2: la mida del fragment és diferent de la consignada al fitxer de control .aria2." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2: ja has descarregat aquest fitxer." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 estàs descarregant informació duplicada del torrent." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: el fitxer ja existeix. Fixa't en l'opció --allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: no es pot obrir un fitxer existent." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "aria2: no s'ha pogut crear un nou fitxer o truncar-ne un d'existent." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: s'ha produït un error d'I/O d'un fitxer " #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: la resolució de nom ha fallat." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: no s'ha pogut gestionar un fitxer Metalink." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: l'ordre de FTP ha fallat." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: la capçalera de resposta HTTP és dolenta o desconeguda." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "S'ha redireccionat massa vegades." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: ha fallat l'autorització HTTP." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "aria2: no s'ha pogut analitzar un fitxer .torrent." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: el fitxer torrent és defectuós o conté informació incompleta." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: l'URI del fitxer magnet és dolent." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" -"aria2: l'opció donada és dolenta o incompleta; o bé l'opció té un argument " -"desconegut. " +msgstr "aria2: l'opció donada és dolenta o incompleta; o bé l'opció té un argument desconegut. " -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2: el servidor remot no pot gestionar la petició." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: no es pot gestionar la petició JSON-RPC." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "aria2 no respon. Comprova que estigui actiu." #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2: s'ha eliminat l'identificador de grup." +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Gestor de descàrregues" @@ -297,249 +311,266 @@ msgid "uGet Project Manager: " msgstr "Gestor de Projecte d'uGet:" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "tasques" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Nova des del porta-retalls" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Nova descàrrega" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Porta-retalls" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Línia d'ordres" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "S'ha produït un error" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "S'ha produït un error mentre descarregava." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "S'està iniciant la baixada" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Comença la descàrrega de la cua." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "S'ha enllestit la descàrrega." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "S'ha enllestit la cua de descàrregues." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Estat" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Categoria" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Crea una nova descàrrega" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Nova _descàrrega" #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Nova _categoria..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Nou _lot del porta-retalls..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Nova _seqüència d'URLs... " #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Nou torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Nou metalink..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Desar tots els paràmetres" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Defineix les descàrregues seleccionades com actives" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Posa les descàrregues seleccionades en espera" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Defineixles propietats de les descàrregues seleccionades" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Mou les descàrregues seleccionades amunt" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Mou les descàrregues seleccionades avall" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Posa les descàrregues seleccionades dalt de tot" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Posa les descàrregues seleccionades sota de tot" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Nova categoria" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Copia -" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Propietats de la categoria" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Propietats de la descàrrega" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Nou torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Nou metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Obre un fitxer torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Obre un fitxer metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "No s'ha pogut desar la categoria." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "No s'ha pogut carregar la categoria." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Desar el fitxer de categoria" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Obrir un fitxer de categoria" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Enllaç " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Imatge " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Fitxer de text" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Importa URLs des d'un fitxer HTML" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Importa URLs des d'un fitxer de text" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Exporta URLs a un fitxer de text" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Lot de seqüència d'URLs" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "No s'ha trobat cap URL al porta-retalls." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Totes les URL existeixen." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Lot del porta-retalls" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Nova" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Error" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Missatge" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "%d ítems seleccionats" @@ -551,9 +582,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"hem endegat una campanya de donació per al futur desenvolupament d'uGet: si " -"us plau, cliqueu" +msgstr "hem endegat una campanya de donació per al futur desenvolupament d'uGet: si us plau, cliqueu" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -571,14 +600,17 @@ msgid "Category _name:" msgstr "_Nom de la categoria:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "_Descàrregues actives:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Capacitat de les finalitzades:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Capacitat de la paperera:" @@ -631,7 +663,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI" @@ -642,12 +674,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Fitxer:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Selecciona una carpeta" @@ -701,7 +733,7 @@ msgstr "Galeta:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Selecciona una galeta" @@ -711,7 +743,7 @@ msgstr "Fitxer 'post':" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Seleccioneu el fitxer 'post'" @@ -748,10 +780,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -823,7 +855,8 @@ msgid "_Edit" msgstr "_Edita" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -846,9 +879,9 @@ msgstr "Evita URI existent" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Aplica els paràmetres de baixada més nous" #. --- Completion Auto-Actions --- start --- @@ -952,7 +985,7 @@ msgid "Download _Columns" msgstr "_Columnes de descàrrega" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Complet" @@ -979,25 +1012,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Velocitat" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Límit de velocitat" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Transferit" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Relació" @@ -1008,13 +1041,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Afegit en" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Completat en" @@ -1036,7 +1069,8 @@ msgid "_Download" msgstr "_Descarrega" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "Es_borra aquesta entrada" @@ -1110,116 +1144,116 @@ msgid "Check for Updates" msgstr "Comprova si hi ha actualitzacions" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Paràmetres" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "No es pot executar l'aplicació predefinida per al fitxer '%s'" -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - Aquesta carpeta no existeix." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "L'URI ja existeix." -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "Aquesta URI ja existeix. Estàs segur que vol continuar?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "General" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Avançat" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Paràmetres de categoria" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Predeterminada per a nova descàrrega 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Predeterminada 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "sense nom" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "En pausa" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "S'està transferint" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Completades" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Descartades" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Posant en cua" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Actives" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Tots els estats" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Nom" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Complet" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Mida" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Transcorregut" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Pendent" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Quantitat" @@ -1246,67 +1280,67 @@ msgid "Port:" msgstr "Port:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Sòcol:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Arguments del sòcul:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Element:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Dll" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Dm" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Dc" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Dj" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Dv" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Ds" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Dg" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Habilita el temporitzador" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Desactiva" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- atura totes les tasques" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normal" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- executa les tasques amb normalitat" @@ -1365,271 +1399,306 @@ msgstr "_Selecciona per filtre..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "p.ex." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_De:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "A:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "dígits:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "_De" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "distingeix majúsc. i minúsc." -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "No empreu el caràcter comodí (*) en el camp URL" -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "L'URL no és vàlida." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Cap caràcter en els camps 'De' o 'A'" -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Previsualització" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Interfície d'usuari" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Ample de banda" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Temporitzador" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Connector" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Altres" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Habilita el monitor del porta-retalls" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Mode silenciós" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Índex predeterminat de categoria" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "Si no coincideix amb cap categoria, afegeix a la Na categoria." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "_Cerca aquests tipus de fitxer al porta-retalls " -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Separa els tipus de fitxer amb el caràcter '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Aquí pots emprar expressions regulars." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Confirma" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Demana confirmació per sortir" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Confirma l'eliminació de fitxers" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Safata del sistema" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Sempre mostra icona a la safata" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Minimitza a la safata en arrencar" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Minimitza a la safata al tancar la finestra" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Activa l'extensió d'integració amb l'Ubuntu" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Habilita el mode fora de línia en arrencar" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Notificació d'inici de descàrrega" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Fés un so quan la descàrrega acabi" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "Això afectarà a tots els connectors." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Límit global de velocitat" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Velocitat màx. de pujada" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Velocitat màx. de baixada" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Accions autom. de compleció" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Ordre personalitzada:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Ordre predeterminada si s'escau un error:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "Desa _automàticament" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "minuts" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Intèrval:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "minuts" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Paràmetres de línia d'ordres" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Empra el mode silenciós" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "Ordre de coincidència dels connectors:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Opcions dels connectors d'aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "Autorització secreta de RPC" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Límit de velocitat global només per aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Executa l'aria2 en arrencar" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Atura l'aria2 en sortir" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Arrenca aria2 en el dispositiu local" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Camí" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Arguments :" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Cal reiniciar uGet en modificar-los." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Fitxer" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Carpeta" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Element" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Valor" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Copia-ho _tot" diff -Nru uget-2.0.2/po/cs.po uget-2.2.2/po/cs.po --- uget-2.0.2/po/cs.po 2015-09-11 12:14:38.000000000 +0000 +++ uget-2.2.2/po/cs.po 2019-05-19 16:49:06.000000000 +0000 @@ -4,6 +4,7 @@ # # Translators: # Alois Nešpor , 2014 +# Radoslav Klein , 2017 # ToMáš Marný, 2013 # ToMáš_Marný, 2013 # wastingdouglas , 2011 @@ -11,15 +12,14 @@ msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-27 08:40+0000\n" -"Last-Translator: Alois Nešpor \n" -"Language-Team: Czech (http://www.transifex.com/projects/p/uget/language/" -"cs/)\n" -"Language: cs\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-09-22 23:51+0000\n" +"Last-Translator: ToMáš Marný\n" +"Language-Team: Czech (http://www.transifex.com/uget/uget/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: ../../po/../uget/pwmd.c:32 @@ -27,15 +27,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "Password Manager Daemon: uget\n\nPři pokusu o SSH připojení k %s došlo k problému s ověřením klíče, protože klíč nebyl nalezen ve známém a důvěryhodném seznamu známých hostitelů.\n\nChcete tohoto připojení označit jako důvěryhodné pro toto i budoucí připojení přidáním tohoto %s klíče do seznamu známých hostitelů?" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Všechny kategorie" @@ -50,7 +47,7 @@ msgstr "Přenášení..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Opakovat" @@ -60,7 +57,7 @@ msgstr "Stahování dokončeno" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Dokončeno" @@ -71,12 +68,12 @@ msgstr "Možno pokračovat" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Není možné pokračovat" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Výstupní soubor nemohl být přejmenován." @@ -86,15 +83,14 @@ msgstr "Není možné se připojit na hosta." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Složka nemohla být vytvořena" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:83 msgid "File can't be created (bad filename or file exist)." -msgstr "" -"Soubor nemohl být vytvořen (špatné jméno souboru nebo soubor již existuje)." +msgstr "Soubor nemohl být vytvořen (špatné jméno souboru nebo soubor již existuje)." #. UGET_EVENT_ERROR_FILE_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:84 @@ -144,145 +140,164 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "post soubor nenalezen." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "cookie soubor nenalezen." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Toto video bylo odstraněno." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Při získávání informací o videu došlo k chybě." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Při získávání webové stránky videa došlo k chybě." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "V URL YouTube nebylo nalezeno video_id." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: vyskytla se neznámá chyba." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: vypršel časový limit" -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: zdroj nebyl nalezen." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 chyba v zadaném počtu 'zdroj nebyl nalezen'. Podívejte se na volbu --" -"max-file-not-found" +msgstr "aria2 chyba v zadaném počtu 'zdroj nebyl nalezen'. Podívejte se na volbu --max-file-not-found" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: rychlost byla příliš pomalá." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: nastal problém se sítí" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: nedokončené stahování." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr " Nedostatek zdrojů či prostředků" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "aria2: velikost jednoho dílu je rozdílná než v kontrolním souboru." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 stáhla stejný soubor." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 stáhla stejný info hash torrent." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: soubor již existuje. Podívjte se na volbu --allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: nelze otevřít existující soubor." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "aria2: nelze vytvořit nový soubor." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: nastala chyba I/O souboru." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: rozlišení jména selhalo." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: nelze parsovat Metalink dokument." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: FTP příkaz selhal." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: HTTP hlavička je chybná nebo neočekávaná." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Příliš mnoho přesměrování." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: selhala HTTP autorizace." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "aria2: nelze parsovat soubor (obvykle .torrent soubor)" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." -msgstr "" -"aria2: soubor torrentu je poškozený nebo v něm chybí potřebné informace." +msgstr "aria2: soubor torrentu je poškozený nebo v něm chybí potřebné informace." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: Magnet URI je chybný." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" -"aria2: byl zadán špatná nebo nerozpoznatelná volba, případně špatný argument " -"volby" +msgstr "aria2: byl zadán špatná nebo nerozpoznatelná volba, případně špatný argument volby" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2: vzdálený server neodpovídá na žádost." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: nelze parsovat JSON-RPC." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Žádná odezva. Je aria2 vypnuta?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." -msgstr "aria2: gid byl odstrraněn." +msgstr "aria2: gid byl odstraněn." + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Nepodařilo se získat mediální odkaz." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "Žádná odpovídající média." #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" @@ -300,249 +315,266 @@ msgid "uGet Project Manager: " msgstr "Projektový manažer uGet:" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "úkoly" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Nové ze schránky" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Nové stahování" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Schránka" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Příkazová řádka" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Vyskytla se chyba" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Vyskytla se chyba během stahování." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Stahování začalo" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Začíná se stahovat fronta." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Stahování dokončeno" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Všechna stahovaní fronty byla dokončena." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Stav" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Kategorie" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Vytvořit nové stahování" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Nové _stahování..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Nová _kategorie..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Nové _hromadné ze schránky..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Nová hromadná _URL sekvence..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Nový torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Nový metalink..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Uložit veškeré nastavení" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Spustit vybrané stahování" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Pozastavit vybrané stahování" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Nastavit vlastnosti vybraného stahování" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Posunout vybrané stahování nahoru" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Posunout vybrané stahování dolů" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Posunout vybrané stahování na vrchol" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Posunout vybrané stahování na spod" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Nová kategorie" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Kopírovat - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Vlastnosti kategorie" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Vlastnosti stahování" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Nový torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Nový metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Otevřít torrent soubor" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Torrent soubor (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Otevřít soubor metalinku" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "Nepodařilo se uložit soubor kategorií." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "Nepodařilo se otevřít soubor kategorií." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Uložit soubor kategorií" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Otevřít soubor kategorií" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "JSON soubor (*.json)" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Odkaz " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Obrázek " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Textový soubor" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Importovat URL z HTML souboru" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "HTML soubor (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Importovat URL z textového souboru" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Prostý text" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Exportovat URL do textového souboru" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "URL sekvence hromadně" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Ve schránce nebyla nalezena žádná URL adresa." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Všechny URL existují." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Schránka hromadně" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Nový" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Chyba" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Zpráva" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Vybráno %d položek" @@ -572,14 +604,17 @@ msgid "Category _name:" msgstr "_Název kategorie:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Aktivní _stahování:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Kapacita dokončeného:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Kapacita koše:" @@ -604,19 +639,19 @@ #: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 msgid "Really Quit?" -msgstr "Opravdu skončit?" +msgstr "Skutečně skončit?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:65 msgid "Are you sure you want to quit?" -msgstr "Jste si jisti, že chcete skončit?" +msgstr "Opravdu chcete skončit?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:69 msgid "Really delete files?" -msgstr "Opravdu smazat soubory?" +msgstr "Skutečně smazat soubory?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:70 msgid "Are you sure you want to delete files?" -msgstr "Jste si jisti, že chcete smazat soubory?" +msgstr "Opravdu chcete soubory smazat?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:74 msgid "Really delete category?" @@ -624,7 +659,7 @@ #: ../../po/../ui-gtk/UgtkConfirmDialog.c:75 msgid "Are you sure you want to delete category?" -msgstr "Jste si jist, že chcete smazat kategorii?" +msgstr "Opravdu chcete smazat kategorii?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:109 msgid "Don't ask me again" @@ -632,7 +667,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -643,12 +678,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Soubor:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Vybrat složku" @@ -702,7 +737,7 @@ msgstr "Soubor cookie:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Vyberte soubor cookie" @@ -712,7 +747,7 @@ msgstr "Publikovat soubor:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Vyberte publikovaný soubor" @@ -749,10 +784,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -824,7 +859,8 @@ msgid "_Edit" msgstr "_Upravit" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -847,9 +883,9 @@ msgstr "Přeskočit existující URI" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Použít nastavení posledního stahování" #. --- Completion Auto-Actions --- start --- @@ -953,7 +989,7 @@ msgid "Download _Columns" msgstr "Slou_pec stahování" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Dokončeno" @@ -980,25 +1016,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Rychlost" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Rychl. odes." #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Odesláno" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Poměr" @@ -1009,13 +1045,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Přidáno" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Dokončeno" @@ -1037,7 +1073,8 @@ msgid "_Download" msgstr "_Stahování" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "_Smazat položku" @@ -1111,116 +1148,116 @@ msgid "Check for Updates" msgstr "Zkontrolovat aktualizace" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Nastavení" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Není možné spustit výchozí aplikaci pro soubor %s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - Tato složka neexistuje." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "URI existuje" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "Toto URI existuje, chcete opravdu pokračovat?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Hlavní" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Pokročilé" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Nastavení kategorie" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Výchozí pro nové stahování 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Výchozí 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "bezejmenný" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Pozastaveno" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Odesílání" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Kompletní" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "V koši" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Ve frontě" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Aktivní" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Všechny stavy" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Název" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Kompletní" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Velikost" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Čas běhu" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Zbývá" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Počet" @@ -1247,67 +1284,67 @@ msgid "Port:" msgstr "Port:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Argumenty socketu:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Element:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Po" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Út" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "St" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Čt" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Pá" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "So" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Ne" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Aktivovat plánovač" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Vypnout" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- zastavit všechny úkoly" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normální" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- spustit úkoly normálně" @@ -1366,271 +1403,306 @@ msgstr "_Označit podle filtru..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "například" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Od:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "Do:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "číslice:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "O_d:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "citlivé na velikost písmen" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Žádné wildcard(*) znaky v URL adrese." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL není platné." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Žádné znaky v položkách 'Od' nebo 'Do'." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Náhled" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Uživatelské rozhraní" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Šířka pásma" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Plánovač" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Zásuvný modul" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "Webová stránka médií" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Ostatní" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Zapnout monitor schránky" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Tichý režim" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Výchozí index kategorií" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "Přidat do Nth kategorie, pokud není žádná odpovídající kategorie." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "_Sledovat URL adresy médií na webových stránkách " + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "Monitorovat schránku pro stanovené typy souboru:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Rozdělte typy znakem '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Můžete použít regulární výrazy." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Potvrzení" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Zobrazit potvrzovací dialog při ukončení" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Potvrdit při mazání souborů" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Systémová lišta" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Vždy zobrazit ikonu v oznamovací oblasti" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Při startu minimalizovat do oznamovací oblasti" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" -msgstr "Při zavření okna minimalizovat do lišty." +msgstr "Při zavření okna minimalizovat do lišty" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Použít Ubuntu App indikátor" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Při startu aktivovat offline režim" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Signalizace startu stahování" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Zvuk po dokončení stahování" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Zobrazovat velké ikony" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." -msgstr "To bude mít vliv na všechny plug-iny." +msgstr "To bude mít vliv na všechny zásuvné moduly." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Globální limit rychlosti" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Max. rychlost odesílání" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Max. rychlost stahování" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Dokončení automatických akcí" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Vlastní příkaz:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Vlastní příkaz, když se vyskytne chyba:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "_Automatické uložení" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "minut" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Interval:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "minut" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Nastavení příkazové řádky" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Ve výchozím nastavení použít '--quiet'" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" -msgstr "Plug-in odpovídající zadání:" +msgstr "Zásuvný modul odpovídající zadání:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" -msgstr "Volby pluginu Aria2" +msgstr "Volby zásuvného modulu Aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "RPC autorizační tajný token" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Globální limit rychlosti pouze pro Aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Spustit aria2 při startu" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Vypnout aria2 po ukončení" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Spustit aria2 na lokálním zařízení" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Cesta" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Argumenty" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Po úpravě musíte uGet restartovat." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "Režim přizpůsobení médií:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Odpovídající podmínky" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Kvalita:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Typ:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Soubor" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Složka" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Položka" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Hodnota" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Kopírov_at vše" diff -Nru uget-2.0.2/po/da.po uget-2.2.2/po/da.po --- uget-2.0.2/po/da.po 2015-09-11 12:14:38.000000000 +0000 +++ uget-2.2.2/po/da.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,20 +3,20 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Filip Kemuel Dam Bartholdy , 2013 +# Filip Kemuel Dam Bartholdy , 2013,2016 +# scootergrisen, 2017 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-27 06:45+0000\n" -"Last-Translator: Michael Tunnell \n" -"Language-Team: Danish (http://www.transifex.com/projects/p/uget/language/" -"da/)\n" -"Language: da\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-10-14 17:10+0000\n" +"Last-Translator: scootergrisen\n" +"Language-Team: Danish (http://www.transifex.com/uget/uget/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -24,22 +24,19 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "Adgangskodehåndteringsdæmon: uget\n\nVed forsøg på en SSH-forbindelse til %s var der et problem med at verificere dets værtsnøgle mod den kendte og betroede værts fil fordi dens værtsnøgle ikke blev fundet.\n\nVil du gerne behandle denne forbindelse som betroet for denne og fremtidige forbindelser ved at tilføje %ss værtsnøgle til de kendte værts fil?" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" -msgstr "" +msgstr "Alle kategorier" #. UGET_EVENT_NORMAL_CUSTOM #: ../../po/../uget/UgetEvent.c:58 msgid "Connecting..." -msgstr "Forbinder..." +msgstr "Opretter forbindelse..." #. UGET_EVENT_NORMAL_CONNECT #: ../../po/../uget/UgetEvent.c:59 @@ -47,9 +44,9 @@ msgstr "Overfører..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" -msgstr "Prøv igen" +msgstr "Forsøg" #. UGET_EVENT_NORMAL_RETRY, #: ../../po/../uget/UgetEvent.c:61 @@ -57,9 +54,9 @@ msgstr "Download fuldført" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" -msgstr "Afsluttet" +msgstr "Færdige" #. UGET_EVENT_NORMAL_FINISH, #. resumable @@ -68,14 +65,14 @@ msgstr "Genoptagelig" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Ikke genoptagelig" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." -msgstr "Outout-filen kan ikke omdøbes." +msgstr "Outputfilen kan ikke omdøbes." #. UGET_EVENT_ERROR_CUSTOM #: ../../po/../uget/UgetEvent.c:81 @@ -83,15 +80,14 @@ msgstr "kunne ikke oprette forbindelse til vært." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Mappe kan ikke oprettes." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:83 msgid "File can't be created (bad filename or file exist)." -msgstr "" -"Fil kan ikke oprettes (dårligt filnavn eller filen eksisterer allerede)." +msgstr "Fil kan ikke oprettes (ugyldigt filnavn eller filen findes allerede)." #. UGET_EVENT_ERROR_FILE_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:84 @@ -101,28 +97,27 @@ #. UGET_EVENT_ERROR_FILE_OPEN_FAILED #: ../../po/../uget/UgetEvent.c:85 msgid "Unable to create thread." -msgstr "" +msgstr "Kan ikke oprette tråd." #. UGET_EVENT_ERROR_THREAD_CREATE_FAILED, #: ../../po/../uget/UgetEvent.c:86 msgid "Incorrect source (different file size)." -msgstr "" +msgstr "Forkert kilde (forskellig filstørrelse)." #. UGET_EVENT_ERROR_INCORRECT_SOURCE, #: ../../po/../uget/UgetEvent.c:87 msgid "Out of resource (disk full or run out of memory)." -msgstr "" -"Ikke flere ressourcer (disken er fyldt eller er løbet tør for hukommelse)." +msgstr "Ikke flere ressourcer (disken er fyldt eller er løbet tør for hukommelse)." #. UGET_EVENT_ERROR_OUT_OF_RESOURCE #: ../../po/../uget/UgetEvent.c:88 msgid "No output file." -msgstr "Ingen output-fil." +msgstr "Ingen outputfil." #. UGET_EVENT_ERROR_NO_OUTPUT_FILE #: ../../po/../uget/UgetEvent.c:89 msgid "No output setting." -msgstr "Ingen output indstilling." +msgstr "Ingen outputindstilling." #. UGET_EVENT_ERROR_NO_OUTPUT_SETTING #: ../../po/../uget/UgetEvent.c:90 @@ -142,140 +137,164 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "postfil ikke fundet." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "cookiefil ikke fundet." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Denne video er blevet fjernet." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Der opstod fejl under hentning af videoinfo." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Der opstod fejl under hentning af videoens webside." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "Ingen video_id fundet i YouTube-URL." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." -msgstr "" +msgstr "aria2: der opstod en ukendt fejl." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." -msgstr "" +msgstr "aria2: fik timeout." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." -msgstr "" +msgstr "aria2: ressource blev ikke fundet." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" +msgstr "aria2 så det angivne antal af fejlen 'ressource ikke fundet'. Se tilvalget --max-file-not-found" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." -msgstr "" +msgstr "aria2: hastighed var for langsom." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." -msgstr "" +msgstr "aria2: der opstod et netværksproblem." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." -msgstr "" +msgstr "aria2: ufærdige downloads." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" -msgstr "" +msgstr "Ikke flere ressourcer" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." -msgstr "" +msgstr "aria2: stykkelængde var ikke som den i .aria2-kontrolfilen." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." -msgstr "" +msgstr "aria2 downloadede samme fil." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." -msgstr "" +msgstr "aria2 downloadede samme infohash-torrent." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." -msgstr "" +msgstr "aria2: filen findes allerede. Se tilvalget --allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." -msgstr "" +msgstr "aria2: kunne ikke åbne eksisterende fil." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." -msgstr "" +msgstr "aria2: kunne ikke oprette ny fil eller afkorte eksisterende fil." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." -msgstr "" +msgstr "aria2: der opstod fil-I/O-fejl." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." -msgstr "" +msgstr "aria2: navneoversættelse mislykkedes." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." -msgstr "" +msgstr "aria2: kunne ikke fortolke metalink-dokument." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." -msgstr "" +msgstr "aria2: FTP-kommando mislykkedes." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." -msgstr "" +msgstr "aria2: HTTP-svar-header var ugyldigt eller uventet." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "For mange videresendelser." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." -msgstr "" +msgstr "aria2: HTTP-godkendelse mislykkedes." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." -msgstr "" +msgstr "aria2: kunne ikke fortolke kodet fil (typisk .torrentfil)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." -msgstr "" +msgstr "aria2: torrentfil var ødelagt eller manglede information." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." -msgstr "" +msgstr "aria2: Magnet-URI var ugyldigt." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" +msgstr "aria2: ugyldigt/ikke-genkendt tilvalg blev givet eller uventet tilvalgsargument blev givet." -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." -msgstr "" +msgstr "aria2: fjern-serveren kunnen ikke håndtere anmodningen." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." -msgstr "" +msgstr "aria2: kunne ikke fortolke JSON-RPC-anmodning." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" -msgstr "" +msgstr "Intet svar. Er aria2 stoppet?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." -msgstr "" +msgstr "aria2: gid blev fjernet." + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Kunne ikke hente medielink." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "Intet matchet medie." #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" @@ -283,272 +302,288 @@ #: ../../po/../ui-gtk/UgtkAboutDialog.c:48 msgid "translator-credits" -msgstr "Filip Kemuel (kemuel.dk)" +msgstr "Filip Kemuel (kemuel.dk)\nscootergrisen" #: ../../po/../ui-gtk/UgtkAboutDialog.c:80 msgid "uGet Founder: " -msgstr "" +msgstr "uGet grundlægger: " #: ../../po/../ui-gtk/UgtkAboutDialog.c:81 msgid "uGet Project Manager: " -msgstr "" +msgstr "uGet projektmanager: " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "opgaver" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" -msgstr "Ny fra udkipsholder" +msgstr "Ny fra udklipsholder" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" -msgstr "Nyt download" +msgstr "Ny download" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Udklipsholder" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Kommandolinje" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" -msgstr "" +msgstr "Der opstod fejl" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." -msgstr "" +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." +msgstr "Der opstod fejl under download." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Download starter" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." -msgstr "Starter download kø." +msgstr "Starter downloadkø." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Download fuldført" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Alle downloads i køen er fuldførte." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Status" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Kategori" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" -msgstr "Opret nyt download" +msgstr "Opret ny download" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." -msgstr "Nyt _download..." +msgstr "Ny _download..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." -msgstr "Ny _Kategori..." +msgstr "Ny _kategori..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." -msgstr "Nyt udklipsholder-_batch" +msgstr "Ny udklipsholder_batch..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." -msgstr "Ny _URL batch sekvens..." +msgstr "Ny _URL-sekvensbatch..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Ny torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Nyt metalink..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" -msgstr "" +msgstr "Gem alle indstillinger" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" -msgstr "Sæt valgte download igang" +msgstr "Sæt valgte download kørende" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Sæt valgte download på pause" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" -msgstr "Indstil egenskaber for valgte download" +msgstr "Sæt egenskaber for valgte download" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Flyt valgte download op" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Flyt valgte download ned" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" -msgstr "Flyt valgte download til toppen" +msgstr "Flyt valgte download øverst" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" -msgstr "Flyt valgte download til bunden" +msgstr "Flyt valgte download nederst" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Ny kategori" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " -msgstr "Kopier -" +msgstr "Kopier - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" -msgstr "Kategori egenskaber" +msgstr "Kategoriegenskaber" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" -msgstr "Download egenskaber." +msgstr "Downloadegenskaber" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Ny torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Nyt metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" -msgstr "Åbn torrent-fil" +msgstr "Åbn torrentfil" + +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Torrentfil (*.torrent)" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" -msgstr "Åbn metalink-fil" +msgstr "Åbn metalinkfil" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." -msgstr "" +msgstr "Kunne ikke gemme kategorifil." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." -msgstr "" +msgstr "Kunne ikke indlæse kategorifil." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" -msgstr "" +msgstr "Gem kategorifil" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" -msgstr "" +msgstr "Åbn kategorifil" + +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "JSON-fil (*.json)" #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Link " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Billede " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" -msgstr "Tekst-fil" +msgstr "Tekstfil" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Importér URL'er fra HTML-fil" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "HTML-fil (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" -msgstr "Importér URL'er fra tekst-fil" +msgstr "Importér URL'er fra tekstfil" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Ren tekstfil" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" -msgstr "" +msgstr "Eksportér URL'er til tekstfil" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" -msgstr "URL batch-sekvens" +msgstr "URL-sekvensbatch" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Ingen URL'er fundet i udklipsholderen." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." -msgstr "" +msgstr "Alle URL'er findes." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Udklipsholderbatch" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" -msgstr "" +msgstr "Ny" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Fejl" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Besked" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" -msgstr "Valgt %d elementer" +msgstr "%d elementer valgt" #: ../../po/../ui-gtk/UgtkBanner.c:145 ../../po/../ui-gtk/UgtkBanner.c:165 msgid "Attention uGetters:" -msgstr "Hallo uGetters:" +msgstr "Hallo uGettere:" #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"vi kører en Donations kampagne for uGet's fortsatte udvikling, klik venligst" +msgstr "vi kører en donationskampagne for uGets fremtidige udvikling, klik venligst " #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -560,20 +595,23 @@ #: ../../po/../ui-gtk/UgtkBanner.c:171 msgid "click here to take survey" -msgstr "klik her for at udfylde undersøgelsen" +msgstr "klik her for at deltage i undersøgelsen" #: ../../po/../ui-gtk/UgtkCategoryForm.c:62 msgid "Category _name:" -msgstr "Kategori _navn:" +msgstr "Kategori_navn:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Aktive _downloads:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" -msgstr "Kapacitiet af fuldførte:" +msgstr "Kapacitet af færdige:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Kapacitet af papirkurv:" @@ -582,67 +620,67 @@ #. URI Matching conditions #: ../../po/../ui-gtk/UgtkCategoryForm.c:111 msgid "URI Matching conditions" -msgstr "" +msgstr "URI matchende betingelser" #: ../../po/../ui-gtk/UgtkCategoryForm.c:118 msgid "Matched _Hosts:" -msgstr "" +msgstr "Matchede _værter:" #: ../../po/../ui-gtk/UgtkCategoryForm.c:129 msgid "Matched _Schemes:" -msgstr "" +msgstr "Matchede _skemaer:" #: ../../po/../ui-gtk/UgtkCategoryForm.c:140 msgid "Matched _Types:" -msgstr "" +msgstr "Matchede _typer:" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 msgid "Really Quit?" -msgstr "Vil du afslutte?" +msgstr "Vil du virkelig afslutte?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:65 msgid "Are you sure you want to quit?" -msgstr "Er du sikker på du vil afslutte?" +msgstr "Er du sikker på, at du vil afslutte?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:69 msgid "Really delete files?" -msgstr "Vil du virkelig slette filer?" +msgstr "Vil du virkelig slette filerne?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:70 msgid "Are you sure you want to delete files?" -msgstr "Er du sikker på at du vil slette filer?" +msgstr "Er du sikker på, at du vil slette filerne?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:74 msgid "Really delete category?" -msgstr "" +msgstr "Vil du virkelig slette kategorien?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:75 msgid "Are you sure you want to delete category?" -msgstr "" +msgstr "Er du sikker på, at du vil slette kategorien?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:109 msgid "Don't ask me again" -msgstr "" +msgstr "Spørg mig ikke igen" #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" -msgstr "" +msgstr "_URI:" #. Mirrors - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:130 msgid "Mirrors:" -msgstr "Mirrors:" +msgstr "Spejle:" #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Fil:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Vælg mappe" @@ -654,17 +692,17 @@ #. Referrer - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:189 msgid "Referrer:" -msgstr "Henvist fra:" +msgstr "Henviser:" #. "Max Connections:" - title label #: ../../po/../ui-gtk/UgtkDownloadForm.c:212 msgid "_Max Connections:" -msgstr "" +msgstr "_Maks. forbindelser:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:230 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 msgid "_Runnable" -msgstr "A_ktiv" +msgstr "_Kørende" #: ../../po/../ui-gtk/UgtkDownloadForm.c:232 msgid "P_ause" @@ -674,7 +712,7 @@ #. frame for login #: ../../po/../ui-gtk/UgtkDownloadForm.c:238 msgid "Login" -msgstr "Log ind" +msgstr "Login" #. User - label #. user label & entry @@ -688,27 +726,27 @@ #: ../../po/../ui-gtk/UgtkDownloadForm.c:268 #: ../../po/../ui-gtk/UgtkProxyForm.c:160 msgid "Password:" -msgstr "Kode:" +msgstr "Adgangskode:" #. label - cookie file #: ../../po/../ui-gtk/UgtkDownloadForm.c:293 msgid "Cookie file:" -msgstr "Cookie-fil:" +msgstr "Cookiefil:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" -msgstr "Vælg cookie-fil" +msgstr "Vælg cookiefil" #. label - post file #: ../../po/../ui-gtk/UgtkDownloadForm.c:319 msgid "Post file:" -msgstr "Post-fil:" +msgstr "Postfil:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" -msgstr "Vælg en Post-fil" +msgstr "Vælg postfil" #. label - user agent #: ../../po/../ui-gtk/UgtkDownloadForm.c:346 @@ -718,7 +756,7 @@ #. Retry limit - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:362 msgid "Retry _limit:" -msgstr "Gentag gr_ænse:" +msgstr "Forsøgsgr_ænse:" #. counts - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:377 @@ -728,7 +766,7 @@ #. Retry delay - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:384 msgid "Retry _delay:" -msgstr "Gentag p_ause:" +msgstr "Forsøgs_forsinkelse:" #. seconds - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:399 @@ -738,22 +776,22 @@ #. label - Max upload speed #: ../../po/../ui-gtk/UgtkDownloadForm.c:406 msgid "Max upload speed:" -msgstr "Maks upload hastighed:" +msgstr "Maks. uploadhastighed:" #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" #. label - Max download speed #: ../../po/../ui-gtk/UgtkDownloadForm.c:424 msgid "Max download speed:" -msgstr "Maks download hastighed:" +msgstr "Maks. downloadhastighed:" #. Retrieve timestamp #: ../../po/../ui-gtk/UgtkDownloadForm.c:442 @@ -762,124 +800,125 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:51 msgid "_File" -msgstr "_Filer" +msgstr "_Fil" #. Batch Downloads --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:94 msgid "_Batch Downloads" -msgstr "_Batch downloads" +msgstr "_Batchdownloads" #. Batch downloads - Clipboard batch #: ../../po/../ui-gtk/UgtkMenubar-ui.c:100 msgid "_Clipboard batch..." -msgstr "Udklipsholder _batch..." +msgstr "Udklipsholder_batch..." #. Batch downloads - URL Sequence batch #: ../../po/../ui-gtk/UgtkMenubar-ui.c:110 msgid "_URL Sequence batch..." -msgstr "_URL batch sekvens..." +msgstr "_URL-sekvensbatch..." #. Batch downloads - Text file import (.txt) #: ../../po/../ui-gtk/UgtkMenubar-ui.c:120 msgid "_Text file import (.txt)..." -msgstr "_Tekst-fil import (.txt)..." +msgstr "_Tekstfilimport (.txt)..." #. Batch downloads - HTML file import (.html) #: ../../po/../ui-gtk/UgtkMenubar-ui.c:130 msgid "_HTML file import (.html)..." -msgstr "_HTML-fil import (.html)..." +msgstr "_HTML-filimport (.html)..." #. Batch downloads - Export to Text file (.txt) #: ../../po/../ui-gtk/UgtkMenubar-ui.c:142 msgid "_Export to Text file (.txt)..." -msgstr "_Eksporter til tekst-fil (.txt)..." +msgstr "_Eksportér til tekstfil (.txt)..." #. Open Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 msgid "_Open category..." -msgstr "" +msgstr "_Åbn kategori..." #. Save Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 msgid "_Save category as..." -msgstr "" +msgstr "_Gem kategori som..." #. Save All #: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 msgid "Save _all settings" -msgstr "" +msgstr "Gem _alle indstillinger" #. Offline mode #: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 msgid "Offline Mode" -msgstr "" +msgstr "Offlinetilstand" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 msgid "_Edit" msgstr "_Rediger" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 msgid "Clipboard _Monitor" -msgstr "Udklipsholder _Overvåger" +msgstr "_Overvågning af udklipsholder" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 #: ../../po/../ui-gtk/UgtkTrayIcon.c:103 msgid "Clipboard works quietly" -msgstr "" +msgstr "Udklipsholder arbejder stille" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:107 msgid "Command-line works quietly" -msgstr "" +msgstr "Kommandolinje arbejder stille" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 #: ../../po/../ui-gtk/UgtkTrayIcon.c:111 msgid "Skip existing URI" -msgstr "" +msgstr "Spring eksisterende URI over" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Anvend seneste downloadindstillinger" #. --- Completion Auto-Actions --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 msgid "Completion _Auto-Actions" -msgstr "" +msgstr "_Automatiske handlinger ved fuldførelse" #. Completion Auto-Actions - Disable #: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 msgid "_Disable" -msgstr "" +msgstr "_Deaktivér" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 msgid "Hibernate" -msgstr "" +msgstr "Dvale" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 msgid "Suspend" -msgstr "" +msgstr "Hvile" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 msgid "Shutdown" -msgstr "" +msgstr "Luk ned" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 msgid "Reboot" -msgstr "" +msgstr "Genstart" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 msgid "Custom" -msgstr "" +msgstr "Tilpasset" #. Completion Auto-Actions - Remember #: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 msgid "Remember setting" -msgstr "" +msgstr "Husk indstilling" #. Completion Auto-Actions - Help #: ../../po/../ui-gtk/UgtkMenubar-ui.c:279 @@ -893,7 +932,7 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:285 #: ../../po/../ui-gtk/UgtkTrayIcon.c:122 msgid "_Settings..." -msgstr "Ind_stillinger..." +msgstr "_Indstillinger..." #: ../../po/../ui-gtk/UgtkMenubar-ui.c:304 msgid "_View" @@ -901,20 +940,20 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:308 msgid "_Toolbar" -msgstr "Værk_tøjslinje" +msgstr "_Værktøjslinje" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:313 msgid "Statusbar" -msgstr "Statusbar" +msgstr "Statuslinje" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:323 msgid "_Summary" -msgstr "Op_summering" +msgstr "_Opsummering" #. Summary Items --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:331 msgid "Summary _Items" -msgstr "Opsummer_ings elementer" +msgstr "Opsummerings_elementer" #. Summary Items - Name #: ../../po/../ui-gtk/UgtkMenubar-ui.c:336 @@ -945,9 +984,9 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:376 msgid "Download _Columns" -msgstr "Download _kolonner" +msgstr "Download_kolonner" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Fuldført" @@ -974,42 +1013,42 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Hastighed" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" -msgstr "Hastighed op" +msgstr "Ophastighed" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" -msgstr "Uploaded" +msgstr "Uploadet" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" -msgstr "Ratio" +msgstr "Forhold" #. Download Columns - Retry #: ../../po/../ui-gtk/UgtkMenubar-ui.c:426 msgid "_Retry" -msgstr "P_røv igen" +msgstr "_Forsøg" #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Tilføjet den" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Fuldført den" @@ -1020,33 +1059,34 @@ #. New Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:466 msgid "_New Category..." -msgstr "_Ny Kategori..." +msgstr "_Ny kategori..." #. Delete Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:476 msgid "_Delete Category" -msgstr "_Slet Kategori" +msgstr "_Slet kategori" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:517 msgid "_Download" msgstr "_Download" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" -msgstr "" +msgstr "_Slet post" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 msgid "Delete Entry and _File" -msgstr "" +msgstr "Slet post og _fil" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 msgid "Open _Containing folder" -msgstr "" +msgstr "Åbn _indeholdende mappe" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 msgid "Force Start" -msgstr "Tving start" +msgstr "Gennemtving start" #. Move to --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:596 @@ -1056,19 +1096,19 @@ #. Priority --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:645 msgid "Priority" -msgstr "" +msgstr "Prioritet" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:654 msgid "_High" -msgstr "" +msgstr "_Høj" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:659 msgid "_Normal" -msgstr "" +msgstr "_Normal" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:664 msgid "_Low" -msgstr "" +msgstr "_Lav" #. Get Help Online #: ../../po/../ui-gtk/UgtkMenubar-ui.c:687 @@ -1083,7 +1123,7 @@ #. Support Forum #: ../../po/../ui-gtk/UgtkMenubar-ui.c:709 msgid "Support Forum" -msgstr "Support forum" +msgstr "Supportforum" #. Submit Feedback #: ../../po/../ui-gtk/UgtkMenubar-ui.c:720 @@ -1093,128 +1133,128 @@ #. Report a Bug #: ../../po/../ui-gtk/UgtkMenubar-ui.c:731 msgid "Report a Bug" -msgstr "Rapporter en fejl" +msgstr "Rapportér en fejl" #. Keyboard Shortcuts #: ../../po/../ui-gtk/UgtkMenubar-ui.c:742 msgid "Keyboard Shortcuts" -msgstr "" +msgstr "Tastaturgenveje" #. Check for Updates #: ../../po/../ui-gtk/UgtkMenubar-ui.c:749 msgid "Check for Updates" -msgstr "Tjek for opdateringer" +msgstr "Søg efter opdateringer" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Indstillinger" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." -msgstr "Kan ikke åbne standard-program for filen '%s'." +msgstr "Kan ikke åbne standardprogram for filen '%s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." -msgstr "'%s' - Denne mappe eksisterer ikke." +msgstr "'%s' - Denne mappe findes ikke." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" -msgstr "" +msgstr "URI findes" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" -msgstr "" +msgstr "Denne URI findes. Er du sikker på, at du vil fortsætte?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Generelt" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" -msgstr "Advanceret" +msgstr "Avanceret" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" -msgstr "Kategori indstillinger" +msgstr "Kategoriindstillinger" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" -msgstr "Standard for nyt download 1" +msgstr "Standard for ny download 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Standard 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "unavngivet" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" -msgstr "" +msgstr "Sat på pause" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" -msgstr "" +msgstr "Uploader" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" -msgstr "" +msgstr "Fuldført" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Papirkurv" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "I kø" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Aktive" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" -msgstr "" +msgstr "Al status" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Navn" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Fuldført" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Størrelse" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Forløbet" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Tilbage" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" -msgstr "" +msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Mængde" @@ -1241,69 +1281,69 @@ msgid "Port:" msgstr "Port:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Socket args:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Element:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Man" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" -msgstr "Tir" +msgstr "Tirs" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Ons" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" -msgstr "Tor" +msgstr "Tors" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Fre" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Lør" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Søn" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" -msgstr "Aktiv_er planlægger " +msgstr "_Aktivér planlægger" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Slå fra" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- stop alle opgaver" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normal" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" -msgstr "- kør opgave normalt" +msgstr "- kør opgaver normalt" #: ../../po/../ui-gtk/UgtkSelector.c:254 msgid "All" @@ -1315,15 +1355,15 @@ #: ../../po/../ui-gtk/UgtkSelector.c:276 msgid "Mark by filter" -msgstr "Marker efter filter" +msgstr "Mærk efter filter" #: ../../po/../ui-gtk/UgtkSelector.c:294 msgid "Mark URLs by host AND filename extension." -msgstr "Marker URL'er efter vært OG filendelse." +msgstr "Mærk URL'er efter vært OG filnavnendelse." #: ../../po/../ui-gtk/UgtkSelector.c:297 msgid "This will reset all marks of URLs." -msgstr "Dette vil gendanne alle URL'ers markeringer." +msgstr "Dette vil gendanne alle mærker for URL'er." #. filter view ----------------------- #. left side @@ -1342,291 +1382,326 @@ #: ../../po/../ui-gtk/UgtkSelector.c:781 msgid "Base hypertext reference" -msgstr "Hypertekst grund reference" +msgstr "Base hypertekst-reference" #. select all #: ../../po/../ui-gtk/UgtkSelector.c:797 msgid "Mark _All" -msgstr "Maker _Alle" +msgstr "Mærk _alle" #. select none #: ../../po/../ui-gtk/UgtkSelector.c:801 msgid "Mark _None" -msgstr "Marker I_ngen" +msgstr "Mærk _ingen" #. select by filter #: ../../po/../ui-gtk/UgtkSelector.c:805 msgid "_Mark by filter..." -msgstr "_Marker efter filter..." +msgstr "_Mærk efter filter..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "f.eks." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Fra:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "Til:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "cifre:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "F_ra:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" -msgstr "forskel på små/store bogstaver" +msgstr "forskel på store og små bogstaver" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." -msgstr "Ingen jokertegn(*) i URL'en." +msgstr "Ingen jokertegn(*) i URL-post." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL'en er ugyldig." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." -msgstr "Ingen tegn i 'Fra' eller 'Til' felterne." +msgstr "Ingen tegn i 'Fra'- eller 'Til'-post." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" -msgstr "Afprøv" +msgstr "Forhåndsvisning" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" -msgstr "" +msgstr "Brugergrænseflade" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" -msgstr "" +msgstr "Båndbredde" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Planlægger" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Plugin" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "Mediets websted" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" -msgstr "Andre" +msgstr "Andet" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" -msgstr "" +msgstr "_Aktivér overvågning af udklipsholder" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" -msgstr "St_ille tilstand" +msgstr "_Stilletilstand" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" -msgstr "" +msgstr "Standardkategoriindeks" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." -msgstr "" +msgstr "Tilføjer til Nth kategori hvis ingen kategori matcher." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "_Overvåg mediewebstedets URL" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" -msgstr "" +msgstr "Overvåg udklipsholder for angivne filtyper:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Adskil typerne med tegnet '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." -msgstr "Du kan bruge regulære udtryk her." +msgstr "Her kan du bruge regulære udtryk." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" -msgstr "" +msgstr "Bekræftelse" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" -msgstr "" +msgstr "Vis bekræftelsesdialog ved afslutning" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Bekræft ved sletning af filer" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" -msgstr "" +msgstr "Systembakke" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" -msgstr "Vis altid systembakke-ikon" +msgstr "Vis altid systembakkeikon" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Minimer til systembakke ved opstart" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" -msgstr "" +msgstr "Luk til bakke når vindue lukkes" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" -msgstr "" +msgstr "Brug Ubuntus appindikator" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" -msgstr "Aktiver offline tilstand ved opstart" +msgstr "Aktivér offlinetilstand ved opstart" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" -msgstr "Download-start meddelelse" +msgstr "Download startsnotifikation" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" -msgstr "Lyd når download er fuldført" +msgstr "Lyd når download er færdig" + +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Vis stort ikon" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." -msgstr "" +msgstr "Dette påvirker alle plugins." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" -msgstr "" +msgstr "Global hastighedsbegrænsning" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" -msgstr "" +msgstr "Maks. uploadhastighed" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" -msgstr "" +msgstr "Maks. downloadhastighed" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" -msgstr "" +msgstr "Automatiske handlinger ved fuldførelse" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" -msgstr "" +msgstr "Tilpasset kommando:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" -msgstr "" +msgstr "Tilpasset kommando hvis der opstår fejl:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" -msgstr "" - -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "minutter" +msgstr "Gem _automatisk" -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Interval:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "minutter" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" -msgstr "Kommandolinje indstillinger" +msgstr "Kommandolinjeindstillinger" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Brug '--quiet' som standard" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" -msgstr "" +msgstr "Plugin som matcher rækkefølge:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" -msgstr "" +msgstr "Valgmuligheder for aria2-plugin" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" -msgstr "" +msgstr "RPC-godkendelse hemmelig token" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" -msgstr "" +msgstr "Global hastighedsbegrænsning kun for aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Åbn aria2 ved opstart" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" -msgstr "Luk aria2 ned ved af_slutning" +msgstr "_Stop aria2 ved afslutning" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" -msgstr "" +msgstr "Start aria2 på lokal enhed" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Sti" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Argumenter" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." -msgstr "" +msgstr "Du skal genstarte uGet efter den er blevet ændret." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "Matchtilstand for medie:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Matchbetingelser" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Kvalitet:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Type:" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Fil" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Mappe" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Element" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Værdi" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" -msgstr "Kopier _alle" +msgstr "Kopiér _alle" #. Show window #: ../../po/../ui-gtk/UgtkTrayIcon.c:141 @@ -1636,4 +1711,4 @@ #. Offline mode #: ../../po/../ui-gtk/UgtkTrayIcon.c:147 msgid "_Offline Mode" -msgstr "_Offline tilstand" +msgstr "_Offlinetilstand" diff -Nru uget-2.0.2/po/de.po uget-2.2.2/po/de.po --- uget-2.0.2/po/de.po 2015-09-11 12:14:38.000000000 +0000 +++ uget-2.2.2/po/de.po 2019-05-19 16:49:06.000000000 +0000 @@ -4,20 +4,19 @@ # # Translators: # Michael Tunnell , 2013 -# Raphael Groner , 2013-2014 -# Tobias Bannert , 2015 +# Tobias Bannert , 2016-2017 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-08-18 16:06+0000\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-09-22 23:51+0000\n" "Last-Translator: Tobias Bannert \n" "Language-Team: German (http://www.transifex.com/uget/uget/language/de/)\n" -"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -25,15 +24,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "Passwortverwaltungsdienst: uget\n\nBeim Versuch, eine SSH-Verbindung zu %s aufzubauen gab es ein Problem beim Überprüfen des Rechnerschlüssels gegen die bekannte und vertrauenswürdige Hosts-Datei, da der Rechnerschlüssel nicht gefunden wurde.\n\nMöchten Sie diese Verbindung als vertrauenswürdig für diese und zukünftige Verbindungen behandeln, indem Sie den Rechnerschlüssel von %s zu der bekannten Hosts-Datei hinzufügen?" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Alle Kategorien" @@ -48,7 +44,7 @@ msgstr "Übertragung läuft …" #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Wiederholen" @@ -58,9 +54,9 @@ msgstr "Übertragung vollständig" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" -msgstr "Fertig" +msgstr "Fertiggestellt" #. UGET_EVENT_NORMAL_FINISH, #. resumable @@ -69,12 +65,12 @@ msgstr "Fortsetzbar" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Nicht fortsetzbar" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Ausgabedatei kann nicht umbenannt werden." @@ -84,16 +80,14 @@ msgstr "Verbindung zum Anbieter kann nicht hergestellt werden." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Ordner kann nicht erstellt werden." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:83 msgid "File can't be created (bad filename or file exist)." -msgstr "" -"Datei kann nicht erstellt werden (unzulässiger Dateiname oder Datei " -"vorhanden)." +msgstr "Datei kann nicht erstellt werden (unzulässiger Dateiname oder Datei vorhanden)." #. UGET_EVENT_ERROR_FILE_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:84 @@ -143,156 +137,172 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "Veröffentlichungsdatei nicht gefunden." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "Profildatei nicht gefunden." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Dieses Video wurde entfernt." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Es ist ein Fehler beim Erhalt der Videoinformation aufgetreten." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Es ist ein Fehler beim Erhalt der Videointernetseite aufgetreten." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "In der YouTube-Adresse wurde keine Videokennung (video_id) gefunden." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: unbekannter Fehler aufgetreten." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: Zeit abgelaufen." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: Quelle wurde nicht gefunden." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 sah die bestimmte Zahl des Fehlers »Quelle nicht gefunden«. Siehe " -"Option --max-file-not-found" +msgstr "aria2 sah die bestimmte Zahl des Fehlers »Quelle nicht gefunden«. Siehe Option --max-file-not-found" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: Geschwindigkeit war zu langsam." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: Netzwerkproblem aufgetreten." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: Unvollständige Übertragungen." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Kein Speicherplatz verfügbar" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "aria2: Teillänge war unterschiedlich zu einer .aria2-Steuerdatei." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 hat die selbe Datei heruntergeladen." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 hat den selben Info-Hash-Torrent heruntergeladen." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: Datei ist bereits vorhanden. Siehe Option --allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: Vorhandene Datei kann nicht geöffnet werden." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." -msgstr "" -"aria2: Neue Datei konnte nicht erstellt oder vorhandene Datei gekürzt werden." +msgstr "aria2: Neue Datei konnte nicht erstellt oder vorhandene Datei gekürzt werden." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: Datei-E/A-Fehler ist aufgetreten." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: Namensauflösung ist fehlgeschlagen." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: Metalink-Dokument konnte nicht analysiert werden." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: FTP-Befehl ist fehlgeschlagen." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: HTTP-Antwortkopfzeile war fehlerhaft oder unerwartet." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Zu viele Umleitungen." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: HTTP-Legitimierung ist fehlgeschlagen." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." -msgstr "" -"aria2: Bencoded-Datei (normalerweise .torrent-Datei) konnte nicht analysiert " -"werden." +msgstr "aria2: Bencoded-Datei (normalerweise .torrent-Datei) konnte nicht analysiert werden." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: Torrent-Datei ist beschädigt oder es fehlen Informationen." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: Magnet-Adresse ist fehlerhaft." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" -"aria2: schlechte oder nicht erkannte Option oder unerwartetes " -"Optionsargument angegeben." +msgstr "aria2: schlechte oder nicht erkannte Option oder unerwartetes Optionsargument angegeben." -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." -msgstr "" -"aria2: Entfernter Server war nicht in der Lage die Anfrage zu verarbeiten." +msgstr "aria2: Entfernter Server war nicht in der Lage die Anfrage zu verarbeiten." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: JSON-RPC-Anfrage konnte nicht analysiert werden." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Keine Antwort. Ist aria2 herunterfahren?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2: GID wurde entfernt." +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Erhalt der Medienverknüpfung ist fehlgeschlagen." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "Keine übereinstimmenden Medien." + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Übertragungsverwaltung" #: ../../po/../ui-gtk/UgtkAboutDialog.c:48 msgid "translator-credits" -msgstr "Übersetzerdanksagungen" +msgstr "Michael Tunnell\nRaphael Groner\nTobias Bannert" #: ../../po/../ui-gtk/UgtkAboutDialog.c:80 msgid "uGet Founder: " @@ -302,249 +312,266 @@ msgid "uGet Project Manager: " msgstr "uGet-Projektverwaltung: " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "Aufgaben" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Neu aus Zwischenablage" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Neue Übertragung" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Zwischenablage" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Befehlszeile" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Fehler aufgetreten" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Es ist ein Fehler beim Herunterladen aufgetreten." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Übertragung beginnt" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Herunterladewarteschlange wird abgearbeitet" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" -msgstr "Herunterladen abgeschlossen" +msgstr "Übertragung vollständig" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Alle Übertragungen in der Warteschlange wurden fertiggestellt." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Status" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Kategorie" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Neue Übertragung erstellen" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." -msgstr "Neue _Übertragung …" +msgstr "_Neue Übertragung …" #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Neue _Kategorie …" #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Neue Zwischenablage a_barbeiten …" #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Neue _Adressreihenfolge abarbeiten …" #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Neuer Torrent …" #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Neuer Metalink …" -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Alle Einstellungen speichern" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Ausgewählte Übertragung ausführen" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Ausgewählte Übertragung anhalten" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Ausgewählten Übertragungseigenschaften einstellen" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Markierte Übertragung hoch schieben" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Markierte Übertragung runter schieben" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Markierte Übertragung zum Anfang schieben" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Markierte Übertragung zum Ende schieben" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Neue Kategorie" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Kopieren - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Kategorieeigenschaften" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Übertragungseigenschaften" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Neuer Torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Neuer Metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Torrent-Datei öffnen" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Torrent-Datei (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Metalink-Datei öffnen" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." -msgstr "Kategoriedatei konnte nicht gespeichert werden." +msgstr "Speichern der Kategoriedatei ist fehlgeschlagen." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." -msgstr "Kategoriedatei konnte nicht geladen werden." +msgstr "Laden der Kategoriedatei ist fehlgeschlagen." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Kategoriedatei speichern" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Kategoriedatei öffnen" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "JSON-Datei (*.json)" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Verweis " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Bild " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Textdatei" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Adressen aus HTML-Datei importieren" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "HTML-Datei (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Adressen aus Textdatei importieren" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Einfache Textdatei" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Adressen in Textdatei exportieren" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Adressreihenfolge abarbeiten" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Keine Adressen in Zwischenablage gefunden." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Alle Adressen bestehen." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Zwischenablage abarbeiten" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Neu" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Fehler" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Meldung" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "%d Einträge markiert" @@ -556,9 +583,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"Wir betreiben eine Spendenaktion für uGets zukünftige Entwicklung, bitte " -"klicken: " +msgstr "Wir betreiben eine Spendenaktion für uGets zukünftige Entwicklung, bitte klicken: " #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -566,24 +591,27 @@ #: ../../po/../ui-gtk/UgtkBanner.c:168 msgid "please fill out this quick User Survey for uGet." -msgstr "bitte diese schnelle Benutzerumfrage für uGet ausfüllen." +msgstr "bitte diese kurze Benutzerumfrage über uGet ausfüllen." #: ../../po/../ui-gtk/UgtkBanner.c:171 msgid "click here to take survey" -msgstr "hier klicken für Teilnahme an Umfrage" +msgstr "Bitte hier klicken, um an der Umfrage teilzunehmen." #: ../../po/../ui-gtk/UgtkCategoryForm.c:62 msgid "Category _name:" msgstr "_Kategoriename:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "A_ktive Übertragungen:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "A_nzahl Fertiggestellter:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "An_zahl Gelöschter:" @@ -636,7 +664,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "A_dresse:" @@ -647,12 +675,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Datei:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Ordner wählen" @@ -706,7 +734,7 @@ msgstr "Profildatei (Cookie):" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Profildatei (Cookie) auswählen" @@ -716,7 +744,7 @@ msgstr "Sendedatei:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Sendedatei auswählen" @@ -753,10 +781,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -828,7 +856,8 @@ msgid "_Edit" msgstr "_Bearbeiten" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -851,9 +880,9 @@ msgstr "Vorhandene Adresse überspringen" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Letzte Übertragungeinstellungen übernehmen" #. --- Completion Auto-Actions --- start --- @@ -957,7 +986,7 @@ msgid "Download _Columns" msgstr "Übertragung_spalten" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Vollständig" @@ -984,25 +1013,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Geschwindigkeit" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Hochladegeschwindigkeit" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Hochgeladen" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Verhältnis" @@ -1013,13 +1042,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Hinzugefügt" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Vervollständigt" @@ -1041,7 +1070,8 @@ msgid "_Download" msgstr "_Herunterladen" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "_Eintrag entfernen" @@ -1098,7 +1128,7 @@ #. Submit Feedback #: ../../po/../ui-gtk/UgtkMenubar-ui.c:720 msgid "Submit Feedback" -msgstr "Rückmeldung abschicken" +msgstr "Rückmeldung einsenden" #. Report a Bug #: ../../po/../ui-gtk/UgtkMenubar-ui.c:731 @@ -1108,124 +1138,123 @@ #. Keyboard Shortcuts #: ../../po/../ui-gtk/UgtkMenubar-ui.c:742 msgid "Keyboard Shortcuts" -msgstr "Tastenkombination" +msgstr "Tastenkombinationen" #. Check for Updates #: ../../po/../ui-gtk/UgtkMenubar-ui.c:749 msgid "Check for Updates" msgstr "Auf Aktualisierungen prüfen" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Einstellungen" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Vorgegebene Anwendung für Datei »%s« kann nicht gestartet werden." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "»%s« - Dieser Ordner ist nicht vorhanden." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "Adresse ist vorhanden" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" -msgstr "" -"Diese Adresse ist vorhanden, sind Sie sicher, dass Sie fortfahren wollen?" +msgstr "Diese Adresse ist vorhanden, sind Sie sicher, dass Sie fortfahren wollen?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Allgemein" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Fortgeschritten" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Kategorieeinstellungen" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Vorgabe für neue Übertragung 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Vorgabe 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "unbenannt" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Angehalten" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Wird hochgeladen" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Vollständig" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Gelöscht" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Warteschlange" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Aktiv" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Alle" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Name" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" -msgstr "Fertig" +msgstr "Vollständig" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Größe" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "Prozent" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Vergangen" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Verbleibend" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "Adresse" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Größe" @@ -1252,67 +1281,67 @@ msgid "Port:" msgstr "Anschluss (Port):" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Socket-Args:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Element:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Mo" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Di" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Mi" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Do" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Fr" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Sa" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "So" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "Planer _einschalten" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Ausschalten" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- alle Aufgaben anhalten" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normal" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- Aufgabe normal ausführen" @@ -1371,273 +1400,306 @@ msgstr "_Nach Filter markieren …" #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "z.B." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Von:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "Bis:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "Stellen:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "V_on:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "Groß-/Kleinschreibung" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Kein Platzhalter (*) in Adresseintrag." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "Adresse ist ungültig." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Kein Eintrag in »Von« oder »Zu«." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Vorschau" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Benutzerschnittstelle" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Bandbreite" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Planer" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Modul" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "Medienseite" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Andere" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Zwischenablageüberwachung aktivieren" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Ruhemodus" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Vorgegebener Kategorieindex" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." -msgstr "" -"Wird zur N-ten Kategorie hinzugefügt, wenn mit keiner Kategorie " -"übereinstimmt." +msgstr "Wird zur N-ten Kategorie hinzugefügt, wenn mit keiner Kategorie übereinstimmt." + +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "Adresse von Medienseite _überwachen" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "Zwischenablage auf bestimmte Dateitypen überwachen:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Die Erweiterungen durch ein »|« trennen." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Es können reguläre Ausdrücke verwendet werden." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Bestätigung" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Bestätigungsdialog beim Beenden anzeigen" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Bestätigung beim Löschen von Dateien einholen" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Systemablage" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Immer Systemablagesymbol anzeigen" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Beim Start in Systemablage verkleinern" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Beim Fensterschließen, in Systemablage verkleinern" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Ubuntus App-Anzeige benutzen" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Getrennten Modus beim Start aktivieren" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" -msgstr "Benachrichtigung über Herunterladestart" +msgstr "Benachrichtigung beim Starten der Übertragung" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Ton ausgeben wenn Übertragung fertiggestellt wurde" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Großes Symbol anzeigen" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "Das wird alle Module betreffen." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Globale Geschwindigkeitsbegrenzung" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Höchste Hochladegeschwindigkeit" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Höchste Herunterladegeschwindigkeit" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Automatische Abschlussaktionen" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Benutzerdefinierter Befehl:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Benutzerdefinierter Befehl, falls Fehler auftreten:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "Automatisches _Speichern" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "Minuten" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "A_bstand:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "Minute(n)" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Befehlszeileneinstellungen" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "»--quiet« als Vorgabe benutzen" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "Modulübereinstimmungsreihenfolge:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "aria2-Moduloptionen" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "RPC-Legitimierung geheimer Token" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Globale Geschwindigkeitsbegrenzung nur für aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "aria2 beim Starten a_usführen" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "aria2 beim Beenden _beenden" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "aria2 auf lokalem Gerät starten" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Pfad" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Argumente" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Sie müssen uGet, nach dem Verändern, neu starten" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "Medienübereinstimmungsmodus:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Übereinstimmungsbedingungen" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Qualität:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Typ:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Datei" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Ordner" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Eintrag" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Wert" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Alles _kopieren" diff -Nru uget-2.0.2/po/es.po uget-2.2.2/po/es.po --- uget-2.0.2/po/es.po 2015-09-11 12:14:39.000000000 +0000 +++ uget-2.2.2/po/es.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,20 +3,22 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Alejo_K , 2015 +# Alejo_K , 2016 +# Juan Roberto García Sánchez , 2017 # Vico Koby , 2013 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-27 06:32+0000\n" -"Last-Translator: Michael Tunnell \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/uget/language/" -"es/)\n" -"Language: es\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-09-22 23:51+0000\n" +"Last-Translator: Juan Roberto García Sánchez \n" +"Language-Team: Spanish (http://www.transifex.com/uget/uget/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -24,17 +26,14 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "Demonio del Gestor de Contraseñas: uget\n\nAl intentar una conexión SSH a %s ocurrió un problema verificando está clave del host contra el archivo host conocido y de confianza porque la clave no fue encontrada.\n\n¿Le gustaría tratar esta conexión como confiable para esta y futuras conexiones agregando la clave del host %s's al archivo de hosts conocidos?" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" -msgstr "" +msgstr "Todas las categorías" #. UGET_EVENT_NORMAL_CUSTOM #: ../../po/../uget/UgetEvent.c:58 @@ -47,7 +46,7 @@ msgstr "Transmitiendo..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Reintentos" @@ -57,7 +56,7 @@ msgstr "Descarga completa" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Finalizados" @@ -68,12 +67,12 @@ msgstr "Reanudable" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "No reanudable" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "El archivo de salida no puede ser renombrado." @@ -83,7 +82,7 @@ msgstr "No se podría conectar al host." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "La carpeta no puede ser creada." @@ -100,12 +99,12 @@ #. UGET_EVENT_ERROR_FILE_OPEN_FAILED #: ../../po/../uget/UgetEvent.c:85 msgid "Unable to create thread." -msgstr "" +msgstr "Imposible crear hilo." #. UGET_EVENT_ERROR_THREAD_CREATE_FAILED, #: ../../po/../uget/UgetEvent.c:86 msgid "Incorrect source (different file size)." -msgstr "" +msgstr "Fuente incorrecta (tamaño de archivo diferente)." #. UGET_EVENT_ERROR_INCORRECT_SOURCE, #: ../../po/../uget/UgetEvent.c:87 @@ -140,140 +139,164 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "archivo post no encontrado." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "archivo cookie no encontrado." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Este video fue eliminado." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Se ha producido un error al obtener info del video." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Se ha producido un error al obtener vídeo de la página web." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "No se encontró video_id en la URL de YouTube." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." -msgstr "" +msgstr "aria2: se ha producido un error desconocido." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." -msgstr "" +msgstr "aria2: tiempo de espera agotado." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." -msgstr "" +msgstr "aria2: no se encontró el recurso." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" +msgstr "aria2 vio el número específico del error 'no se encontró el recurso'. Ver opción --max-file-not-found" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." -msgstr "" +msgstr "aria2: velocidad era demasiado lento." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." -msgstr "" +msgstr "aria2: ocurrió un error de conexión." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." -msgstr "" +msgstr "aria2: descargas sin terminar." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" -msgstr "" +msgstr "Recursos insuficientes" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." -msgstr "" +msgstr "aria2: la longitud de la pieza era diferente en el archivo de control de .aria2." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." -msgstr "" +msgstr "aria2 descargó el mismo archivo." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." -msgstr "" +msgstr "aria2 estaba descargando la misma información hash del torrent." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." -msgstr "" +msgstr "aria2: archivo ya existe. Ver opción --allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." -msgstr "" +msgstr "aria2: no se pudo abrir archivo existente." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." -msgstr "" +msgstr "aria2: no se pudo crear un nuevo archivo o truncar archivo existente." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." -msgstr "" +msgstr "aria2: ocurrió un error de E/S." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." -msgstr "" +msgstr "aria2: fallo resolución de nombre." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." -msgstr "" +msgstr "aria2: no se pudo analizar Metalink del documento." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." -msgstr "" +msgstr "aria2: fallo del comando FTP." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." -msgstr "" +msgstr "aria2: Encabezado de respuesta HTTP malo o inesperado." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Demasiadas redirecciones." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." -msgstr "" +msgstr "aria2: HTTP error de autorización." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." -msgstr "" +msgstr "aria2: no se pudo analizar el archivo bencoded (normalmente archivo .torrent)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." -msgstr "" +msgstr "aria2: archivo torrent está dañado o falta información." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." -msgstr "" +msgstr "aria2: Magnet URI está dañado." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" +msgstr "aria2: opción mala/desconocida fue dada o inesperado argumento de opción fue dado." -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." -msgstr "" +msgstr " aria2: servidor remoto no pudo manejar la petición." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." -msgstr "" +msgstr "aria2: no pudo analizar petición JSON-RPC." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" -msgstr "" +msgstr "No hay respuesta. ¿Está aria2 apagado?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." -msgstr "" +msgstr "aria2: gid fue eliminado." + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Fallo al obtener el enlace." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "No hay medios emparejados." #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" @@ -285,255 +308,272 @@ #: ../../po/../ui-gtk/UgtkAboutDialog.c:80 msgid "uGet Founder: " -msgstr "" +msgstr "Fundador de uGet:" #: ../../po/../ui-gtk/UgtkAboutDialog.c:81 msgid "uGet Project Manager: " -msgstr "" +msgstr "Director de proyecto uGet:" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "tareas" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Nuevo desde el portapapeles" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Nueva descarga" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Portapapeles" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Línea de comandos" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" -msgstr "" +msgstr "Se ha producido un error" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." -msgstr "" +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." +msgstr "Se ha producido un error al descargar." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Iniciando descarga" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Iniciando cola de descargas." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Descarga completa" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Todas las descargas en cola se han completado." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Estado" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Categoría" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Crea una nueva descarga" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Nueva _descarga..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Nueva _categoría..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Descargas nuevas en _masa desde el portapapeles..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Nueva secuencia de _URL's en masa..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Nuevo Torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Nuevo metaenlace..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" -msgstr "" +msgstr "Guardar todos los ajustes" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Ejecutar las descargas seleccionadas" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Pausar las descargas seleccionadas" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Establecer las propiedades de las descargas seleccionadas" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Mover las descargas seleccionadas hacia arriba" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Mover las descargas seleccionadas hacia abajo" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Mover las descargas seleccionadas al principio" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Mover las descargas seleccionadas al final" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Nueva categoría" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Copiar -" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Propiedades de la categoría" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Propiedades de la descarga" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Nuevo Torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Nuevo metaenlace" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Abrir archivo Torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Archivo Torrent (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Abrir archivo de metaenlace" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." -msgstr "" +msgstr "Fallo al guardar archivo de categoría." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." -msgstr "" +msgstr "Fallo al cargar archivo de categoría." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" -msgstr "" +msgstr "Guardar archivo de Categoría" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" -msgstr "" +msgstr "Abrir archivo de Categoría" + +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "Archivo JSON (*.json)" #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Enlace " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Imagen " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Archivo de texto" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Importar URLs de archivo HTML" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "Archivo HTML (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Importar URLs de archivo de texto" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Archivo de texto plano." + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" -msgstr "" +msgstr "Exportar URLs a un archivo de texto" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Secuencia de URL's en masa" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "No se encontraron URLs en el portapapeles." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." -msgstr "" +msgstr "Existían todas las URL." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "En masa del portapapeles..." -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" -msgstr "" +msgstr "Nuevo" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Error" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Mensaje" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "%d elementos seleccionados" @@ -545,9 +585,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"Estamos ejecutando una unidad de donación para el desarrollo futuro de uGet, " -"por favor haga clic" +msgstr "Estamos ejecutando una unidad de donación para el desarrollo futuro de uGet, por favor haga clic" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -565,14 +603,17 @@ msgid "Category _name:" msgstr "_Nombre de la categoría:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "_Descargas activas:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Capacidad de finalizados:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Capacidad de reciclados:" @@ -581,19 +622,19 @@ #. URI Matching conditions #: ../../po/../ui-gtk/UgtkCategoryForm.c:111 msgid "URI Matching conditions" -msgstr "" +msgstr "Condiciones de emparejamiento URI" #: ../../po/../ui-gtk/UgtkCategoryForm.c:118 msgid "Matched _Hosts:" -msgstr "" +msgstr "Hosts_Emparejados:" #: ../../po/../ui-gtk/UgtkCategoryForm.c:129 msgid "Matched _Schemes:" -msgstr "" +msgstr "Sistemas_Emparejados:" #: ../../po/../ui-gtk/UgtkCategoryForm.c:140 msgid "Matched _Types:" -msgstr "" +msgstr "Tipos_de_emparejamientos:" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 msgid "Really Quit?" @@ -613,21 +654,21 @@ #: ../../po/../ui-gtk/UgtkConfirmDialog.c:74 msgid "Really delete category?" -msgstr "" +msgstr "¿Realmente eliminar la categoría?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:75 msgid "Are you sure you want to delete category?" -msgstr "" +msgstr "¿Está seguro que quiere eliminar la categoría?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:109 msgid "Don't ask me again" -msgstr "" +msgstr "No volver a preguntar" #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" -msgstr "" +msgstr "_URI:" #. Mirrors - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:130 @@ -636,12 +677,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Archivo:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Seleccionar carpeta" @@ -658,7 +699,7 @@ #. "Max Connections:" - title label #: ../../po/../ui-gtk/UgtkDownloadForm.c:212 msgid "_Max Connections:" -msgstr "" +msgstr "_Máximo de conexiones:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:230 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 @@ -673,7 +714,7 @@ #. frame for login #: ../../po/../ui-gtk/UgtkDownloadForm.c:238 msgid "Login" -msgstr "Usuario" +msgstr "Ingresar" #. User - label #. user label & entry @@ -695,7 +736,7 @@ msgstr "Archivo Cookie:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Seleccionar archivo cookie" @@ -705,14 +746,14 @@ msgstr "Archivo posteado:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Selecccionar archivo posteado" #. label - user agent #: ../../po/../ui-gtk/UgtkDownloadForm.c:346 msgid "User Agent:" -msgstr "Usuario agente:" +msgstr "Agente de Usuario:" #. Retry limit - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:362 @@ -742,10 +783,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -796,28 +837,29 @@ #. Open Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 msgid "_Open category..." -msgstr "" +msgstr "_Abrir categoría..." #. Save Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 msgid "_Save category as..." -msgstr "" +msgstr "_Guardar categoría como..." #. Save All #: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 msgid "Save _all settings" -msgstr "" +msgstr "Guardar _todos los ajustes" #. Offline mode #: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 msgid "Offline Mode" -msgstr "" +msgstr "Modo sin conexión" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 msgid "_Edit" msgstr "_Editar" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -827,58 +869,58 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 #: ../../po/../ui-gtk/UgtkTrayIcon.c:103 msgid "Clipboard works quietly" -msgstr "" +msgstr "Portapapeles trabaja silenciosamente" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:107 msgid "Command-line works quietly" -msgstr "" +msgstr "Línea de comandos trabaja silenciosamente" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 #: ../../po/../ui-gtk/UgtkTrayIcon.c:111 msgid "Skip existing URI" -msgstr "" +msgstr "Saltar URI existente" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Aplicar configuración de descargas recientes" #. --- Completion Auto-Actions --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 msgid "Completion _Auto-Actions" -msgstr "" +msgstr "Al finalizar _Acciones-Automáticas" #. Completion Auto-Actions - Disable #: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 msgid "_Disable" -msgstr "" +msgstr "_Deshabilitar" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 msgid "Hibernate" -msgstr "" +msgstr "Hibernar" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 msgid "Suspend" -msgstr "" +msgstr "Suspender" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 msgid "Shutdown" -msgstr "" +msgstr "Apagar" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 msgid "Reboot" -msgstr "" +msgstr "Reiniciar" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 msgid "Custom" -msgstr "" +msgstr "Personalizado" #. Completion Auto-Actions - Remember #: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 msgid "Remember setting" -msgstr "" +msgstr "Recordar ajustes" #. Completion Auto-Actions - Help #: ../../po/../ui-gtk/UgtkMenubar-ui.c:279 @@ -946,7 +988,7 @@ msgid "Download _Columns" msgstr "_Columnas de descarga" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Completado" @@ -973,25 +1015,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Velocidad" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Aumentar velocidad" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Subido" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Tasa" @@ -1002,13 +1044,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Añadido en" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Completado en" @@ -1030,18 +1072,19 @@ msgid "_Download" msgstr "_Descarga" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" -msgstr "" +msgstr "_Eliminar Entrada" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 msgid "Delete Entry and _File" -msgstr "" +msgstr "Eliminar Entrada y _Archivo" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 msgid "Open _Containing folder" -msgstr "" +msgstr "Abrir carpeta _Contenedora" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 msgid "Force Start" @@ -1055,19 +1098,19 @@ #. Priority --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:645 msgid "Priority" -msgstr "" +msgstr "Prioridad" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:654 msgid "_High" -msgstr "" +msgstr "_Alta" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:659 msgid "_Normal" -msgstr "" +msgstr "_Normal" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:664 msgid "_Low" -msgstr "" +msgstr "_Baja" #. Get Help Online #: ../../po/../ui-gtk/UgtkMenubar-ui.c:687 @@ -1097,123 +1140,123 @@ #. Keyboard Shortcuts #: ../../po/../ui-gtk/UgtkMenubar-ui.c:742 msgid "Keyboard Shortcuts" -msgstr "" +msgstr " Atajos de teclado" #. Check for Updates #: ../../po/../ui-gtk/UgtkMenubar-ui.c:749 msgid "Check for Updates" msgstr "Comprobar actualizaciones" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Configuración" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "No se puede ejecutar la aplicación asociada al archivo '%s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - Esta carpeta no existe." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" -msgstr "" +msgstr "URI ya existía" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" -msgstr "" +msgstr "Está URI ya existía, ¿esta seguro que desea continuar?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "General" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Avanzado" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Configuración de la categoría" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Por defecto para nueva descarga 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Por defecto 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "sin nombre" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" -msgstr "" +msgstr "Pausado" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" -msgstr "" +msgstr "Subiendo" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" -msgstr "" +msgstr "Completado" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Reciclados" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Cola" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Activo" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" -msgstr "" +msgstr "Todo el estado" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Nombre" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Completado" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Tamaño" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Transcurrido" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Restante" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" -msgstr "" +msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Cantidad" @@ -1240,67 +1283,67 @@ msgid "Port:" msgstr "Puerto:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Args. sockets:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Elemento:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Lunes" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Martes" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Miércoles" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Jueves" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Viernes" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Sábado" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Domingo" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Habilitar planificador" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Activado" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- detiene todas las tareas" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normal" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- ejecuta tareas normalmente" @@ -1359,271 +1402,306 @@ msgstr "_Marcar por filtro..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "ej." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Desde:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "Hasta:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "dígitos:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "D_esde:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "sensible a MAY/min" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "No hay caracteres comodín(*) en la URL de entrada." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "La URL no es válida." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "No hay caracteres en la entrada 'Desde' o 'Hasta'." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Vista previa" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" -msgstr "" +msgstr "Interfaz de usuario" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" -msgstr "" +msgstr "Ancho de banda" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Planificador" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Complemento" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "Sitio web de medios" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Otros" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" -msgstr "" +msgstr "_Activar monitor de portapapeles" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "Modo _silencioso" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" -msgstr "" +msgstr "Índice de categoría por defecto" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." -msgstr "" +msgstr "Añadir a la categoría Nth si ninguna categoría coincide." + +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "_Monitorear la URL del sitio web de medios" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" -msgstr "" +msgstr "Monitorear portapapeles para determinados tipos de archivos:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Separe los tipos con el caracter '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "También puede usar expresiones regulares." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" -msgstr "" +msgstr "Confirmación" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" -msgstr "" +msgstr "Mostrar diálogo de confirmación al salir" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Confirmar eliminación de archivos" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" -msgstr "" +msgstr "Bandeja del sistema" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Siempre mostrar icono en bandeja" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Minimizar a la bandeja al inicio" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" -msgstr "" +msgstr "Ocultar a la bandeja al cerrar la ventana" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" -msgstr "" +msgstr "Usar indicador de aplicaciones de Ubuntu" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Habilitar modo fuera de línea al inicio" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Notificar inicio de descarga" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Sonido al finalizar la descarga" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Mostrar icono grande" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." -msgstr "" +msgstr "Esto afectará a todos los complementos." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" -msgstr "" +msgstr "Límite de velocidad global" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" -msgstr "" +msgstr "Velocidad de subida máxima" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" -msgstr "" +msgstr "Velocidad de descarga máxima" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" -msgstr "" +msgstr "Al finalizar Acciones-Automáticas" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" -msgstr "" +msgstr "Comando personalizado:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" -msgstr "" +msgstr "Comando personalizado si se produce un error:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" -msgstr "" +msgstr "_Autoguardar" + +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 +msgid "_Interval:" +msgstr "_Intervalo:" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 msgid "minutes" msgstr "minutos" -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 -msgid "_Interval:" -msgstr "I_ntérvalo:" - #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Configuración de la línea de comandos" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Usar '--quiet' por defecto" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" -msgstr "" +msgstr "Complemento en orden correspondiente:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" -msgstr "" +msgstr "Aria2 opciones del complemento" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" -msgstr "" +msgstr "Token secreto de autorización RPC" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" -msgstr "" +msgstr "Límite de velocidad global solo para aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Ejecutar aria2 al inicio" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Cerrar aria2 al salir" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" -msgstr "" +msgstr "Ejecutar aria2 en dispositivo local" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Ruta" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Argumentos" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." -msgstr "" +msgstr "Debe reiniciar uGet después de modificarlo." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "Modo de emparejamiento de los medios:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Condiciones de coincidencia" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Calidad:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Tipo:" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Archivo" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Carpeta" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Ítem" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Valor" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Copiar _todo" diff -Nru uget-2.0.2/po/fa.po uget-2.2.2/po/fa.po --- uget-2.0.2/po/fa.po 2015-09-11 12:14:39.000000000 +0000 +++ uget-2.2.2/po/fa.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,22 +3,23 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Ali 4129 , 2016 +# amin hosseinzadeh fardnia , 2015 +# Arash Kadkhodaei , 2016 # deadmarshal , 2014 -# Mahdi Mohammadi , 2014-2015 # mhajiloo , 2014 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-02-17 12:15+0000\n" -"Last-Translator: Mahdi Mohammadi \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/uget/language/" -"fa/)\n" -"Language: fa\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: Ali 4129 \n" +"Language-Team: Persian (http://www.transifex.com/uget/uget/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../po/../uget/pwmd.c:32 @@ -26,17 +27,14 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" -msgstr "همه رده ها" +msgstr "همه دسته‌ها" #. UGET_EVENT_NORMAL_CUSTOM #: ../../po/../uget/UgetEvent.c:58 @@ -49,17 +47,17 @@ msgstr "در حال ارسال" #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "تلاش دوباره" #. UGET_EVENT_NORMAL_RETRY, #: ../../po/../uget/UgetEvent.c:61 msgid "Download completed" -msgstr "پایان دانلود" +msgstr "پایان بارگیری" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "پایان یافت" @@ -70,12 +68,12 @@ msgstr "با قابلیت از سر گرفتن" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "بدون قابلیت از سر گرفتن" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "پرونده خروجی قابل نامگذاری نیست." @@ -85,7 +83,7 @@ msgstr "خطا در ارتباط با میزبان." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "ساخت پوشه به مشکل برخورد." @@ -147,135 +145,159 @@ #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "کوکی‌ها پیدا نشد." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "این ویدیو پاک شده است." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "در زمان دریافت اطلاعات ویدیو خطا رخ داد." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "در زمان اتصال به صفحه اینترنتی ویدیو خطا رخ داد." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "در این URL از YouTube ویدیو با این شناسه video_id پیدا نشد." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: خطایی نامشخص رخ داد." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: تایم آوت رخ داد." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: منبع یافت نشد." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" +msgstr "آریا2: تعدادی خطای «منبع یافت نشد» مشاهده کرد. گزینه‌ی --max-file-not-found را مشاهده کن" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." -msgstr "" +msgstr "آریا2: سرعت خیلی کم بود" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." -msgstr "" +msgstr "آریا2: مشکل شبکه رخ داد" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." -msgstr "" +msgstr "آریا2: بارگیری‌های تمام نشده" #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "منبع تمام شد." #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." -msgstr "" +msgstr "آریا2: طول قطعه در فایل کنترلی .aria2 از یکی متفاوت بود." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 نیز همان فایل را دانلود می کرد." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." -msgstr "" +msgstr "آریا2 اطلاعات هش شده تورنت یکسان بارگیری کرد." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: فایل از قبل وجود دارد. گزینه --allow-overwrite را نگاه کنید." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: نتوانست فایل موجود را باز کند." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." -msgstr "" +msgstr "آریا2: نتوانست پرنده را بسازد یا پرنده موجود ناقص است " -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." -msgstr "" +msgstr "آریا2: خطای I/O برای پرونده رخ داد." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." -msgstr "" +msgstr "آریا2: تحلیل نام شکست خورد." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." -msgstr "" +msgstr "آریا2: نتوانست سند متالینک را تجزیه کند." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." -msgstr "" +msgstr "آریا2: دستور FTP شکست خورد." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." -msgstr "" +msgstr "آریا2: عنوان پاسخ HTTP بد و یا غیر منتظره بود." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "تغییر مسیر بیش از حد" -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." -msgstr "" +msgstr "آریا2: مجوز HTTP شکست خورد." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." -msgstr "" +msgstr "آریا2: نتوانست پرونده bencoded (معولاً پرونده تورنت) را تجزیه کند." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." -msgstr "" +msgstr "آرای2: پرونده تورنت خراب شده بود و یا اطلاعات از دست رفته." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: URI مگنت اشتباه بود." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" +msgstr "آریا2: گزینه‌ی بد/ناشناخته داده شده یا آرگومان گزینه‌ی ناشناخته داده شده." -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." -msgstr "" +msgstr "آریا2: نتوانست سرور راه دور را به دست بگیرد." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." -msgstr "" +msgstr "آریا2: می توان درخواست JSON-RPC را تجزیه کرد." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "بدون پاسخ. آیا aria2 خاموش است؟" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." -msgstr "" +msgstr "آریا2: gid حذف شد." + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "مشکلی در دریافت لینک وجود دارد." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "رسانه‌ی همسان وجود ندارد." #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" @@ -293,249 +315,266 @@ msgid "uGet Project Manager: " msgstr "مدیر پروژه uGet:" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "کارها" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "دانلود تازه از کلیپبورد" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "دانلود تازه" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "کلیپبورد" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "خط فرمان" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "ارور رخ داد" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "هنگام دانلود ارور رخ داد." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "دانلود در حال شروع" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "در حال شروع صف دانلود" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "پایان دانلود" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "تمام دانلودها پایان یافتند." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "وضعیت" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "دسته" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "ایجاد دانلود جدبد" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "ـدانلود تازه" #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "ـدسته تازه..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "دانلود گروهی جدید از کلیپبورد..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "دانلود گروهی جدید" #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "تورنت تازه..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "ابرپیوند تازه" -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "همه تنظیمات را ذخیره کن" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "دانلود انتخاب شده را قابل اجرا تنظیم کن" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "دانلود انتخاب شده را نگه دار" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "مشخصات دانلود انتخاب شده را تنظیم کن" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "دانلود انتخاب شده را ببر بالا" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "دانلود انتخاب شده را ببر پایین" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "دانلود انتخاب شده را بالای همه ببر." -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "دانلود انتخاب شده را به پایین همه ببر" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "دسته‌ی جدید" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "کپی -" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "مشخصات رده" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "مشخصات دانلود" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "تورنت تازه" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "ابرپیوند تازه" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "گشودن فایل تورنت" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "فایل‌های تورنت (torrent.*)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "باز کردن فایل ابرپیوند" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." -msgstr "" +msgstr "ذخیره‌سازی دسته‌بندی فایل شکست خورد." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." -msgstr "" +msgstr "بارکردن دسته‌بندی فایل شکست خورد." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" -msgstr "" +msgstr "دسته‌بندی پرونده را ذخیره کن." -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" -msgstr "" +msgstr "دسته‌بندی پرونده را باز کن." + +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "فایل‌های JSON" #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "لینک " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "عکس " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "فایل متنی" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "وارد کردن آدرس ها از فایل HTML" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "وارد کردن URLsها از فایل متنی" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "فایل متنی" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" -msgstr "" +msgstr "URLها را به پرونده متنی صادر کن" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "دنباله گروهی sequence" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "هیچ آدرسی در کلیپبورد پیدا نشد." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." -msgstr "" +msgstr "همه URLها وجود داشته است." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "دانلود گروهی از کلیپبورد" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "تازه" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "خطا" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "پیام" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "%d مورد انتخاب شده" @@ -547,8 +586,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"ما یک درایو کمک مالی برای ادامه توسعه uGet راه انداخته ایم، لطفا کلیک کنید" +msgstr "ما یک درایو کمک مالی برای ادامه توسعه uGet راه انداخته ایم، لطفا کلیک کنید" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -566,14 +604,17 @@ msgid "Category _name:" msgstr "نام رده:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "دانلودهای فعال:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "ظرفیت پایان یافته ها:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "ظرفیت بازیافتی ها:" @@ -582,19 +623,19 @@ #. URI Matching conditions #: ../../po/../ui-gtk/UgtkCategoryForm.c:111 msgid "URI Matching conditions" -msgstr "" +msgstr "شرایط تطبیق URI" #: ../../po/../ui-gtk/UgtkCategoryForm.c:118 msgid "Matched _Hosts:" -msgstr "" +msgstr "میزبان همسان:" #: ../../po/../ui-gtk/UgtkCategoryForm.c:129 msgid "Matched _Schemes:" -msgstr "" +msgstr "طرح‌های همسان:" #: ../../po/../ui-gtk/UgtkCategoryForm.c:140 msgid "Matched _Types:" -msgstr "" +msgstr "انواع همسان:" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 msgid "Really Quit?" @@ -626,9 +667,9 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" -msgstr "" +msgstr "_URI:" #. Mirrors - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:130 @@ -637,12 +678,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "فایل:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "پوشه را برگزینید" @@ -659,7 +700,7 @@ #. "Max Connections:" - title label #: ../../po/../ui-gtk/UgtkDownloadForm.c:212 msgid "_Max Connections:" -msgstr "" +msgstr "ـبیشترین تعداد اتصال" #: ../../po/../ui-gtk/UgtkDownloadForm.c:230 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 @@ -696,7 +737,7 @@ msgstr "فایل کوکی:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "انتخاب فایل کوکی" @@ -706,7 +747,7 @@ msgstr "فایل پست:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "انتخاب فایل پست" @@ -743,10 +784,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -797,17 +838,17 @@ #. Open Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 msgid "_Open category..." -msgstr "" +msgstr "دسته‌ی باز..." #. Save Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 msgid "_Save category as..." -msgstr "" +msgstr "دخیره‌ی دسته به عنوان..." #. Save All #: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 msgid "Save _all settings" -msgstr "" +msgstr "تمام تنظیمات را ذخیره کن" #. Offline mode #: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 @@ -818,7 +859,8 @@ msgid "_Edit" msgstr "ویرایش" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -828,12 +870,12 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 #: ../../po/../ui-gtk/UgtkTrayIcon.c:103 msgid "Clipboard works quietly" -msgstr "" +msgstr "کلیپ‌برد بی صدا کار می‌کند" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:107 msgid "Command-line works quietly" -msgstr "" +msgstr "کامند لاین بی صدا کار می‌کند" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 #: ../../po/../ui-gtk/UgtkTrayIcon.c:111 @@ -841,15 +883,15 @@ msgstr "از URl موجود صرف نظر کن" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" -msgstr "اجرای تنظیمات اخیر دانلود" +msgid "Apply recent download settings" +msgstr "" #. --- Completion Auto-Actions --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 msgid "Completion _Auto-Actions" -msgstr "" +msgstr "تکمیل خودکار اقدامات" #. Completion Auto-Actions - Disable #: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 @@ -858,11 +900,11 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 msgid "Hibernate" -msgstr "" +msgstr "هایبرنیت" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 msgid "Suspend" -msgstr "" +msgstr "معلق" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 msgid "Shutdown" @@ -947,7 +989,7 @@ msgid "Download _Columns" msgstr "ردیف های دانلود" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "پایان" @@ -974,25 +1016,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "سرعت" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "سرعت آپلود" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "آپلود شده" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "نرخ" @@ -1003,13 +1045,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "افزوده شده در" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "پایان یافته در" @@ -1031,14 +1073,15 @@ msgid "_Download" msgstr "دانلود" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" -msgstr "" +msgstr "پاک کردن ورودی" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 msgid "Delete Entry and _File" -msgstr "" +msgstr "پاک کردن ورودی و پرونده" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 msgid "Open _Containing folder" @@ -1105,116 +1148,116 @@ msgid "Check for Updates" msgstr "گشتن برای بروزرسانی" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "تنظیمات" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "اشکال در اجرای برنامه ی پیشفرض برای فایل '%s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - این پوشه وجود ندارد." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "URl از پیش وجود داشت" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "این URl از پیش وجود داشت، آیا مطمئنید میخواهید ادامه دهید؟" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "اصلی" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "پیشرفته" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "تنظیمات دسته" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "پیشفرض برای دانلود 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "پیشفرض 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "بدون نام" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "متوقف شده" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "در حال آپلود" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "پایان یافته" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "بازیابی شده" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "در حال صف کشی" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "فعال" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "تمام وضعیت ها" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "نام" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "پایان" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "سایز" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "سپری شده" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "مانده" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URl" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "مقدار" @@ -1241,67 +1284,67 @@ msgid "Port:" msgstr "درگاه:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "سوکت:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "مشخصه های سوکت:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "المنت" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "دوشنبه" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "سه شنبه" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "چهار شنبه" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "پنج شنبه" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "جمعه" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "شنبه" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "یکشنبه" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "فعال سازی زمان بند" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "خاموش کن" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "توقف تمام کارها" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "عادی" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "اجرای معمولی کارها" @@ -1360,271 +1403,306 @@ msgstr "انتخاب بر اساس فیلتر" #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "برای نمونه" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "از:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "به:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "شماره ها:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "از:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "حساس به بزرگ و کوچکی" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "کاراکترهای wildcard(*) در ورودی URL نیستند." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL معتبر نمی‌باشد" -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "هیچ کاراکتری در ورودی 'از' یا 'به' نبود." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "پیش نمایش" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "رابط کاربری" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "پهنای باند" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "زمان بند" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "افزونه" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "بقیه" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "زیر نظرگرفتن کلیپبورد" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "حالت ساکت" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "فهرست پیشفرض رده" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "اضافه کردن به Nمین رده اگر رده ای مناسب نبود." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "بررسی URL از وب‌سایت مدیا " + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "برای مدل فایل های تعیین شده کلیپبورد را زیر نظر بگیر:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "شما میتوانید انواع را با کاراکتر |‌ جداکنید." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "میتوانید از عبارت های با قاعده استفاده کنید." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "تاییدیه" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "نشان دادن دیالوگ تایید هنگام خروج" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "گرفتن تایید هنگام پاک کردن پرونده ها" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "System Tray" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "همیشه آیکن tray را نشان بده" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "هنگام شروع به tray جمع کن" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "بستن در Tray هنگام بستن پنجره" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "استفاده از Ubuntu App Indicator" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "هنگام شروع حالت آفلاین را فعال کن" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "آگاه ساز شروع دانلود" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "پخش صدا هنگام پایان دانلود" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "نمایش آیکون‌های بزرگ" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." -msgstr "" +msgstr "این همه افزونه تأثیر می‌گذارد." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "محدودیت جهانی سرعت" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "سرعت بیشینه ی آپلود" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "سرعت بیشینه ی دانلود" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "کارهای خودکار هنگام پایان" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" -msgstr "" +msgstr "فرمان سفارشی:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" -msgstr "" +msgstr "فرمان سفارشی اگر خطا رخ داد:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" -msgstr "" - -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "دقیقه" +msgstr "دخیره خودکار" -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "دوره زمانی:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "دقیقه" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "تنظیمات خط فرمان" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "به طور پیشفرض از حالت بیصدا استفاده کن" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" -msgstr "" +msgstr "درخواست مطابقت افزونه:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" -msgstr "" +msgstr "گزینه‌های افزونه‌ی آریا2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" -msgstr "" +msgstr "علامتِ محرمانه‌ی مجوز RPC " #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" -msgstr "" +msgstr "محدودیت سرعت سراسری فقط برای آریا2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "اجرای aria2 در شروع" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "خاموش کردن aria2 در خروج" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" -msgstr "" +msgstr "راه‌اندازی آریا2 روی دستگاه محلی" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "مسیر" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "آرگمانها" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." -msgstr "" +msgstr "شما باید uGet را پس از اصلاح راه اندازی مجدد کنید." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "وضعیت مطابقت مدیا:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "شرایط تطبیق:" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "کیفیت:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "نوع:" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "فایل" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "پوشه" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "آیتم" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "مقدار" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "کپی همه" diff -Nru uget-2.0.2/po/fr.po uget-2.2.2/po/fr.po --- uget-2.0.2/po/fr.po 2015-09-11 12:14:39.000000000 +0000 +++ uget-2.2.2/po/fr.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,22 +3,21 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Jocelyn R , 2013 -# Jocelyn R , 2013 -# Nizar, 2014 +# Nicolas Cuffia , 2016 +# Patrice LACOUTURE , 2017 +# Rémy J. , 2017 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-01-04 22:38+0000\n" -"Last-Translator: jc1 \n" -"Language-Team: French (http://www.transifex.com/projects/p/uget/language/" -"fr/)\n" -"Language: fr\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-09-22 23:51+0000\n" +"Last-Translator: Rémy J. \n" +"Language-Team: French (http://www.transifex.com/uget/uget/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -26,22 +25,19 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "Service de gestion de mots de passe : uget\n\nLors de la tentative de connexion SSH à %s il y a eu un problème de vérification de la clé d'hôte vis à vis du fichier d'hôte connu et de confiance car cette clé d'hôte n'a pas été trouvé.\n\nSouhaitez-vous traiter cette connexion comme digne de confiance pour celle-ci et les futures connexions en ajoutant la clé d'hôte %s au fichier des hôtes connus ?" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Toutes les catégories" #. UGET_EVENT_NORMAL_CUSTOM #: ../../po/../uget/UgetEvent.c:58 msgid "Connecting..." -msgstr "Connexion en cours ..." +msgstr "Connexion en cours..." #. UGET_EVENT_NORMAL_CONNECT #: ../../po/../uget/UgetEvent.c:59 @@ -49,9 +45,9 @@ msgstr "Transmission en cours ..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" -msgstr "Ressayer" +msgstr "Réessayer" #. UGET_EVENT_NORMAL_RETRY, #: ../../po/../uget/UgetEvent.c:61 @@ -59,7 +55,7 @@ msgstr "Téléchargement terminé" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Fini" @@ -70,12 +66,12 @@ msgstr "Reprise possible" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Reprise impossible" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Le fichier de sortie ne peut pas être renommé." @@ -85,15 +81,14 @@ msgstr "Impossible de se connecter au serveur." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Le dossier ne peut pas être créé." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:83 msgid "File can't be created (bad filename or file exist)." -msgstr "" -"Le fichier ne peut être créé (mauvais nom de fichier ou le fichier existe)." +msgstr "Le fichier ne peut être créé (mauvais nom de fichier ou le fichier existe)." #. UGET_EVENT_ERROR_FILE_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:84 @@ -108,7 +103,7 @@ #. UGET_EVENT_ERROR_THREAD_CREATE_FAILED, #: ../../po/../uget/UgetEvent.c:86 msgid "Incorrect source (different file size)." -msgstr "Mauvaise sources (taille de fichier différente)." +msgstr "Mauvaise source (taille de fichier différente)." #. UGET_EVENT_ERROR_INCORRECT_SOURCE, #: ../../po/../uget/UgetEvent.c:87 @@ -143,158 +138,172 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "fichier post introuvable." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "fichier cookie introuvable." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Cette vidéo a été supprimée." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Une erreur est survenue lors de l'obtention d'infos sur la vidéo." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Une erreur est survenue lors de l'obtention de la page web de la vidéo." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "Pas de video_id trouvé dans l'URL YouTube." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2 : une erreur inconnue s'est produite." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2 : un dépassement de temps s'est produit." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2 : la ressource n'a pas été trouvé." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 a vu le nombre spécifié d'erreur 'ressource non trouvé'. Voir l'option " -"--max-file-option non trouvée" +msgstr "aria2 a vu le nombre spécifié d'erreur 'ressource non trouvé'. Voir l'option --max-file-option non trouvée" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2 : la vitesse était trop lente." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2 : un problème de réseau s'est produit." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2 : téléchargements inachevés." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Hors des ressources" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." -msgstr "" -"aria2 : la longueur de pièce était différente de celui du fichier de " -"contrôle .aria2." +msgstr "aria2 : la longueur de pièce était différente de celui du fichier de contrôle .aria2." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 téléchargeait le même fichier." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 téléchargeait le même torrent de hachage d'informations." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2 : le fichier existait déjà. Voir l'option --allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2 : n'a pas pu ouvrir le fichier existant." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." -msgstr "" -"aria2 : impossible de créer le nouveau fichier ou de tronquer fichier " -"existant." +msgstr "aria2 : impossible de créer le nouveau fichier ou de tronquer fichier existant." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2 : une erreur de I/O de fichier s'est produite." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2 : la résolution de nom a échoué." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2 : n'a pas pu analyser le document Metalink." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2 : la commande FTP a échoué." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2 : l'entête de réponse HTTP était mauvaise ou inattendue." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Trop de redirections." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2 : l'autorisation HTTP a échoué." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." -msgstr "" -"aria2 : n'a pas pu analyser le fichier bencoded (fichier .torrent " -"habituellement)." +msgstr "aria2 : n'a pas pu analyser le fichier bencoded (fichier .torrent habituellement)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2 : fichier torrent a été endommagé ou manquant d'informations." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2 : l'URI Magnet était mauvais." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" -"aria2 : option mauvaise/non reconnue a été donnée ou argument d'option " -"inattendue était " +msgstr "aria2 : option mauvaise/non reconnue a été donnée ou argument d'option inattendue était " -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2 : le serveur distant n'a pas pu traiter la demande." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2 : n'a pas pu analyser la demande JSON-RPC." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Pas de réponse. Est-ce que aria2 est arrêté ?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2 : gid a été retiré." +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Impossible d'obtenir le lien média." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "Aucune correspondance média." + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Gestionnaire de téléchargement" #: ../../po/../ui-gtk/UgtkAboutDialog.c:48 msgid "translator-credits" -msgstr "Crédits traducteurs" +msgstr "Robert-André Mauchin\nEmmanuel Andry" #: ../../po/../ui-gtk/UgtkAboutDialog.c:80 msgid "uGet Founder: " @@ -304,249 +313,266 @@ msgid "uGet Project Manager: " msgstr "Chef de projet uGet : " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "tâches" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" -msgstr "Nouveau depuis le presse-papiers" +msgstr "Nouveau depuis le Presse-papiers" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Nouveau téléchargement" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Presse-papiers" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Ligne de commande" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Une erreur est survenue" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Une erreur est survenue lors du téléchargement." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" -msgstr "Démarrage le téléchargement" +msgstr "Démarrage Téléchargement" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Démarrer la file d'attente téléchargement." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" -msgstr "Téléchargement terminé" +msgstr "Téléchargement Terminé" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Toutes les files d'attente téléchargement sont terminées." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Statut" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Catégorie" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Créer un nouveau téléchargement" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." -msgstr "Nouveau _téléchargement" +msgstr "Nouveau _Téléchargement" #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." -msgstr "Nouvelle _catégorie ..." +msgstr "Nouvelle _Catégorie ..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." -msgstr "Nouveau lot depuis le presse-papiers" +msgstr "Nouveau traitement par lot _depuis le presse-papiers" #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." -msgstr "Nouveau lot d'une séquence d'URL" +msgstr "Nouveau lot de séquence URL" #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Nouveau Torrent ..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Nouveau Metalink ..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Enregistrer tous les paramètres" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Mettre téléchargement sélectionné exécutable" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Mettre téléchargement sélectionné en pause" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Définir les propriétés du téléchargement sélectionnées " -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Déplacer le téléchargement sélectionné vers le haut" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Déplacer le téléchargement sélectionné vers le bas" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Déplacer le téléchargement sélectionné au début" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Déplacer le téléchargement sélectionné à la fin" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Nouvelle catégorie" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Copier -" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Propriétés catégorie" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" -msgstr "Propriétés téléchargement" +msgstr "Propriétés Téléchargement" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Nouveau Torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Nouveau Metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Ouvrir le fichier Torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Fichier Torrent (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Ouvrir le fichier Metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "Impossible d'enregistrer le fichier de catégorie." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "Impossible de charger le fichier de catégorie." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Enregistrer le fichier de catégorie" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Ouvrir le fichier de catégorie" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "Fichier JSON (*.json)" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Lien " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Image " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" -msgstr "Fichier texte" +msgstr "Fichier Texte" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" -msgstr "Importer des URL depuis un fichier HTML" +msgstr "Importer des URLs depuis un fichier HTML" + +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "Fichier HTML (*.htm, *.html)" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" -msgstr "Importer des URL depuis un fichier texte" +msgstr "Importer des URLs depuis un fichier texte" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Fichier texte" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Exporter les URL dans un fichier texte" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" -msgstr "Lot d'une séquence d'URL" +msgstr "Lot de séquence URL" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Aucune URL trouvée dans le presse-papiers." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Toutes les URL ont existé." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" -msgstr "Lot depuis le Presse-papiers" +msgstr "Traitement par lot du presse-papiers" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" -msgstr "Nouveau " +msgstr "Nouveau" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Erreur" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Message" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "%d éléments sélectionnés" @@ -558,9 +584,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"nous sommes entrain d'organiser une compagne de donation pour le " -"développement futur d'uGet, cliquez SVP" +msgstr "nous sommes entrain d'organiser une compagne de donation pour le développement futur de uGet, cliquez SVP" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -568,7 +592,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:168 msgid "please fill out this quick User Survey for uGet." -msgstr "remplissez SVP ce rapide sondage utilisateur pour uGet" +msgstr "remplissez SVP ce rapide sondage d'utilisateur pour uGet" #: ../../po/../ui-gtk/UgtkBanner.c:171 msgid "click here to take survey" @@ -578,14 +602,17 @@ msgid "Category _name:" msgstr "_Nom de la catégorie :" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "_Téléchargements actifs :" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Capacité des finis :" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Capacité des supprimés :" @@ -598,7 +625,7 @@ #: ../../po/../ui-gtk/UgtkCategoryForm.c:118 msgid "Matched _Hosts:" -msgstr "_Serveurs appariés :" +msgstr "_Hôtes appariés :" #: ../../po/../ui-gtk/UgtkCategoryForm.c:129 msgid "Matched _Schemes:" @@ -614,7 +641,7 @@ #: ../../po/../ui-gtk/UgtkConfirmDialog.c:65 msgid "Are you sure you want to quit?" -msgstr "Êtes-vous sûr de vouloir quitter ?" +msgstr "Veux-tu vraiment quitter ?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:69 msgid "Really delete files?" @@ -638,7 +665,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI :" @@ -649,19 +676,19 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Fichier :" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" -msgstr "Sélectionner un dossier" +msgstr "Sélectionnez un dossier" #. Folder - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:174 msgid "_Folder:" -msgstr "_Dossier :" +msgstr "_Dossier :" #. Referrer - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:189 @@ -686,14 +713,14 @@ #. frame for login #: ../../po/../ui-gtk/UgtkDownloadForm.c:238 msgid "Login" -msgstr "Identifiant" +msgstr "Connexion" #. User - label #. user label & entry #: ../../po/../ui-gtk/UgtkDownloadForm.c:252 #: ../../po/../ui-gtk/UgtkProxyForm.c:149 msgid "User:" -msgstr "Utilisateur :" +msgstr "Identifiant :" #. Password - label #. password label & entry @@ -708,9 +735,9 @@ msgstr "Fichier cookie :" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" -msgstr "Sélectionner fichier cookie" +msgstr "Sélectionner Fichier Cookie" #. label - post file #: ../../po/../ui-gtk/UgtkDownloadForm.c:319 @@ -718,9 +745,9 @@ msgstr "Fichier posté :" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" -msgstr "Sélectionnez le fichier posté" +msgstr "Sélectionnez Fichier Posté" #. label - user agent #: ../../po/../ui-gtk/UgtkDownloadForm.c:346 @@ -740,7 +767,7 @@ #. Retry delay - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:384 msgid "Retry _delay:" -msgstr "_Délai pour réessayer :" +msgstr "_Délai pour réessayer " #. seconds - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:399 @@ -755,12 +782,12 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" -msgstr "Kio/s" +msgstr "Ko/s" #. label - Max download speed #: ../../po/../ui-gtk/UgtkDownloadForm.c:424 @@ -779,32 +806,32 @@ #. Batch Downloads --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:94 msgid "_Batch Downloads" -msgstr "Lot de téléchargements" +msgstr "Traitement par lot de téléchargement" #. Batch downloads - Clipboard batch #: ../../po/../ui-gtk/UgtkMenubar-ui.c:100 msgid "_Clipboard batch..." -msgstr "Lot depuis le presse-papiers" +msgstr "Traitement par lot du _presse-papiers ..." #. Batch downloads - URL Sequence batch #: ../../po/../ui-gtk/UgtkMenubar-ui.c:110 msgid "_URL Sequence batch..." -msgstr "Lot d'une séquence d'URL" +msgstr "Lot de séquence URL..." #. Batch downloads - Text file import (.txt) #: ../../po/../ui-gtk/UgtkMenubar-ui.c:120 msgid "_Text file import (.txt)..." -msgstr "_Importer un fichier texte (.txt)..." +msgstr "Importer un fichier _Texte (.txt)..." #. Batch downloads - HTML file import (.html) #: ../../po/../ui-gtk/UgtkMenubar-ui.c:130 msgid "_HTML file import (.html)..." -msgstr "_Importer un fichier HTML (.html)..." +msgstr "Importer un fichier _HTML (.html)..." #. Batch downloads - Export to Text file (.txt) #: ../../po/../ui-gtk/UgtkMenubar-ui.c:142 msgid "_Export to Text file (.txt)..." -msgstr "_Exporter vers un fichier texte (.txt)..." +msgstr "_Exporter vers un fichier texte (.txt) ..." #. Open Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 @@ -828,24 +855,25 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 msgid "_Edit" -msgstr "_Editer" +msgstr "_Éditer" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 msgid "Clipboard _Monitor" -msgstr "_Surveiller le presse-papiers" +msgstr "_Surveiller le Presse-papiers" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 #: ../../po/../ui-gtk/UgtkTrayIcon.c:103 msgid "Clipboard works quietly" -msgstr "Le presse-papiers fonctionne silencieusement" +msgstr "Le presse-papiers fonctionne discrètement" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:107 msgid "Command-line works quietly" -msgstr "La ligne de commande fonctionne silencieusement" +msgstr "La ligne de commande fonctionne discrètement" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 #: ../../po/../ui-gtk/UgtkTrayIcon.c:111 @@ -853,10 +881,10 @@ msgstr "Passer l'URI existante" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" -msgstr "Appliquer récemment les paramètres de téléchargement" +msgid "Apply recent download settings" +msgstr "Appliquer les paramètres de téléchargement récents" #. --- Completion Auto-Actions --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 @@ -874,11 +902,11 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 msgid "Suspend" -msgstr "Mode de veille (Suspend)" +msgstr "Suspendre" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 msgid "Shutdown" -msgstr "Quitter" +msgstr "Éteindre" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 msgid "Reboot" @@ -886,7 +914,7 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 msgid "Custom" -msgstr "Personnalisation" +msgstr "Personnalisé" #. Completion Auto-Actions - Remember #: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 @@ -909,15 +937,15 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:304 msgid "_View" -msgstr "Aperç_u" +msgstr "_Vue" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:308 msgid "_Toolbar" -msgstr "_Barre d'outils" +msgstr "Barre d'_outils" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:313 msgid "Statusbar" -msgstr "Barre de statuts" +msgstr "Barre d’état" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:323 msgid "_Summary" @@ -926,7 +954,7 @@ #. Summary Items --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:331 msgid "Summary _Items" -msgstr "Résumé des _items" +msgstr "Résumé des _Items" #. Summary Items - Name #: ../../po/../ui-gtk/UgtkMenubar-ui.c:336 @@ -957,9 +985,9 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:376 msgid "Download _Columns" -msgstr "_Colonnes téléchargement" +msgstr "_Colonnes Téléchargement" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Treminé" @@ -982,29 +1010,29 @@ #. Download Columns - Left #: ../../po/../ui-gtk/UgtkMenubar-ui.c:401 msgid "_Left" -msgstr "_Temps restant" +msgstr "_Restant" #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Vitesse" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" -msgstr "Vitesse de sortie" +msgstr "Vitesse d'émission" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" -msgstr "Téléchargé" +msgstr "Envoyé" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Ratio" @@ -1015,13 +1043,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" -msgstr "Ajouté le" +msgstr "Ajouté" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Terminé" @@ -1037,13 +1065,14 @@ #. Delete Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:476 msgid "_Delete Category" -msgstr "Catégorie _supprimée" +msgstr "Catégorie _Supprimée" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:517 msgid "_Download" msgstr "_Téléchargement" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "Supprimer l'entrée" @@ -1058,7 +1087,7 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 msgid "Force Start" -msgstr "Forcer le démarrage" +msgstr "Forcer le Démarrage" #. Move to --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:596 @@ -1072,15 +1101,15 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:654 msgid "_High" -msgstr "_Haute" +msgstr "En _haut" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:659 msgid "_Normal" -msgstr "_Normale" +msgstr "_Normal" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:664 msgid "_Low" -msgstr "_Basse" +msgstr "En _bas" #. Get Help Online #: ../../po/../ui-gtk/UgtkMenubar-ui.c:687 @@ -1105,7 +1134,7 @@ #. Report a Bug #: ../../po/../ui-gtk/UgtkMenubar-ui.c:731 msgid "Report a Bug" -msgstr "Rapporter un bug" +msgstr "Rapport de bug" #. Keyboard Shortcuts #: ../../po/../ui-gtk/UgtkMenubar-ui.c:742 @@ -1117,116 +1146,116 @@ msgid "Check for Updates" msgstr "Vérifier les mises à jour" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Paramètres" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Impossible de lancer l'application par défaut pour le fichier « %s ». " -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "« %s » - Ce dossier n'existe pas." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "l'URI avait existé" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "Cette URI avait existé, êtes vous sûr de vouloir continuer ?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Général" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" -msgstr "Avancé" +msgstr "Options avancées" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Paramètres catégorie" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Par défaut pour le nouveau téléchargement 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Défaut 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "sans nom" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" -msgstr "En attente" +msgstr "En Pause" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" -msgstr "Téléchargement" +msgstr "Envoi en cours" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Terminé" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Supprimé" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "File d'attente" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Actif" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Tous les états" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Nom" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" -msgstr "Complet" +msgstr "Complété" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Taille" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Fini" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Restant" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Quantité" @@ -1241,79 +1270,79 @@ #: ../../po/../ui-gtk/UgtkProxyForm.c:69 msgid "Default" -msgstr "Défaut" +msgstr "Standard" #. host label & entry #: ../../po/../ui-gtk/UgtkProxyForm.c:121 msgid "Host:" -msgstr "Serveur :" +msgstr "Hôte :" #. port label & entry #: ../../po/../ui-gtk/UgtkProxyForm.c:132 msgid "Port:" -msgstr "Port :" +msgstr "Port :" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" -msgstr "Socket :" +msgstr "Socket :" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" -msgstr "Args socket :" +msgstr "Socket args:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Élément :" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Lun" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Mar" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Mer" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Jeu" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Ven" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Sam" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Dim" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" -msgstr "_Activer le planificateur" +msgstr "_Activer le Planificateur" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Eteindre" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- Arrêter toutes les tâches" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normal" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- Exécuter normalement les tâches " @@ -1323,7 +1352,7 @@ #: ../../po/../ui-gtk/UgtkSelector.c:259 msgid "None" -msgstr "Aucun" +msgstr "Aucune" #: ../../po/../ui-gtk/UgtkSelector.c:276 msgid "Mark by filter" @@ -1341,12 +1370,12 @@ #. left side #: ../../po/../ui-gtk/UgtkSelector.c:305 msgid "Host" -msgstr "Serveur" +msgstr "Hôte" #. right side (filename extension) #: ../../po/../ui-gtk/UgtkSelector.c:309 msgid "File Ext." -msgstr "Fichier ext." +msgstr "Ext. Fichier" #: ../../po/../ui-gtk/UgtkSelector.c:449 msgid "URL" @@ -1359,12 +1388,12 @@ #. select all #: ../../po/../ui-gtk/UgtkSelector.c:797 msgid "Mark _All" -msgstr "Marquer _tout" +msgstr "Marquer _Tout" #. select none #: ../../po/../ui-gtk/UgtkSelector.c:801 msgid "Mark _None" -msgstr "Marquer _aucun" +msgstr "Marquer _Aucun" #. select by filter #: ../../po/../ui-gtk/UgtkSelector.c:805 @@ -1372,278 +1401,313 @@ msgstr "_Marquer par filtre ..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "ex :" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_De :" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" -msgstr "Pour :" +msgstr "Vers :" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "Nb :" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" -msgstr "_De :" +msgstr "_De" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "sensible à la casse" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Pas de caractère joker (*) dans l'URL." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "L'URL est invalide." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Pas de caractère dans les entrées « De » ou « Pour »." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" -msgstr "Prévisualisation" +msgstr "Aperçu" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Interface utilisateur" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Bande passante" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" -msgstr "Planificateur" +msgstr "Échéancier" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" -msgstr "Greffon" +msgstr "Plug-in" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "Site Web média" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Autres" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "Activer le moniteur de presse-papiers" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Mode silencieux" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Indice de la catégorie par défaut" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "Ajouter à la catégorie Nième si aucune catégorie appariés." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "Surveiller URL site Web média" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "Surveiller presse-papiers pour les types de fichiers spécifiés :" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." -msgstr "Séparer les types avec le caractère «|»." +msgstr "Séparer les types avec le caractère '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Vous pouvez utiliser des expressions régulières ici." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" -msgstr "Confirmatio" +msgstr "Confirmation" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Afficher la boite de dialogue de confirmation lors de la sortie" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Confirmer lors de la suppression de fichiers" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Zone de notification" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Toujours afficher dans la barre d'icônes" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Réduire en icône au démarrage" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Fermer le plateau sur la fenêtre fermée" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Utilisez App Indicateur d'Ubuntu" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" -msgstr "Activer mode hors ligne au démarrage" +msgstr "Activer le mode hors ligne au démarrage" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Notification au démarrage des téléchargements" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Son quand le téléchargement est fini" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Afficher grande icône" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "Tout cela affectera tous les greffons." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Limite de vitesse globale" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Vitesse de téléchargement max" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Vitesse de téléchargement max" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Complétion Auto-Actions" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Commande personnalisée :" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Commande personnalisée en cas d'erreur :" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "Sauvegarde _Auto" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "minutes" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Intervalle :" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "minutes" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Paramètres ligne de commande" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Utiliser '--quiet' par défaut" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "Ordre d'appariement des greffons :" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Options des greffons Aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "Jeton secret d'autorisation RPC " #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Limite de vitesse goblale pour aria2 seulement" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Lancement au démarrage d'aria2" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "Arrêt d'aria2 à la sortie" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Lancer aria2 sur périphérique local" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" -msgstr "Chemin" +msgstr "Chemin d'accès" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Arguments" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Vous devez redémarrer uGet après l'avoir modifié." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "Mode de correspondance média :" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Conditions de correspondance" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Qualité :" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Type :" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Fichier" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Dossier" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" -msgstr "item" +msgstr "Élément" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Valeur" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" -msgstr "Copier _tout" +msgstr "To_ut copier" #. Show window #: ../../po/../ui-gtk/UgtkTrayIcon.c:141 msgid "Show window" -msgstr "Voir la fenêtre" +msgstr "Afficher la fenêtre" #. Offline mode #: ../../po/../ui-gtk/UgtkTrayIcon.c:147 diff -Nru uget-2.0.2/po/he.po uget-2.2.2/po/he.po --- uget-2.0.2/po/he.po 2015-09-11 12:14:39.000000000 +0000 +++ uget-2.2.2/po/he.po 2019-05-19 16:49:06.000000000 +0000 @@ -8,15 +8,14 @@ msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-27 06:51+0000\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" "Last-Translator: Michael Tunnell \n" -"Language-Team: Hebrew (http://www.transifex.com/projects/p/uget/language/" -"he/)\n" -"Language: he\n" +"Language-Team: Hebrew (http://www.transifex.com/uget/uget/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -24,15 +23,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "" @@ -47,7 +43,7 @@ msgstr "מעביר..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "נסה שוב" @@ -57,7 +53,7 @@ msgstr "הורדה הושלמה" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "סיים" @@ -68,12 +64,12 @@ msgstr "ניתן להשהיה" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "לא ניתן להשהיה" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "" @@ -83,7 +79,7 @@ msgstr "לא הצליח להתחבר לשרת." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "התקיה כשלה בהיווצרותה." @@ -147,134 +143,158 @@ msgid "cookie file not found." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "" #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "" #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "" #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "" +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "מנהל הורדות" @@ -291,249 +311,266 @@ msgid "uGet Project Manager: " msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "" #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "מצב" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "" #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "" #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "" #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "" #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "torrent חדש..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "" -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "קטגוריה חדשה" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "העתק - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "" #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "שגיאה" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "הודעה" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "" @@ -563,14 +600,17 @@ msgid "Category _name:" msgstr "" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "" @@ -623,7 +663,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "" @@ -634,12 +674,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "בחר תיקיה" @@ -693,7 +733,7 @@ msgstr "" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "" @@ -703,7 +743,7 @@ msgstr "" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "" @@ -740,10 +780,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "" @@ -815,7 +855,8 @@ msgid "_Edit" msgstr "" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -838,9 +879,9 @@ msgstr "" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "" #. --- Completion Auto-Actions --- start --- @@ -944,7 +985,7 @@ msgid "Download _Columns" msgstr "" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "" @@ -971,25 +1012,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "" @@ -1000,13 +1041,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "נוסף ב-" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "" @@ -1028,7 +1069,8 @@ msgid "_Download" msgstr "הורד" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "" @@ -1102,116 +1144,116 @@ msgid "Check for Updates" msgstr "" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "" -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "" #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "כללי" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "גודל" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "" @@ -1238,67 +1280,67 @@ msgid "Port:" msgstr "" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "" @@ -1357,271 +1399,306 @@ msgstr "" #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "רגיש לאותיות גדולות" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "" -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "" -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "" -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "" #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 +msgid "_Interval:" msgstr "" -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 -msgid "_Interval:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" msgstr "" #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "איבר" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "העתק הכל" diff -Nru uget-2.0.2/po/hr.po uget-2.2.2/po/hr.po --- uget-2.0.2/po/hr.po 2015-09-11 12:14:39.000000000 +0000 +++ uget-2.2.2/po/hr.po 2019-05-19 16:49:06.000000000 +0000 @@ -8,32 +8,27 @@ msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-01-14 22:31+0000\n" -"Last-Translator: gogo \n" -"Language-Team: Croatian (http://www.transifex.com/projects/p/uget/language/" -"hr/)\n" -"Language: hr\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: Michael Tunnell \n" +"Language-Team: Croatian (http://www.transifex.com/uget/uget/language/hr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: ../../po/../uget/pwmd.c:32 #, c-format msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Sve kategorije" @@ -48,7 +43,7 @@ msgstr "Prenošenje..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Pokušaj ponovno" @@ -58,7 +53,7 @@ msgstr "Preuzimanje završeno" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Završeno" @@ -69,12 +64,12 @@ msgstr "" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Izlazna datoteka ne može biti preimenovana." @@ -84,16 +79,14 @@ msgstr "Nemoguće povezivanje s računalom." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Mapa ne može biti stvorena" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:83 msgid "File can't be created (bad filename or file exist)." -msgstr "" -"Datoteka ne može bit stvorena (pogrešan naziv datoteke ili datoteka ne " -"postoji)." +msgstr "Datoteka ne može bit stvorena (pogrešan naziv datoteke ili datoteka ne postoji)." #. UGET_EVENT_ERROR_FILE_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:84 @@ -113,9 +106,7 @@ #. UGET_EVENT_ERROR_INCORRECT_SOURCE, #: ../../po/../uget/UgetEvent.c:87 msgid "Out of resource (disk full or run out of memory)." -msgstr "" -"Premalo resursa (nema slobodnog prostora na disku ili nema dovoljno " -"memorije)." +msgstr "Premalo resursa (nema slobodnog prostora na disku ili nema dovoljno memorije)." #. UGET_EVENT_ERROR_OUT_OF_RESOURCE #: ../../po/../uget/UgetEvent.c:88 @@ -152,134 +143,158 @@ msgid "cookie file not found." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: dogodila se nepoznata greška." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: istek vremena." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: izvor nije pronađen." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "" #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "" #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "" #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Previše preusmjeravanja." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "" +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Upravitelj preuzimanja" @@ -296,249 +311,266 @@ msgid "uGet Project Manager: " msgstr "uGet Upravitelj projektom " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "zadaci" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Novo iz međuspremnika" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Novo preuzimanje" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Međuspremnik" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Naredbeni redak" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Nastala je greška" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Nastala je greška pri preuzimanju." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Preuzimanje započinje" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Pokretanje preuzimanja u popisu čekanja." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Preuzimanje završeno" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Sva preuzimanja s popisa čekanja su završena." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Stanje" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Kategorija" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Stvori novo preuzimanje" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Novo _preuzimanje..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Nova _kategorija..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "" #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "" #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Novi torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Nova metapoveznica..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Spremi sve postavke" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Pokreni odabrano preuzimanje" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Pauziraj odabrano preuzimanje" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Prikaži svojstva odabranog preuzimanja" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Pomakni odabrano preuzimanje gore" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Pomakni odabrano preuzimanje dolje" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Pomakni odabrano preuzimanje na vrh" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Pomakni odabrano preuzimanje na dno" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Nova kategorija" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Kopiraj - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Svojstva kategorije" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Svojstva preuzimanja" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Novi torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Nova metapoveznica" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Otvori datoteku torrenta" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Otvori datoteku metapoveznice" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "Neuspjelo spremanje datoteke kategorije." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "Neuspjelo učitavanje datoteke kategorije." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Spremi datoteku kategorije" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Otvori datoteku kategorije" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Poveznica " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Slika " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Tekstna datoteka" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Uvezi URL-ove s HTML datoteke" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Uvezi URL-ove s tekstne datoteke" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Izvezi URL-ove u tekstnu datoteku" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Nema pronađenih URL-ova u međuspremniku." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Svi URL-ovi su postojali." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Greška" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Poruka" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Odabrano %d stavki" @@ -550,8 +582,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"pokrenuli smo prikupljanje donacija za budući razvoj uGet-a, kliknite ovdje" +msgstr "pokrenuli smo prikupljanje donacija za budući razvoj uGet-a, kliknite ovdje" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -569,14 +600,17 @@ msgid "Category _name:" msgstr "Naziv _kategorije:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Aktivna _preuzimanja:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Kapacitet završenog:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Kapacitet obrisanog:" @@ -629,7 +663,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -640,12 +674,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Datoteka:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Odaberi mapu" @@ -699,7 +733,7 @@ msgstr "Datoteka kolačića:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Odaberi datoteku kolačića" @@ -709,7 +743,7 @@ msgstr "" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "" @@ -746,10 +780,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -821,7 +855,8 @@ msgid "_Edit" msgstr "_Uredi" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -844,9 +879,9 @@ msgstr "" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Primijeni nedavne postavke preuzimanja" #. --- Completion Auto-Actions --- start --- @@ -950,7 +985,7 @@ msgid "Download _Columns" msgstr "Stupci _preuzimanja" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Završeno" @@ -977,25 +1012,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Brzina" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Brzina slanja" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Poslano" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Omjer" @@ -1006,13 +1041,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Dodano" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Završeno" @@ -1034,7 +1069,8 @@ msgid "_Download" msgstr "_Preuzimanje" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "" @@ -1108,116 +1144,116 @@ msgid "Check for Updates" msgstr "Provjerite ažuriranja" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Postavke" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Nemoguće pokretanje zadane aplikacije za datoteku '%s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - Ova mapa ne postoji." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Općenito" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Napredno" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Postavke kategorije" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Zadano za novo preuzimanje 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Zadano 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "bezimeno" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Pauzirano" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Slanje" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Završeno" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Obrisano" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Na čekanju" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Aktivno" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Sva stanja" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Naziv" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Završeno" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Veličina" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Pokrenuto" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Završeno" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Kvantiteta" @@ -1244,67 +1280,67 @@ msgid "Port:" msgstr "Ulaz:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Element:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Pon" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Uto" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Sri" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Čet" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Pet" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Sub" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Ned" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Omogući raspored" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Isključi" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- zaustavi sve zadatke" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normalno" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- pokreni zadatak normalno" @@ -1363,271 +1399,306 @@ msgstr "_Označi prema filteru..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "npr." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Od:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "Na:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "znamenka:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "O_d:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "velika-mala slova" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Bez zamjenskih(*) znakova u URL unosu." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL nije valjan." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Nema znakova u 'Od' ili 'Na' unosu." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Pregled" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Korisničko sučelje" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Raspored" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Dodatak" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Ostalo" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Omogući nadgledanje međuspremnika" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Tihi način" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "_Nadgledaj međuspremnik za određene vrste datoteka:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Razdvoji vrste datoteka sa znakom '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Možete koristiti uobičajene izraze ovdje." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Potvrda" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Prikaži dijalog potvrde pri izlazu" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Potvrdi pri brisanju datoteka" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Traka sustava" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Uvijek prikaži ikonu trake sustava" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Smanji u traku sustava pri pokretanju" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Smanji u traku sustava pri zatvaranju prozora" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Korisit Ubuntu App Indikator " -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Omogući odspojeni način pri pokretanju" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Obavijest pokretanja preuzimanja" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Zvuk završetka preuzimanja" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "" #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "minuta" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Interval:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "minuta" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Postavke naredbenog redka" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Koristi '--quiet' kao zadano" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Pokreni aria2 pri pokretanju" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Zatvori aria2 na izlazu" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Putanja" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Argumenti" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Datoteka" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Mapa" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Stavka" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Vrijednost" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Kopiraj _sve" diff -Nru uget-2.0.2/po/hu.po uget-2.2.2/po/hu.po --- uget-2.0.2/po/hu.po 2015-09-11 12:14:40.000000000 +0000 +++ uget-2.2.2/po/hu.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,20 +3,19 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Balzamon, 2014-2015 +# Balzamon, 2016-2018 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-01-08 15:05+0000\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2018-02-06 10:03+0000\n" "Last-Translator: Balzamon\n" -"Language-Team: Hungarian (http://www.transifex.com/projects/p/uget/language/" -"hu/)\n" -"Language: hu\n" +"Language-Team: Hungarian (http://www.transifex.com/uget/uget/language/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -24,15 +23,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Összes kategória" @@ -47,7 +43,7 @@ msgstr "Átvitel..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Újra" @@ -57,7 +53,7 @@ msgstr "A letöltés kész." #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Kész" @@ -68,12 +64,12 @@ msgstr "Folytatható" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Nem folytatható" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "A kimeneti fájl nem nevezhető át." @@ -83,7 +79,7 @@ msgstr "kapcsolódás a kiszolgálóhoz sikertelen" #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "A mappa nem hozható létre." @@ -140,142 +136,165 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "post fájl nem található" #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." +msgstr "A cookie fájl nem található." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "A videót törölték." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Hiba történt a video info beszerzésekor." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Hiba történt a videó weboldalának betöltésekor." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." msgstr "" #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: ismeretlen hiba történt." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: időtúllépési hiba." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: a forrás nem található." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 a forrás nem létezik hibát észlelt. Lásd --max-file-not-found opció" +msgstr "aria2 a forrás nem létezik hibát észlelt. Lásd --max-file-not-found opció" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: az átviteli sebesség túl kicsi" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: hálózati hiba." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: befejezetlen letöltés." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Az erőforrások elfogytak." #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "aria2: a szelet hossza eltér az .aria2 kontroll fájlban megadottétól." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 letöltötte már ezt a fájlt." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 letöltötte már ugyanezt a torrent szelet info-t." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: A fájl már létezik. Lásd --allow-overwrite opció." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: Nem nyitható meg ugyanaz a fájl." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "aria2: az új fájl nem hozható létre vagy nem írható felül létező fájl." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: fájl írás/olvasási hiba." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: a névfeloldás meghiúsult." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: nem elemezhető Metalink dokumentum." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: az FTP parancs végrehajtása meghiúsult." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: nem várt vagy hibás HTTP válasz fejléc" -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Túl sok átirányítás." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: HTTP jogosultsági hiba." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "aria2: nem elemezhető kódolt fájl(.torrent file)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: a torrent fájl hibás vagy hiányzó információ" -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: Magnet URI hibás" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "aria2: hibás/ismeretlen opció" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2: a távoli szerver nem elérhető a kérés feldolgozásához" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: nem elemezhető JSON-RPC kérés" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Nincs válasz. Az aria2 kilépett?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2: a csoportazonosító eltávolítva." +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "A media link nem nyitható meg." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Letöltéskezelő" @@ -292,249 +311,266 @@ msgid "uGet Project Manager: " msgstr "uGet projekt menedzser:" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "feladatok" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Új vágólapról" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Új letöltés" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Vágólap" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Parancssor" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Hiba történt" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Hiba történt a letöltéskor." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Letöltés indítása" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Letöltési sor indítása." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Letöltés kész" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Minden sorban álló letöltés befejeződött." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Állapot" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Kategória" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Új letöltés létrehozása" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Új _letöltés..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Új _Kategória..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Új kötegelt letöltés _vágólapról..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Új _letöltési sor URL..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Új torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Új metalink..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Összes beállítás mentése" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Kiválasztott letöltés indítása" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Kiválasztott letöltés megállítása" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Kiválasztott letöltés tulajdonságai" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Rangsor növelés" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Rangsor csökkentés" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Rangsor legmagasabb" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Rangsor legalacsonyabb" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Új kategória" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Másolás -" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Kategória beállítások" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Letöltési beállítások" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Új torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Új metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Torrent fájl megnyitása" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Torrent fájl (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Metalink fájl megnyitása" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "A kategória fájl mentése nem sikerült." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "A kategória fájl betöltése nem sikerült." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Kategória fájl mentése" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Kategória fájl megnyitása" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "JSON file (*.json)" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Link " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Kép " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Szöveg fájl" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Hivatkozás import HTML fájlból" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "HTML file (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Hivatkozás import vágólapról" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "A hivatkozások exportálása szövegfájlba" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Letöltési sor URL" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Nincs hivatkozás a vágólapon" -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Már az összes URL létezik." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Köteg vágólapról" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Új" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Hiba" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Üzenet" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Kiválasztott %d elemek" @@ -564,14 +600,17 @@ msgid "Category _name:" msgstr "Kategória _név:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Aktív _letöltések:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Befejezett" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Töröltek:" @@ -624,7 +663,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -635,12 +674,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Fájl:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Mappa választás" @@ -694,7 +733,7 @@ msgstr "Cookie fájl:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Cookie fájl kiválasztás" @@ -704,7 +743,7 @@ msgstr "Post fájl:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Post fájl kiválasztása" @@ -741,10 +780,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -816,7 +855,8 @@ msgid "_Edit" msgstr "_Szerkesztés" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -839,9 +879,9 @@ msgstr "Létező URI átugrása" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Alkalmazd a legújabb letöltési beállításokat" #. --- Completion Auto-Actions --- start --- @@ -945,7 +985,7 @@ msgid "Download _Columns" msgstr "Letöltési _oszlopok" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Teljes" @@ -972,25 +1012,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Sebesség" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Sebesség növelés" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Feltöltés" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Arány" @@ -1001,13 +1041,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Hozzáadott" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Befejezett" @@ -1029,7 +1069,8 @@ msgid "_Download" msgstr "_Letöltés" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "_Bejegyzés törlése" @@ -1103,116 +1144,116 @@ msgid "Check for Updates" msgstr "Frissítések keresése" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Beállítások" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Az alapértelmezett alkalmazás nem futtatható a '%s' fájlhoz." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - A mappa nem létezik." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "URI már létezik" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "Az URI már létezik, biztos hogy folytatod?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Általános" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Haladó" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Kategória beállítások" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Alapértelmezett letöltés 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Alapértelmezett 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "névtelen" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Megállt" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Feltöltés" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Kész" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Törölt" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Várólista" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Aktív" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Összes állapot" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Név" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Kész" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Méret" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Eltelt idő" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Hátralévő" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Mennyiség" @@ -1239,67 +1280,67 @@ msgid "Port:" msgstr "Port:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Kommunikációs végpont:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Elem:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Hét" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Ked" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Sze" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Csü" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Pén" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Szo" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Vas" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Ütemező engedélyezése" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Kikapcsolás" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- minden folyamat leállítása" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normál" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- folyamat futtatása normál módban" @@ -1358,271 +1399,306 @@ msgstr "_Kijelölés szűrővel..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "pl" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Innen:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "To:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "számjegyek:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "F_rom:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "nagybetű-érzékeny" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Nincs joker(*) karakter az URL bejegyzés" -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "A hivatkozás hibás." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Nincs karakter a 'From' vagy a 'To' bejegyzésben." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Előnézet" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Felhasználói felület" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Sávszélesség" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Ütemező" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Beépülő" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Egyebek" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Vágólap figyelés engedélyezése" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Néma üzemmód" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Alapértelmezett kategória index" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "Hozzáadás az N-dik kategóriához, ha nincs egyező kategória." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "Vágólap figyelés megadott fájltípusok után:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Típusok elválasztása '|' karakterrel" -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Reguláris kifejezés használható." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Megerősítés" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Mutasd a megerősítés ablakot kilépéskor." -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Megerősítés fájlok törlésekor" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Rendszertálca" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Mindig mutassa a tray ikont" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Indítás minimódban a tálcán" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Tedd tálcára az ablak bezárásakor" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Használd az Ubuntu alkalmazás indikátort" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Offline mód engedélyezése induláskor" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Értesítés a letöltés megkezdésekor" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Hangjelzés a letöltés végén" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Nagy ikon" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "Minden plug-in-ra vonatkozik." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Globális sebesség korlátozás" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Maximális feltöltési sebesség:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Maximális letöltés sebesség:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Az automatikus műveletek befejezése" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Egyedi parancs" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Hiba esetén egyedi parancs futtatása" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "_Automatikus mentés" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "percek" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Intervallum:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "percek" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Parancssori beállítások" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Használd a '--csendes módot' alapértelmezetten" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "Plug-in egyezőségi sorrend:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Aria2 beépülők beállításai" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "RPC jogosultsági titkosító eszköz" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Globális letöltési sebesség korlátozás csak az aria2-nek" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Aria2 futtatása indításkor" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Aria2 leállítása kilépéskor" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Futtasd az aria2 a helyi meghajtón" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Útvonal" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Paraméterek" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Az uGet újraindítása szükséges a módosítások érvényesítéséhez." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Egyező feltételek" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Minőség:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Típus:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Fájl" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Mappa" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Elem" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Érték" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Összes _másolás" diff -Nru uget-2.0.2/po/id.po uget-2.2.2/po/id.po --- uget-2.0.2/po/id.po 2015-09-11 12:14:40.000000000 +0000 +++ uget-2.2.2/po/id.po 2019-05-19 16:49:06.000000000 +0000 @@ -7,22 +7,22 @@ # Hasan Al Banna, 2014 # Ikhwan Setiawan , 2014 # Muhammad Iqbal , 2013 -# rizmut , 2014 -# Yurike, 2014 # Rendiyono Wahyu Saputro , 2015 +# Rizal Muttaqin , 2014 +# Sony 2TH , 2016 +# Yurike, 2014 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-01-10 13:20+0000\n" -"Last-Translator: Rendiyono Wahyu Saputro \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/uget/language/" -"id/)\n" -"Language: id\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: Sony 2TH \n" +"Language-Team: Indonesian (http://www.transifex.com/uget/uget/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../po/../uget/pwmd.c:32 @@ -30,15 +30,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Semua Kategori" @@ -53,7 +50,7 @@ msgstr "Sedang mengirim" #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Ulangi" @@ -63,7 +60,7 @@ msgstr "Download selesai" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Selesai" @@ -74,12 +71,12 @@ msgstr "Dapat dilanjutkan" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Tidak dapat dilanjutkan" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Tidak dapat mengubah nama file" @@ -89,9 +86,9 @@ msgstr "Tidak dapat menyambung ke host" #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." -msgstr "Berkas/Folder tidak bisa dibuat " +msgstr "Map tidak bisa dibuat " #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:83 @@ -146,145 +143,165 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "catatan berkas tidak ditemukan." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "cookie berkas tidak ditemukan." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Video ini telah dihapus." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Kesalahan terjadi selama mendapatkan info video." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Kesalahan terjadi selama mendapatkan halaman web video." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "Tidak ada video_id ditemukan di URL Youtube ini." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: sebuah galat yang tidak diketahui terjadi." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: kehabisan waktu terjadi." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: sumber daya tidak ditemukan." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 melihat angka spesifik dari galat 'sumber daya tidak ditemukan'. Lihat " -"opsi --max-file-not-found" +msgstr "aria2 melihat angka spesifik dari galat 'sumber daya tidak ditemukan'. Lihat opsi --max-file-not-found" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: kecepatan terlalu lambat." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: masalah jaringan terjadi." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: Unduhan yang belum selesai." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Keluar dari sumber daya" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "aria2: panjang bagian berbeda dari satunya di berkas kendali .aria2." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 telah mengunduh berkas yang sama." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 telah mengunduh informasi hash torrent." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: berkas sudah ada. Lihat opsi --boleh-timpa." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: tidak bisa membuka berkas yang ada." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "aria2: tidak bisa membuat berkas baru atau memotong berkas yang ada." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: galat I/O berkas terjadi." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: resolusi nama gagal." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: tidak bisa mengurai dokumen Metalink." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: perintah FTP gagal." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: kepala respon HTTP buruk atau tak terduga." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Terlalu banyak pengalihan" -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: autorisasi HTTP gagal." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "aria2: tidak bisa mengurai berkas bencoded(biasanya berkas .torrent)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: berkas torrent rusak atau kehilangan informasi." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: Magnet URI buruk." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" -"aria2: opsi buruk/tidak dikenal telah diberikan atau argumen opsi tak " -"terduga diberikan." +msgstr "aria2: opsi buruk/tidak dikenal telah diberikan atau argumen opsi tak terduga diberikan." -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2: remote server tidak dapat menangani permintaan." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: tidak dapat mengurai permintaan JSON-RPC." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Tidak ada respon. Apakah aria2 mati?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2: gid telah dihapus." +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Gagal untuk mendapatkan tautan media." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "Tidak sesuai media." + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Download Manager" @@ -301,249 +318,266 @@ msgid "uGet Project Manager: " msgstr "Manajer Proyek uGet: " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "tugas" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Baru dari klipboard" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Download Baru" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Papan klip" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Baris perintah" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Galat Terjadi" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Galat Terjadi ketika sedang mengunduh." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Memulai Unduhan" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Memulai antrian unduhan" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Unduhan selesai" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Semua antrian unduhan sudah selesai" #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Status" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Kategori" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Membuat unduhan baru" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Unduhan_ Baru" #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Kategori_Baru" #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Batch_Klipboard Baru" #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Rangkaian baru kumpulan _URL" #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Torrent Baru..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Metalink Baru..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Simpan semua pengaturan" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Pilih unduhan untuk dilanjutkan" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Pilih unduhan untuk berhenti sebentar" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Atur properti unduhan yang dipilih" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Pindahkan unduhan terpilih keatas" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Pindah unduhan terpilih kebawah" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Pindah unduhan terpilih ke paling atas" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Pindah unduhan terpilih ke paling bawah" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Kategori Baru" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Salin -" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Kategori Properti" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Properti Download" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Torrent Baru" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Metalink Baru" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Buka file Torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Berkas torrent (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Membuka file Metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "Gagal untuk menyimpan berkas kategori" -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "Gagal untuk memuat berkas kategori" -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Simpan Berkas kategori" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Buka Berkas kategori" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "Berkas JSON (*.json)" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Tautan " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Gambar " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Berkas Teks" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Mengimpor URLs dari berkas HTML" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "Berkas HTML (*.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Mengimpor URLs dari berkas teks" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Berkas text biasa" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Ekspor URL ke berkas teks" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Urutan kumpulan URL" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Tidak ada URL ditemukan pada papan klip" -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Semua URL telah ada" -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Kumpulan papan klip" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Baru" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Kesalahan " -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Pesan" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Memilih %d items" @@ -555,9 +589,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"kami menjalankan Donation Drive untuk pengembangkan uGet ke depannya, tolong " -"klik" +msgstr "kami menjalankan Donation Drive untuk pengembangkan uGet ke depannya, tolong klik" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -575,14 +607,17 @@ msgid "Category _name:" msgstr "Nama_kategori" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Unduhan_aktif" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Kapasitas yang telah selesai:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Kapasitas yang didaur ulang:" @@ -635,7 +670,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -646,12 +681,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Nama Berkas:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Memilih Folder" @@ -705,7 +740,7 @@ msgstr "Berkas cookie" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Pilih Berkas Cookie" @@ -715,7 +750,7 @@ msgstr "Berkas postingan:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Pilih berkas postingan" @@ -752,10 +787,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -827,7 +862,8 @@ msgid "_Edit" msgstr "_Edit" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -850,9 +886,9 @@ msgstr "Lewati URL yang ada" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Terapkan pengaturan unduh baru-baru ini" #. --- Completion Auto-Actions --- start --- @@ -956,7 +992,7 @@ msgid "Download _Columns" msgstr "Kolom_ Unduhan" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Selesai" @@ -983,25 +1019,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Kecepatan" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Kecepatan Unggah" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Terunggah" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Perbandingan" @@ -1012,13 +1048,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Ditambahkan Pada" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Selesai Pada" @@ -1040,7 +1076,8 @@ msgid "_Download" msgstr "_Unduh" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "_Hapus Entri" @@ -1114,116 +1151,116 @@ msgid "Check for Updates" msgstr "Periksa Update" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Pengaturan" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Tidak bisa menjalankan aplikasi untuk file '%s'" -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." -msgstr "'%s' - Folder ini tidak ditemukan." +msgstr "'%s' - Berkas ini tidak ditemukan." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "URI telah ada" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "URI ini telah ada, apa kamu ingin lanjutkan?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Umum" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Tingkat Lanjut" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Atur Kategori" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Bawaan untuk unduhan baru 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Bawaan 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "tidak dinamai" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Berhenti sejenak" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Mengunggah" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Selesai" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Kembalikan" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Antrian" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Aktif" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Semua Status" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Nama" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Selesai" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Ukuran" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Sudah berjalan" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Tersisa" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Kuantitas" @@ -1250,67 +1287,67 @@ msgid "Port:" msgstr "Port:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Soket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "args Socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Elemen:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Senin" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Selasa" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Rabu" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Kamis" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Jumat" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Sabtu" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Minggu" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Aktifkan Penjadwalan" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Matikan" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- hentikan semua tugas" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normal" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- jalankan tugas secara normal" @@ -1369,271 +1406,306 @@ msgstr "_Tandai berdasarkan filter" #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "contoh" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Dari:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "Ke:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "digit" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "_Dari:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "hurup besar & kecil dibedakan" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Tidak boleh ada character wildcard(*) di entri URL." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL tidak valid." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Tidak ada karakter di entri 'Dari' atau 'Ke'." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Lihat" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Antarmuka Pengguna" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Bandwidth" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Pengatur Jadwal" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Plug-In" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "Media situs web" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Lainnya" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Aktifkan pemantau papan klip" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Mode senyap" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Index kategori standar" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "Tambahkan ke kategori ke-N jika tidak ada kategori yang cocok." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "_Mengamati URL dari media situs web" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "Pantau papan klip untuk tipe berkas tertentu:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Pisahkan tuisan dengan carakter '|'" -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Anda dapat menggunakan regular ekspresi disini" -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Konfirmasi" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Tampilkan dialog konfirmasi saat keluar" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Konfirmasi ketika menghapus file" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Sistem Baki" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Selalu tampilkan ikon tray" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Minimalkan ke tray saat starup" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Tutup ke baki saat jendela ditutup" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Gunakan indikator Aplikasi Ubuntu" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Aktifkan modus offline saat startup" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Pemberitahuan memulai unduhan" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Aktifkan suara ketika unduhan selesai" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Menampilkan ikon besar" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "Ini akan mempengaruhi semua pengaya." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Batas kecepatan global" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Kecepatan maks unggah" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Kecepatan maks unduh" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Penyelesaian Aksi Otomatis" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Perintah kustom:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Perintah kustom jika galat terjadi:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "_Simpan otomatis" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "menit" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Jarak" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "menit" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Pengaturan baris perintah" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Gunakan '--senyap' sebagai default" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "Urutan pengaya yang cocok:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Opsi pengaya Aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "token autorisasi rahasia RPC" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Batas kecepatan global hanya untuk aria2 saja" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Nyalakan aria2 pada startup" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Matikan aria2 saat keluar" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Luncurkan aria2 pada perangkat lokal" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Lokasi" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Argumen" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Kamu harus hidupkan ulang uGet setelah memodifikasinya." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "Mode menyesuaikan media:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Menyesuaikan kondisi" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Kualitas:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Menggolongkan:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Berkas" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Folder" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Item" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Nilai" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Salin_Semua" diff -Nru uget-2.0.2/po/it.po uget-2.2.2/po/it.po --- uget-2.0.2/po/it.po 2015-09-11 12:14:40.000000000 +0000 +++ uget-2.2.2/po/it.po 2019-05-19 16:49:06.000000000 +0000 @@ -4,19 +4,21 @@ # # Translators: # bovirus , 2013 +# Giuseppe Pignataro (Fasbyte01) , 2017 +# Martino Mensio , 2018 +# tomberry , 2015 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-27 09:32+0000\n" -"Last-Translator: bovirus \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/uget/language/" -"it/)\n" -"Language: it\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2018-01-15 22:05+0000\n" +"Last-Translator: Martino Mensio \n" +"Language-Team: Italian (http://www.transifex.com/uget/uget/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -24,15 +26,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "Demone di gestione delle password: uget\n\nNel tentativo di connessione SSH a %s c'è stato un problema nella verifica della chiave del rispettivo host considerando il file degli host conosciuti e fidati perché la sua chiave host non è stata trovata.\n\nVuoi considerare questa connessione come fidata per questa e le future connessioni aggiungendo la chiave host di %s al file di host conosciuti?" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Tutte le categorie" @@ -47,7 +46,7 @@ msgstr "Trasmissione..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Riprova" @@ -57,7 +56,7 @@ msgstr "Download completato" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Completato" @@ -68,12 +67,12 @@ msgstr "Riprendibile" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Non riprendibile" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Impossibile rinominare il file destinazione." @@ -83,7 +82,7 @@ msgstr "impossibile connettersi all'host." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "La cartella non può essere creata." @@ -140,155 +139,172 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "file post non trovato." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "file coockie non trovato" + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Questo video è stato rimosso." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Errore durante il recupero delle informazioni video." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Errore durante il recupero della pagina web del video." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "Nessun video_id trovato nell'URL di YouTube." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: errore sconosociuto." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria: si è verificato un timeout." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: risorsa non trovata." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 vede il numero di errori 'risorse non trovate'. Vedi l'opzione --max-" -"file-not-found" +msgstr "aria2 vede il numero di errori 'risorse non trovate'. Vedi l'opzione --max-file-not-found" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: la velocità era troppo bassa." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: problemi di rete." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: download non completati." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Risorse esaurite" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." -msgstr "" -"aria2: lunghezza segmento differente da quella nel file di controllo .aria2." +msgstr "aria2: lunghezza segmento differente da quella nel file di controllo .aria2." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 sta scaricando lo stesso file." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 sta scaricando lo stesso torrrent info hash." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: il file esiste già. Vedi opzione --allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: impossibile aprire file esistente." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "aria2: impossibile creare nuovo file o troncare file esistente." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: errore I/O." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: risoluzione nomi fallita." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: impossibile analizzare documento metalink." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: comando FTP fallito." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: intestazione risposta HTTP errata o inaspettata." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Troppi reindirizzamenti." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: autorizzazione HTTP fallita." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." -msgstr "" -"aria2: impossibile analizzare file codificato (di solito file .torrent)." +msgstr "aria2: impossibile analizzare file codificato (di solito file .torrent)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: il file .torrent è corrotto o mancano informazioni." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: URI Magnet errata." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" -"aria2: opzione errata/non riconosciuta o argomento opzione inaspettato." +msgstr "aria2: opzione errata/non riconosciuta o argomento opzione inaspettato." -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2: il server remoto non può gestire la richiesta." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: impossibile analizzare richiesta JSON-RPC." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Nessuna risposta. Aria2 è in chiusura?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2: gid è stato rimosso." +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Impossibile aprire il link del media." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "Nessun media corrispondente." + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Gestore download" #: ../../po/../ui-gtk/UgtkAboutDialog.c:48 msgid "translator-credits" -msgstr "" -"bovirus (bovirus@gmail.com) e Giovanni Santini (giovanni.santini@katamail." -"com)" +msgstr "bovirus (bovirus@gmail.com) e Giovanni Santini (giovanni.santini@katamail.com)" #: ../../po/../ui-gtk/UgtkAboutDialog.c:80 msgid "uGet Founder: " @@ -298,249 +314,266 @@ msgid "uGet Project Manager: " msgstr "uGet (manager progetto): " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "attività" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Nuovo da Appunti" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Nuovo download" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Appunti" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Linea di comando" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Si è verificato un errroe" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Errore durante il download." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Inizio download" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Avvia elaborazione coda download." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Download completato" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Tutti i download in coda sono stati completati." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Stato" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Categoria" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Crea un nuovo download" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Nuovo _download..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Nuova _categoria..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Nuovo _batch Appunti " #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Batch nuova sequenza _URL" #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Nuovo torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Nuovo collegamento meta..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Salva tutte le impostazioni" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Imposta download come attivo" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Imposta download in pausa" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Imposta proprietà download" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Sposta in su il download selezionato" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Sposta in giù il download selezionato" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Sposta in alto il download selezionato" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Sposta in basso il download selezionato" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Nuova categoria" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Copia - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Proprietà categoria" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Proprietà download" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Nuovo torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Nuovo collegamento meta" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Apri file torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "File Torrent (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Apri file collegamento meta" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "Impossibile salvare file categoria." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "Caricamento fallito file categoria." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Salva file categoria" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Apri file categoria" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "File JSON (*.json)" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Collegamento " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Immagine " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "File di testo" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Importa URL da file HTML" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "File HTML (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Importa URL da file di testo" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "File di solo testo" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Esporta URL in un file di testo" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Batch sequenza URL" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Nessun URL trovato negli appunti." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Tutti gli URL esistevano." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Batch Appunti" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Nuovo" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Errore" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Messaggio" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Selezionati %d elementi" @@ -552,8 +585,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"Stiamo eseguendo una unità donazione per futuri sviluppi di uGet. Fai clic " +msgstr "Stiamo eseguendo una unità donazione per futuri sviluppi di uGet. Fai clic " #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -571,14 +603,17 @@ msgid "Category _name:" msgstr "_Nome categoria:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Download attivi:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Limite dei finiti:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Limite dei riciclati:" @@ -615,7 +650,7 @@ #: ../../po/../ui-gtk/UgtkConfirmDialog.c:70 msgid "Are you sure you want to delete files?" -msgstr "Confermi la cancellazione deii file?" +msgstr "Confermi la cancellazione dei file?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:74 msgid "Really delete category?" @@ -631,7 +666,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -642,12 +677,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "File:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Scegli cartella" @@ -701,7 +736,7 @@ msgstr "File cookie:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Scegli file cookie:" @@ -711,7 +746,7 @@ msgstr "Carica file:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Scegli file da caricare" @@ -748,10 +783,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -772,7 +807,7 @@ #. Batch Downloads --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:94 msgid "_Batch Downloads" -msgstr "Downlaod _batch..." +msgstr "Download _batch..." #. Batch downloads - Clipboard batch #: ../../po/../ui-gtk/UgtkMenubar-ui.c:100 @@ -823,7 +858,8 @@ msgid "_Edit" msgstr "_Modifica" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -846,9 +882,9 @@ msgstr "Ignora URI esistente" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Applica impostazioni download recenti" #. --- Completion Auto-Actions --- start --- @@ -952,7 +988,7 @@ msgid "Download _Columns" msgstr "_Colonne download" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Completato" @@ -979,25 +1015,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Velocità" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Velocità upload" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Inviato" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Rapporto" @@ -1008,13 +1044,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Aggiunto il" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Completato il" @@ -1036,7 +1072,8 @@ msgid "_Download" msgstr "_Download" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "_Elimina elemento" @@ -1110,116 +1147,116 @@ msgid "Check for Updates" msgstr "Verifica aggiornamenti" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Impostazioni" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Non posso lanciare l'applicazione predefinita per il file '%s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - questa cartella non esiste." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "L'URI esisteva" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "Questa URI esisteva. Sei sicuro di voler continuare?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Generale" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Avanzate" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Impostazioni categoria" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Predefinito per nuovo download 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Predefinito 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "senza nome" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "In pausa" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Upload..." -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Completato" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Riciclati" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "In coda" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Attivi" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Tutti gli stati" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Nome" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Completato" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Dimensioni" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Trascorsi" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Rimanente" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Quantità" @@ -1246,67 +1283,67 @@ msgid "Port:" msgstr "Porta:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Argomenti socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Elemento:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Lun" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Mar" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Mer" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Gio" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Ven" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Sab" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Dom" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Abilita pianificazione" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Disattiva" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- ferma tutte le attività" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normale" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- esegui normalmente le attività" @@ -1365,271 +1402,306 @@ msgstr "_Seleziona tramite filtro..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "e.g." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "Da:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "A:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "numeri:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "_Da:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "sensibile maiuscole/minuscole" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Nessun carattere jolly (*) nell'URL." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL non valido." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Nessun carattere nel campo 'Da' o 'A'." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Anteprima" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Interfaccia utente" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Banda" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" -msgstr "Pianfificazione" +msgstr "Pianificazione" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Plugin" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "Sito web media" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Varie" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "A_bilita monitoraggio Appunti" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Modalità pausa" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Indice categoria predefinita" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "Aggiunta alla n categoria se nessuna categoria corrsiponde." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "_Monitora URL del sito web del media" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "Monitorizza Appunti per i tipi di file specificati:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Separa i tipi con il carattere '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Qui puoi usare normali espressioni." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Conferme" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Visualizza finestra conferma all'uscita" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Conferma quando elimini i file" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Barra di sistema" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Mostra sempre icona nella barra di sistema" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Minimizza nella barra di sistema all'avvio" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Mininimizza nella barra sistema alla chiusura finestra" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Usa indicatore app Ubuntu" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Abilità modalita offline all'avvio" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Notifica avvio download" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Suono a download completato" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Mostra icona grande" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "Questo si applicaherà a tutti i plugin." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Limite globale velocità" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Velocità upload max" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Velocità download max" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Azioni automatiche al completamento" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Comando personalizzato:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Comando personalizzato in caso di errore:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "_Auto salvataggio" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "minuti" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Intervallo:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "minuti" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Impostazioni linea di comando" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Usa '--quiet' come predefinito" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "Ordine controllo plugin:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Opzioni plugin Aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "Token segreto autorizzazione RPC" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Limite globale velocità solo per aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Avvia aria2 all'avvio" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Chiudi aria2 alla chiusura" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Esegui aria2 sul dispositivo locale" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Percorso" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Argomenti" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Devi riavviare uGet dopo averlo modificato." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "Modalità corrispondenza media:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Condizioni corrispondenze" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Qualità:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Tipo:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "File" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Cartella" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Elemento" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Valore" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Copi_a tutto" diff -Nru uget-2.0.2/po/ja.po uget-2.2.2/po/ja.po --- uget-2.0.2/po/ja.po 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/po/ja.po 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,1713 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Naofumi , 2017 +msgid "" +msgstr "" +"Project-Id-Version: uGet\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-04-09 14:59+0000\n" +"Last-Translator: Naofumi \n" +"Language-Team: Japanese (http://www.transifex.com/uget/uget/language/ja/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ../../po/../uget/pwmd.c:32 +#, c-format +msgid "" +"Password Manager Daemon: uget\n" +"\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" +"\n" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "パスワード マネージャー デーモン: uget\n\n%s に SSH 接続をしようとしたときに、既知の信頼済ホストファイルに対してホストキーを確認する際に、ホストキーが見つかりませんでした。\n\n既知の hosts ファイルに %s のホストキーを追加することで、この接続および将来の接続に対して信頼済として扱いますか?" + +#: ../../po/../uget/UgetApp.c:103 +msgid "All Category" +msgstr "すべてのカテゴリー" + +#. UGET_EVENT_NORMAL_CUSTOM +#: ../../po/../uget/UgetEvent.c:58 +msgid "Connecting..." +msgstr "接続中..." + +#. UGET_EVENT_NORMAL_CONNECT +#: ../../po/../uget/UgetEvent.c:59 +msgid "Transmitting..." +msgstr "送信中..." + +#. UGET_EVENT_NORMAL_TRANSMIT, +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 +msgid "Retry" +msgstr "リトライ" + +#. UGET_EVENT_NORMAL_RETRY, +#: ../../po/../uget/UgetEvent.c:61 +msgid "Download completed" +msgstr "ダウロード完了" + +#. UGET_EVENT_NORMAL_COMPLETE, +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 +msgid "Finished" +msgstr "完了" + +#. UGET_EVENT_NORMAL_FINISH, +#. resumable +#: ../../po/../uget/UgetEvent.c:64 +msgid "Resumable" +msgstr "再開可能" + +#. UGET_EVENT_NORMAL_RESUMABLE, +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 +msgid "Not Resumable" +msgstr "再開不可能" + +#. UGET_EVENT_WARNING_CUSTOM +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 +msgid "Output file can't be renamed." +msgstr "出力ファイルの名前を変更できません。" + +#. UGET_EVENT_ERROR_CUSTOM +#: ../../po/../uget/UgetEvent.c:81 +msgid "couldn't connect to host." +msgstr "ホストに接続できません。" + +#. UGET_EVENT_ERROR_CONNECT_FAILED +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 +msgid "Folder can't be created." +msgstr "フォルダーを作成できません。" + +#. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED +#: ../../po/../uget/UgetEvent.c:83 +msgid "File can't be created (bad filename or file exist)." +msgstr "ファイルを作成できません (ファイル名が正しくないか、ファイルが存在します)。" + +#. UGET_EVENT_ERROR_FILE_CREATE_FAILED +#: ../../po/../uget/UgetEvent.c:84 +msgid "File can't be opened." +msgstr "ファイルを開くことができません。" + +#. UGET_EVENT_ERROR_FILE_OPEN_FAILED +#: ../../po/../uget/UgetEvent.c:85 +msgid "Unable to create thread." +msgstr "スレッドを作成できません。" + +#. UGET_EVENT_ERROR_THREAD_CREATE_FAILED, +#: ../../po/../uget/UgetEvent.c:86 +msgid "Incorrect source (different file size)." +msgstr "ソースが正しくありません (ファイルサイズが異なります)。" + +#. UGET_EVENT_ERROR_INCORRECT_SOURCE, +#: ../../po/../uget/UgetEvent.c:87 +msgid "Out of resource (disk full or run out of memory)." +msgstr "リソース不足 (ディスクフル、またはメモリ不足)。" + +#. UGET_EVENT_ERROR_OUT_OF_RESOURCE +#: ../../po/../uget/UgetEvent.c:88 +msgid "No output file." +msgstr "出力ファイルがありません。" + +#. UGET_EVENT_ERROR_NO_OUTPUT_FILE +#: ../../po/../uget/UgetEvent.c:89 +msgid "No output setting." +msgstr "出力の設定がありません。" + +#. UGET_EVENT_ERROR_NO_OUTPUT_SETTING +#: ../../po/../uget/UgetEvent.c:90 +msgid "Too many retries." +msgstr "リトライ回数が多すぎます。" + +#. UGET_EVENT_ERROR_TOO_MANY_RETRIES +#: ../../po/../uget/UgetEvent.c:91 +msgid "Unsupported scheme (protocol)." +msgstr "サポートされていない方式 (プロトコル)。" + +#. UGET_EVENT_ERROR_UNSUPPORTED_SCHEME +#: ../../po/../uget/UgetEvent.c:92 +msgid "Unsupported file." +msgstr "サポートされていないファイル。" + +#. UGET_EVENT_ERROR_UNSUPPORTED_FILE +#: ../../po/../uget/UgetEvent.c:93 +msgid "post file not found." +msgstr "投稿ファイルが見つかりません。" + +#. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND +#: ../../po/../uget/UgetEvent.c:94 +msgid "cookie file not found." +msgstr "cookie ファイルが見つかりません。" + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "このビデオは削除されました。" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "ビデオ情報の取得中にエラーが発生しました。" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "ビデオ Web ページの取得中にエラーが発生しました。" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "YouTube の URL に video_id が見つかりません。" + +#. 1 - 10 +#: ../../po/../uget/UgetPluginAria2.c:280 +msgid "aria2: an unknown error occurred." +msgstr "aria2: 不明なエラーが発生しました。" + +#: ../../po/../uget/UgetPluginAria2.c:281 +msgid "aria2: time out occurred." +msgstr "aria2: タイムアウトが発生しました。" + +#: ../../po/../uget/UgetPluginAria2.c:282 +msgid "aria2: resource was not found." +msgstr "aria2: リソースが見つかりません。" + +#: ../../po/../uget/UgetPluginAria2.c:283 +msgid "" +"aria2 saw the specfied number of 'resource not found' error. See --max-file-" +"not-found option" +msgstr "aria2 は指定された数の 'リソースが見つかりません' というエラーを検出しました。 --max-file-not-found オプションを参照してください。" + +#: ../../po/../uget/UgetPluginAria2.c:284 +msgid "aria2: speed was too slow." +msgstr "aria2: 速度が遅すぎます。" + +#: ../../po/../uget/UgetPluginAria2.c:285 +msgid "aria2: network problem occurred." +msgstr "aria2: ネットワークの問題が発生しました。" + +#: ../../po/../uget/UgetPluginAria2.c:286 +msgid "aria2: unfinished downloads." +msgstr "aria2: ダウンロードが完了していません。" + +#. _("Not Resumable"), +#: ../../po/../uget/UgetPluginAria2.c:288 +msgid "Out of resource" +msgstr "リソース不足" + +#. _(), +#: ../../po/../uget/UgetPluginAria2.c:289 +msgid "aria2: piece length was different from one in .aria2 control file." +msgstr "aria2: ピース長が .aria2 コントロールファイルのものと異なりました。" + +#. 11 - 20 +#: ../../po/../uget/UgetPluginAria2.c:291 +msgid "aria2 was downloading same file." +msgstr "aria2 が同じファイルをダウンロードしていました。" + +#: ../../po/../uget/UgetPluginAria2.c:292 +msgid "aria2 was downloading same info hash torrent." +msgstr "aria2 が同じ情報ハッシュの torrent をダウンロードしていました。" + +#: ../../po/../uget/UgetPluginAria2.c:293 +msgid "aria2: file already existed. See --allow-overwrite option." +msgstr "aria2: ファイルがすでに存在します。 --allow-overwrite オプションを参照してください。" + +#. _("Output file can't be renamed."), +#: ../../po/../uget/UgetPluginAria2.c:295 +msgid "aria2: could not open existing file." +msgstr "aria2: 既存のファイルを開くことができませんでした。" + +#: ../../po/../uget/UgetPluginAria2.c:296 +msgid "aria2: could not create new file or truncate existing file." +msgstr "aria2: 新しいファイルを作成、または既存のファイルを削除できませんでした。" + +#: ../../po/../uget/UgetPluginAria2.c:297 +msgid "aria2: file I/O error occurred." +msgstr "aria2: ファイル I/O エラーが発生しました。" + +#. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED +#: ../../po/../uget/UgetPluginAria2.c:299 +msgid "aria2: name resolution failed." +msgstr "aria2: 名前解決に失敗しました。" + +#: ../../po/../uget/UgetPluginAria2.c:300 +msgid "aria2: could not parse Metalink document." +msgstr "aria2: Metalink ドキュメントを解析できませんでした。" + +#. 21 - 30 +#: ../../po/../uget/UgetPluginAria2.c:302 +msgid "aria2: FTP command failed." +msgstr "aria2: FTP コマンドに失敗しました。" + +#: ../../po/../uget/UgetPluginAria2.c:303 +msgid "aria2: HTTP response header was bad or unexpected." +msgstr "aria2: HTTP レスポンスヘッダーが間違っているか予期しないものでした。" + +#: ../../po/../uget/UgetPluginAria2.c:304 +msgid "Too many redirections." +msgstr "リダイレクトが多すぎます。" + +#: ../../po/../uget/UgetPluginAria2.c:305 +msgid "aria2: HTTP authorization failed." +msgstr "aria2: HTTP 認証に失敗しました。" + +#: ../../po/../uget/UgetPluginAria2.c:306 +msgid "aria2: could not parse bencoded file(usually .torrent file)." +msgstr "aria2: bencode されたファイル (通常 .torrent ファイル) を解析できませんでした。" + +#: ../../po/../uget/UgetPluginAria2.c:307 +msgid "aria2: torrent file was corrupted or missing information." +msgstr "aria2: torrent ファイルが壊れているか、情報が不足していました。" + +#: ../../po/../uget/UgetPluginAria2.c:308 +msgid "aria2: Magnet URI was bad." +msgstr "aria2: Magnet URI が間違っています。" + +#: ../../po/../uget/UgetPluginAria2.c:309 +msgid "" +"aria2: bad/unrecognized option was given or unexpected option argument was " +"given." +msgstr "aria2: 間違った/認識できないオプションが指定されたか、予期しないオプション引数が指定されました。" + +#: ../../po/../uget/UgetPluginAria2.c:310 +msgid "aria2: remote server was unable to handle the request." +msgstr "aria2: リモートサーバーがリクエストを処理できませんでした。" + +#: ../../po/../uget/UgetPluginAria2.c:311 +msgid "aria2: could not parse JSON-RPC request." +msgstr "aria2: JSON-RPC リクエストを解析できませんでした。" + +#: ../../po/../uget/UgetPluginAria2.c:314 +msgid "No response. Is aria2 shutdown?" +msgstr "応答がありません。 aria2 がシャットダウンされていますか?" + +#. debug +#: ../../po/../uget/UgetPluginAria2.c:641 +msgid "aria2: gid was removed." +msgstr "aria2: gid が削除されました。" + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "メディアリンクの取得に失敗しました。" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "一致するメディアがありません。" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:46 +msgid "Download Manager" +msgstr "ダウンロードマネージャー" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:48 +msgid "translator-credits" +msgstr "翻訳者のクレジット" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:80 +msgid "uGet Founder: " +msgstr "uGet 創設者: " + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:81 +msgid "uGet Project Manager: " +msgstr "uGet プロジェクトマネージャー: " + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:239 +msgid "tasks" +msgstr "タスク" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 +msgid "New from Clipboard" +msgstr "クリップボードから新規" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 +msgid "New Download" +msgstr "新規ダウンロード" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 +msgid "Clipboard" +msgstr "クリップボード" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 +msgid "Command line" +msgstr "コマンドライン" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 +msgid "Error Occurred" +msgstr "エラーが発生しました" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." +msgstr "ダウンロード中にエラーが発生しました。" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 +msgid "Download Starting" +msgstr "ダウンロードを開始しました" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 +msgid "Starting download queue." +msgstr "ダウンロードキューを開始しています。" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 +msgid "Download Completed" +msgstr "ダウロード完了" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 +msgid "All queuing downloads have been completed." +msgstr "すべてのキューのダウンロードが完了しました。" + +#. ---------------------------------------------------- +#. frame for Status (start mode) +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:224 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 +msgid "Status" +msgstr "ステータス" + +#. Summary Items - Category +#. Download Columns - Category +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 +msgid "Category" +msgstr "カテゴリー" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 +msgid "Create new download" +msgstr "新規ダウンロードを作成" + +#. New Download (accelerators) +#. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. New Download +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:59 +msgid "New _Download..." +msgstr "新規ダウンロード(_D)..." + +#. New Category +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +msgid "New _Category..." +msgstr "新規カテゴリー(_C)..." + +#. New Clipboard batch +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +msgid "New Clipboard _batch..." +msgstr "新規クリップボード一括(_b)..." + +#. New URL Sequence batch +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 +msgid "New _URL Sequence batch..." +msgstr "新規 _URL 順序一括..." + +#. New Torrent +#. separator +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); +#. New Torrent +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:83 +msgid "New Torrent..." +msgstr "新規 Torrent..." + +#. New Metalink +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:90 +msgid "New Metalink..." +msgstr "新規 Metalink..." + +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 +msgid "Save all settings" +msgstr "すべての設定を保存" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 +msgid "Set selected download runnable" +msgstr "選択したダウンロードを実行可能に設定する" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 +msgid "Set selected download to pause" +msgstr "選択したダウンロードを一時停止に設定する" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 +msgid "Set selected download properties" +msgstr "選択したダウンロードのプロパティを設定する" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 +msgid "Move selected download up" +msgstr "選択したダウンロードを上に移動" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 +msgid "Move selected download down" +msgstr "選択したダウンロードを下に移動" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 +msgid "Move selected download to top" +msgstr "選択したダウンロードを先頭に移動" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 +msgid "Move selected download to bottom" +msgstr "選択したダウンロードを最後に移動" + +#: ../../po/../ui-gtk/UgtkApp.c:883 +msgid "New Category" +msgstr "新規カテゴリー" + +#: ../../po/../ui-gtk/UgtkApp.c:894 +msgid "Copy - " +msgstr "コピー - " + +#: ../../po/../ui-gtk/UgtkApp.c:1049 +msgid "Category Properties" +msgstr "カテゴリープロパティ" + +#: ../../po/../ui-gtk/UgtkApp.c:1063 +msgid "Download Properties" +msgstr "ダウンロードプロパティ" + +#: ../../po/../ui-gtk/UgtkApp.c:1296 +msgid "New Torrent" +msgstr "新規 Torrent" + +#: ../../po/../ui-gtk/UgtkApp.c:1312 +msgid "New Metalink" +msgstr "新規 Metalink" + +#: ../../po/../ui-gtk/UgtkApp.c:1321 +msgid "Open Torrent file" +msgstr "Torrent ファイルを開く" + +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Torrent ファイル (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 +msgid "Open Metalink file" +msgstr "Metalink ファイルを開く" + +#: ../../po/../ui-gtk/UgtkApp.c:1377 +msgid "Failed to save category file." +msgstr "カテゴリーファイルの保存に失敗しました。" + +#: ../../po/../ui-gtk/UgtkApp.c:1397 +msgid "Failed to load category file." +msgstr "カテゴリーファイルの読み込みに失敗しました。" + +#: ../../po/../ui-gtk/UgtkApp.c:1408 +msgid "Save Category file" +msgstr "カテゴリーファイルを保存" + +#: ../../po/../ui-gtk/UgtkApp.c:1426 +msgid "Open Category file" +msgstr "カテゴリーファイルを開く" + +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "JSON ファイル (*.json)" + +#. add link +#: ../../po/../ui-gtk/UgtkApp.c:1485 +msgid "Link " +msgstr "リンク " + +#. add image +#: ../../po/../ui-gtk/UgtkApp.c:1490 +msgid "Image " +msgstr "画像 " + +#: ../../po/../ui-gtk/UgtkApp.c:1535 +msgid "Text File" +msgstr "テキストファイル" + +#: ../../po/../ui-gtk/UgtkApp.c:1582 +msgid "Import URLs from HTML file" +msgstr "HTML ファイルから URL をインポート" + +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "HTML ファイル (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 +msgid "Import URLs from text file" +msgstr "テキストファイルから URL をインポート" + +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "プレーンテキストファイル" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 +msgid "Export URLs to text file" +msgstr "URL をテキストファイルにエクスポート" + +#: ../../po/../ui-gtk/UgtkApp.c:1631 +msgid "URL Sequence batch" +msgstr "URL 順序一括" + +#: ../../po/../ui-gtk/UgtkApp.c:1658 +msgid "No URLs found in clipboard." +msgstr "クリップボードに URL が見つかりません。" + +#: ../../po/../ui-gtk/UgtkApp.c:1667 +msgid "All URLs had existed." +msgstr "すべての URL が存在しています。" + +#: ../../po/../ui-gtk/UgtkApp.c:1672 +msgid "Clipboard batch" +msgstr "クリップボード一括" + +#: ../../po/../ui-gtk/UgtkApp.c:1762 +msgid "New" +msgstr "新規" + +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 +msgid "Error" +msgstr "エラー" + +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 +msgid "Message" +msgstr "メッセージ" + +#: ../../po/../ui-gtk/UgtkApp.c:1927 +#, c-format +msgid "Selected %d items" +msgstr "%d アイテム選択済" + +#: ../../po/../ui-gtk/UgtkBanner.c:145 ../../po/../ui-gtk/UgtkBanner.c:165 +msgid "Attention uGetters:" +msgstr "注意 uGetters:" + +#: ../../po/../ui-gtk/UgtkBanner.c:148 +msgid "" +"we are running a Donation Drive for uGet's Future Development, please click " +msgstr "uGet の未来の発展のために寄付ドライブを実行しています。クリックしてください" + +#: ../../po/../ui-gtk/UgtkBanner.c:151 +msgid "HERE" +msgstr "ここ" + +#: ../../po/../ui-gtk/UgtkBanner.c:168 +msgid "please fill out this quick User Survey for uGet." +msgstr "uGet の簡単なユーザーアンケートにご記入ください。" + +#: ../../po/../ui-gtk/UgtkBanner.c:171 +msgid "click here to take survey" +msgstr "アンケートはここをクリックしてください" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:62 +msgid "Category _name:" +msgstr "カテゴリー名(_n):" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:82 +msgid "Active _downloads:" +msgstr "アクティブなダウンロード数(_d):" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:92 +msgid "Capacity of Finished:" +msgstr "完了した容量:" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:102 +msgid "Capacity of Recycled:" +msgstr "リサイクルの容量:" + +#. ------------------------------------------------------------------------ +#. URI Matching conditions +#: ../../po/../ui-gtk/UgtkCategoryForm.c:111 +msgid "URI Matching conditions" +msgstr "URI 一致条件" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:118 +msgid "Matched _Hosts:" +msgstr "一致したホスト(_H):" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:129 +msgid "Matched _Schemes:" +msgstr "一致したスキーマ(_S):" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:140 +msgid "Matched _Types:" +msgstr "一致したタイプ(_T):" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 +msgid "Really Quit?" +msgstr "本当に終了しますか?" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:65 +msgid "Are you sure you want to quit?" +msgstr "終了してもよろしいですか?" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:69 +msgid "Really delete files?" +msgstr "本当にファイルを削除しますか?" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:70 +msgid "Are you sure you want to delete files?" +msgstr "ファイルを削除してもよろしいですか?" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:74 +msgid "Really delete category?" +msgstr "本当にカテゴリーを削除しますか?" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:75 +msgid "Are you sure you want to delete category?" +msgstr "カテゴリーを削除してもよろしいですか?" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:109 +msgid "Don't ask me again" +msgstr "今後表示しない" + +#. URL - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:111 +#: ../../po/../ui-gtk/UgtkSequence.c:63 +msgid "_URI:" +msgstr "_URI:" + +#. Mirrors - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:130 +msgid "Mirrors:" +msgstr "ミラー:" + +#. File - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:146 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 +msgid "File:" +msgstr "ファイル:" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:166 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 +msgid "Select Folder" +msgstr "フォルダーを選択" + +#. Folder - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:174 +msgid "_Folder:" +msgstr "フォルダー(_F):" + +#. Referrer - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:189 +msgid "Referrer:" +msgstr "リファラー:" + +#. "Max Connections:" - title label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:212 +msgid "_Max Connections:" +msgstr "最大接続数(_M):" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:230 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 +msgid "_Runnable" +msgstr "実行可能(_R)" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:232 +msgid "P_ause" +msgstr "一時停止(_a)" + +#. ---------------------------------------------------- +#. frame for login +#: ../../po/../ui-gtk/UgtkDownloadForm.c:238 +msgid "Login" +msgstr "ログイン" + +#. User - label +#. user label & entry +#: ../../po/../ui-gtk/UgtkDownloadForm.c:252 +#: ../../po/../ui-gtk/UgtkProxyForm.c:149 +msgid "User:" +msgstr "ユーザー:" + +#. Password - label +#. password label & entry +#: ../../po/../ui-gtk/UgtkDownloadForm.c:268 +#: ../../po/../ui-gtk/UgtkProxyForm.c:160 +msgid "Password:" +msgstr "パスワード:" + +#. label - cookie file +#: ../../po/../ui-gtk/UgtkDownloadForm.c:293 +msgid "Cookie file:" +msgstr "Cookie ファイル:" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:310 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 +msgid "Select Cookie File" +msgstr "Cookie ファイルを選択" + +#. label - post file +#: ../../po/../ui-gtk/UgtkDownloadForm.c:319 +msgid "Post file:" +msgstr "Post ファイル:" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:336 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 +msgid "Select Post File" +msgstr "Post ファイルを選択" + +#. label - user agent +#: ../../po/../ui-gtk/UgtkDownloadForm.c:346 +msgid "User Agent:" +msgstr "User Agent:" + +#. Retry limit - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:362 +msgid "Retry _limit:" +msgstr "リトライ限度(_l):" + +#. counts - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:377 +msgid "counts" +msgstr "回数" + +#. Retry delay - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:384 +msgid "Retry _delay:" +msgstr "リトライ遅延(_d):" + +#. seconds - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:399 +msgid "seconds" +msgstr "秒" + +#. label - Max upload speed +#: ../../po/../ui-gtk/UgtkDownloadForm.c:406 +msgid "Max upload speed:" +msgstr "最大アップロード速度:" + +#. label - "KiB/s" +#: ../../po/../ui-gtk/UgtkDownloadForm.c:418 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:436 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 +msgid "KiB/s" +msgstr "KiB/s" + +#. label - Max download speed +#: ../../po/../ui-gtk/UgtkDownloadForm.c:424 +msgid "Max download speed:" +msgstr "最大ダウンロード速度:" + +#. Retrieve timestamp +#: ../../po/../ui-gtk/UgtkDownloadForm.c:442 +msgid "Retrieve timestamp" +msgstr "タイムスタンプを取得" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:51 +msgid "_File" +msgstr "ファイル(_F)" + +#. Batch Downloads --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:94 +msgid "_Batch Downloads" +msgstr "一括ダウンロード(_B)" + +#. Batch downloads - Clipboard batch +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:100 +msgid "_Clipboard batch..." +msgstr "クリップボード一括(_C)..." + +#. Batch downloads - URL Sequence batch +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:110 +msgid "_URL Sequence batch..." +msgstr "_URL 順序一括..." + +#. Batch downloads - Text file import (.txt) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:120 +msgid "_Text file import (.txt)..." +msgstr "テキストファイルインポート(_T) (.txt)..." + +#. Batch downloads - HTML file import (.html) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:130 +msgid "_HTML file import (.html)..." +msgstr "_HTML ファイルインポート (.html)..." + +#. Batch downloads - Export to Text file (.txt) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:142 +msgid "_Export to Text file (.txt)..." +msgstr "テキストファイルにエクスポート(_E) (.txt)..." + +#. Open Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 +msgid "_Open category..." +msgstr "カテゴリーを開く(_O)..." + +#. Save Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 +msgid "_Save category as..." +msgstr "名前を付けてカテゴリーを保存(_S)..." + +#. Save All +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 +msgid "Save _all settings" +msgstr "すべての設定を保存(_a)" + +#. Offline mode +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 +msgid "Offline Mode" +msgstr "オフラインモード" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 +msgid "_Edit" +msgstr "編集(_E)" + +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); +#. Settings shortcut +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:99 +msgid "Clipboard _Monitor" +msgstr "クリップボードモニター(_M)" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:103 +msgid "Clipboard works quietly" +msgstr "クリップボードを静かに動作" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:107 +msgid "Command-line works quietly" +msgstr "コマンドラインを静かに動作" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:111 +msgid "Skip existing URI" +msgstr "既存の URI をスキップ" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:115 +msgid "Apply recent download settings" +msgstr "最近のダウンロード設定を適用" + +#. --- Completion Auto-Actions --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 +msgid "Completion _Auto-Actions" +msgstr "完了自動操作(_A)" + +#. Completion Auto-Actions - Disable +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 +msgid "_Disable" +msgstr "無効にする(_D)" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 +msgid "Hibernate" +msgstr "休止状態" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 +msgid "Suspend" +msgstr "サスペンド" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 +msgid "Shutdown" +msgstr "シャットダウン" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 +msgid "Reboot" +msgstr "再起動" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 +msgid "Custom" +msgstr "カスタム" + +#. Completion Auto-Actions - Remember +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 +msgid "Remember setting" +msgstr "設定を記憶する" + +#. Completion Auto-Actions - Help +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:279 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:682 +msgid "_Help" +msgstr "ヘルプ(_H)" + +#. --- Completion Auto-Actions --- end --- +#. menu_item = gtk_menu_item_new_with_mnemonic (_("_Settings...")); +#. Settings +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:285 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:122 +msgid "_Settings..." +msgstr "設定(_S)..." + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:304 +msgid "_View" +msgstr "表示(_V)" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:308 +msgid "_Toolbar" +msgstr "ツールバー(_T)" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:313 +msgid "Statusbar" +msgstr "ステータスバー" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:323 +msgid "_Summary" +msgstr "サマリー(_S)" + +#. Summary Items --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:331 +msgid "Summary _Items" +msgstr "アイテムのサマリー(_I)" + +#. Summary Items - Name +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:336 +msgid "_Name" +msgstr "名前(_N)" + +#. Summary Items - Folder +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:341 +msgid "_Folder" +msgstr "フォルダー(_F)" + +#. Summary Items - Elapsed +#. menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Elapsed")); +#. gtk_check_menu_item_set_active ((GtkCheckMenuItem*) menu_item, TRUE); +#. gtk_menu_shell_append ((GtkMenuShell*) submenu, menu_item); +#. menubar->view.summary_items.elapsed = menu_item; +#. Summary Items - URL +#. Download Columns - URL +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:356 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:436 +msgid "_URL" +msgstr "_URL" + +#. Summary Items - Message +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:361 +msgid "_Message" +msgstr "メッセージ(_M)" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:376 +msgid "Download _Columns" +msgstr "ダウンロード列(_C)" + +#. Download Columns - Complete +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 +msgid "_Complete" +msgstr "完了(_C)" + +#. Download Columns - Total +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:386 +msgid "_Size" +msgstr "サイズ(_S)" + +#. Download Columns - Percent (%) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:391 +msgid "_Percent '%'" +msgstr "パーセント(_P) '%'" + +#. Download Columns - Elapsed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:396 +msgid "_Elapsed" +msgstr "予測(_E)" + +#. Download Columns - Left +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:401 +msgid "_Left" +msgstr "残り(_L)" + +#. Download Columns - Speed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 +msgid "Speed" +msgstr "速度" + +#. Download Columns - Up Speed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 +msgid "Up Speed" +msgstr "アップ速度" + +#. Download Columns - Uploaded +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 +msgid "Uploaded" +msgstr "アップロード済" + +#. Download Columns - Ratio +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 +msgid "Ratio" +msgstr "レシオ" + +#. Download Columns - Retry +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:426 +msgid "_Retry" +msgstr "リトライ(_R)" + +#. Download Columns - Added On +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 +msgid "Added On" +msgstr "追加" + +#. Download Columns - Completed On +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 +msgid "Completed On" +msgstr "完了" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:461 +msgid "_Category" +msgstr "カテゴリー(_C)" + +#. New Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:466 +msgid "_New Category..." +msgstr "新規カテゴリー(_N)..." + +#. Delete Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:476 +msgid "_Delete Category" +msgstr "カテゴリーを削除(_D)" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:517 +msgid "_Download" +msgstr "ダウンロード(_D)" + +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 +msgid "_Delete Entry" +msgstr "エントリを削除(_D)" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 +msgid "Delete Entry and _File" +msgstr "エントリとファイルを削除(_F)" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 +msgid "Open _Containing folder" +msgstr "含むフォルダーを開く(_C)" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 +msgid "Force Start" +msgstr "強制開始" + +#. Move to --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:596 +msgid "_Move To" +msgstr "移動(_M)" + +#. Priority --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:645 +msgid "Priority" +msgstr "優先度" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:654 +msgid "_High" +msgstr "高(_H)" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:659 +msgid "_Normal" +msgstr "通常(_N)" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:664 +msgid "_Low" +msgstr "低(_L)" + +#. Get Help Online +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:687 +msgid "Get Help Online" +msgstr "オンラインでヘルプを得る" + +#. Documentation +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:698 +msgid "Documentation" +msgstr "ドキュメント" + +#. Support Forum +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:709 +msgid "Support Forum" +msgstr "サポートフォーラム" + +#. Submit Feedback +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:720 +msgid "Submit Feedback" +msgstr "フィードバックを送信" + +#. Report a Bug +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:731 +msgid "Report a Bug" +msgstr "バグを報告" + +#. Keyboard Shortcuts +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:742 +msgid "Keyboard Shortcuts" +msgstr "キーボードショートカット" + +#. Check for Updates +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:749 +msgid "Check for Updates" +msgstr "更新を確認" + +#: ../../po/../ui-gtk/UgtkMenubar.c:187 +msgid "Settings" +msgstr "設定" + +#: ../../po/../ui-gtk/UgtkMenubar.c:454 +#, c-format +msgid "Can't launch default application for file '%s'." +msgstr "ファイル '%s' のデフォルトアプリケーションを起動できません。" + +#: ../../po/../ui-gtk/UgtkMenubar.c:486 +#, c-format +msgid "'%s' - This folder does not exist." +msgstr "'%s' - このフォルダーが存在しません。" + +#. title +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 +msgid "URI had existed" +msgstr "URI が存在していました" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 +msgid "This URI had existed, are you sure to continue?" +msgstr "この URI は存在していました、続行してもよろしいですか?" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +msgid "General" +msgstr "全般" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +msgid "Advanced" +msgstr "詳細" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 +msgid "Category settings" +msgstr "カテゴリー設定" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 +msgid "Default for new download 1" +msgstr "新規ダウンロードのデフォルト 1" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 +msgid "Default 2" +msgstr "デフォルト 2" + +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 +msgid "unnamed" +msgstr "名前なし" + +#: ../../po/../ui-gtk/UgtkNodeView.c:641 +msgid "Paused" +msgstr "一時停止しました" + +#: ../../po/../ui-gtk/UgtkNodeView.c:642 +msgid "Uploading" +msgstr "アップロード中" + +#: ../../po/../ui-gtk/UgtkNodeView.c:643 +msgid "Completed" +msgstr "完了" + +#: ../../po/../ui-gtk/UgtkNodeView.c:645 +msgid "Recycled" +msgstr "リサイクル" + +#: ../../po/../ui-gtk/UgtkNodeView.c:646 +msgid "Queuing" +msgstr "キュー中" + +#: ../../po/../ui-gtk/UgtkNodeView.c:647 +msgid "Active" +msgstr "アクティブ" + +#: ../../po/../ui-gtk/UgtkNodeView.c:668 +msgid "All Status" +msgstr "すべてのステータス" + +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 +msgid "Name" +msgstr "名前" + +#: ../../po/../ui-gtk/UgtkNodeView.c:790 +msgid "Complete" +msgstr "完了" + +#: ../../po/../ui-gtk/UgtkNodeView.c:804 +msgid "Size" +msgstr "サイズ" + +#: ../../po/../ui-gtk/UgtkNodeView.c:819 +msgid "%" +msgstr "%" + +#: ../../po/../ui-gtk/UgtkNodeView.c:833 +msgid "Elapsed" +msgstr "予測" + +#: ../../po/../ui-gtk/UgtkNodeView.c:847 +msgid "Left" +msgstr "残り" + +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 +msgid "URI" +msgstr "URI" + +#: ../../po/../ui-gtk/UgtkNodeView.c:997 +msgid "Quantity" +msgstr "数量" + +#. proxy type label & combo box +#: ../../po/../ui-gtk/UgtkProxyForm.c:64 +msgid "Proxy:" +msgstr "プロキシ:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:67 +msgid "Don't use" +msgstr "使用しない" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:69 +msgid "Default" +msgstr "デフォルト" + +#. host label & entry +#: ../../po/../ui-gtk/UgtkProxyForm.c:121 +msgid "Host:" +msgstr "ホスト:" + +#. port label & entry +#: ../../po/../ui-gtk/UgtkProxyForm.c:132 +msgid "Port:" +msgstr "ポート:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 +msgid "Socket:" +msgstr "Socket:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 +msgid "Socket args:" +msgstr "Socket 引数:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 +msgid "Element:" +msgstr "要素:" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 +msgid "Mon" +msgstr "月" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 +msgid "Tue" +msgstr "火" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 +msgid "Wed" +msgstr "水" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 +msgid "Thu" +msgstr "木" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 +msgid "Fri" +msgstr "金" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 +msgid "Sat" +msgstr "土" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 +msgid "Sun" +msgstr "日" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 +msgid "_Enable Scheduler" +msgstr "スケジューラ―を有効にする(_E)" + +#. Turn off - label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 +msgid "Turn off" +msgstr "オフにする" + +#. Turn off - help label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 +msgid "- stop all task" +msgstr "- すべてのタスクを停止" + +#. Normal - label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 +msgid "Normal" +msgstr "通常" + +#. Normal - help label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 +msgid "- run task normally" +msgstr "- 通常でタスクを実行" + +#: ../../po/../ui-gtk/UgtkSelector.c:254 +msgid "All" +msgstr "すべて" + +#: ../../po/../ui-gtk/UgtkSelector.c:259 +msgid "None" +msgstr "なし" + +#: ../../po/../ui-gtk/UgtkSelector.c:276 +msgid "Mark by filter" +msgstr "フィルターでマーク" + +#: ../../po/../ui-gtk/UgtkSelector.c:294 +msgid "Mark URLs by host AND filename extension." +msgstr "ホストとファイル名の拡張子で URL をマークします。" + +#: ../../po/../ui-gtk/UgtkSelector.c:297 +msgid "This will reset all marks of URLs." +msgstr "これにより URL のすべてのマークがリセットされます。" + +#. filter view ----------------------- +#. left side +#: ../../po/../ui-gtk/UgtkSelector.c:305 +msgid "Host" +msgstr "ホスト" + +#. right side (filename extension) +#: ../../po/../ui-gtk/UgtkSelector.c:309 +msgid "File Ext." +msgstr "ファイル拡張子" + +#: ../../po/../ui-gtk/UgtkSelector.c:449 +msgid "URL" +msgstr "URL" + +#: ../../po/../ui-gtk/UgtkSelector.c:781 +msgid "Base hypertext reference" +msgstr "ベースハイパーテキスト参照" + +#. select all +#: ../../po/../ui-gtk/UgtkSelector.c:797 +msgid "Mark _All" +msgstr "すべてマーク(_A)" + +#. select none +#: ../../po/../ui-gtk/UgtkSelector.c:801 +msgid "Mark _None" +msgstr "マークなし(_N)" + +#. select by filter +#: ../../po/../ui-gtk/UgtkSelector.c:805 +msgid "_Mark by filter..." +msgstr "フィルターでマーク(_M)..." + +#. e.g. +#: ../../po/../ui-gtk/UgtkSequence.c:74 +msgid "e.g." +msgstr "例" + +#. ------------------------------------------------------- +#. radio "From" +#: ../../po/../ui-gtk/UgtkSequence.c:85 +msgid "_From:" +msgstr "開始(_F):" + +#. label "To" +#: ../../po/../ui-gtk/UgtkSequence.c:108 +msgid "To:" +msgstr "終了:" + +#. label "digits" +#: ../../po/../ui-gtk/UgtkSequence.c:123 +msgid "digits:" +msgstr "桁数:" + +#: ../../po/../ui-gtk/UgtkSequence.c:132 +msgid "F_rom:" +msgstr "開始(_r):" + +#. label case-sensitive +#: ../../po/../ui-gtk/UgtkSequence.c:162 +msgid "case-sensitive" +msgstr "大文字小文字を区別" + +#: ../../po/../ui-gtk/UgtkSequence.c:188 +msgid "No wildcard(*) character in URL entry." +msgstr "URL エントリにワイルドカード(*) はありません。" + +#: ../../po/../ui-gtk/UgtkSequence.c:192 +msgid "URL is not valid." +msgstr "URL が正しくありません。" + +#: ../../po/../ui-gtk/UgtkSequence.c:196 +msgid "No character in 'From' or 'To' entry." +msgstr "'開始' または '終了' エントリに文字がありません。" + +#: ../../po/../ui-gtk/UgtkSequence.c:311 +msgid "Preview" +msgstr "プレビュー" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 +msgid "User Interface" +msgstr "ユーザーインターフェース" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 +msgid "Bandwidth" +msgstr "帯域幅" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 +msgid "Scheduler" +msgstr "スケジューラ―" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 +msgid "Plug-in" +msgstr "プラグイン" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "メディアウェブサイト" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 +msgid "Others" +msgstr "その他" + +#. Monitor button +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 +msgid "_Enable clipboard monitor" +msgstr "クリップボードモニターを有効にする(_E)" + +#. quiet mode +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 +msgid "_Quiet mode" +msgstr "静かモード(_Q)" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 +msgid "Default category index" +msgstr "デフォルトのカテゴリーインデックス" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 +msgid "Adding to Nth category if no matched category." +msgstr "カテゴリーが一致しない場合、N番目のカテゴリーに追加します。" + +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "メディアウェブサイトの URL をモニター(_M)" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 +msgid "Monitor clipboard for specified file types:" +msgstr "指定したファイルタイプのクリップボードをモニター:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 +msgid "Separate the types with character '|'." +msgstr "文字 '|' でタイプを区切ります。" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 +msgid "You can use regular expressions here." +msgstr "ここで正規表現を使うことができます。" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 +msgid "Confirmation" +msgstr "確認" + +#. Confirmation check buttons +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 +msgid "Show confirmation dialog on exit" +msgstr "終了時に確認ダイアログを表示します" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 +msgid "Confirm when deleting files" +msgstr "ファイルを削除するときに確認します" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 +msgid "System Tray" +msgstr "システムトレイ" + +#. System Tray check buttons +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 +msgid "Always show tray icon" +msgstr "常にトレイアイコンを表示" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 +msgid "Minimize to tray on startup" +msgstr "起動時にトレイに最小化" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 +msgid "Close to tray on window close" +msgstr "ウインドウを閉じる時にトレイに閉じる" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 +msgid "Use Ubuntu's App Indicator" +msgstr "Ubuntu のアプリインジケーターを使用する" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 +msgid "Enable offline mode on startup" +msgstr "起動時にオフラインモードを有効にする" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 +msgid "Download starting notification" +msgstr "ダウンロード開始通知" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 +msgid "Sound when download is finished" +msgstr "ダウンロード完了時にサウンド" + +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "大きいアイコンを表示" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 +msgid "These will affect all plug-ins." +msgstr "これはすべてのプラグインに影響します。" + +#. Global speed limit +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 +msgid "Global speed limit" +msgstr "グローバル速度制限" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 +msgid "Max upload speed" +msgstr "最大アップロード速度" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +msgid "Max download speed" +msgstr "最大ダウンロード速度" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 +msgid "Completion Auto-Actions" +msgstr "完了自動操作" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 +msgid "Custom command:" +msgstr "カスタムコマンド:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 +msgid "Custom command if error occured:" +msgstr "エラーが発生した場合のカスタムコマンド:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 +msgid "_Autosave" +msgstr "自動保存(_A)" + +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 +msgid "_Interval:" +msgstr "間隔(_I):" + +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "分" + +#. Commandline Settings +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 +msgid "Commandline Settings" +msgstr "コマンドライン設定" + +#. --quiet +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 +msgid "Use '--quiet' by default" +msgstr "デフォルトで '--quiet' を使用する" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 +msgid "Plug-in matching order:" +msgstr "プラグインの一致順序:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 +msgid "Aria2 plug-in options" +msgstr "Aria2 プラグインオプション" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 +msgid "RPC authorization secret token" +msgstr "RPC 認証のシークレットトークン" + +#. ------------------------------------------------------------------------ +#. Speed Limits +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 +msgid "Global speed limit for aria2 only" +msgstr "aria2 のみのグローバル速度制限" + +#. ------------------------------------------------------------------------ +#. aria2 works on local device +#. launch +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 +msgid "_Launch aria2 on startup" +msgstr "起動時に aria2 を起動(_L)" + +#. shutdown +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 +msgid "_Shutdown aria2 on exit" +msgstr "終了時に aria2 をシャットダウン(_S)" + +#. ------------------------------------------------------------------------ +#. Local options +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 +msgid "Launch aria2 on local device" +msgstr "ローカルデバイスで aria2 を起動する" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 +msgid "Path" +msgstr "パス" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 +msgid "Arguments" +msgstr "引数" + +#. Arguments - hint +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 +msgid "You must restart uGet after modifying it." +msgstr "変更後に uGet を再起動する必要があります。" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "メディア一致モード:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "一致条件" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "品質:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "タイプ:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 +msgid "File" +msgstr "ファイル" + +#: ../../po/../ui-gtk/UgtkSummary.c:119 +msgid "Folder" +msgstr "フォルダー" + +#: ../../po/../ui-gtk/UgtkSummary.c:262 +msgid "Item" +msgstr "アイテム" + +#: ../../po/../ui-gtk/UgtkSummary.c:267 +msgid "Value" +msgstr "値" + +#. Copy All +#: ../../po/../ui-gtk/UgtkSummary.c:299 +msgid "Copy _All" +msgstr "すべてコピー(_A)" + +#. Show window +#: ../../po/../ui-gtk/UgtkTrayIcon.c:141 +msgid "Show window" +msgstr "ウインドウを表示" + +#. Offline mode +#: ../../po/../ui-gtk/UgtkTrayIcon.c:147 +msgid "_Offline Mode" +msgstr "オフラインモード(_O)" diff -Nru uget-2.0.2/po/ka_GE.po uget-2.2.2/po/ka_GE.po --- uget-2.0.2/po/ka_GE.po 2015-09-11 12:14:40.000000000 +0000 +++ uget-2.2.2/po/ka_GE.po 2019-05-19 16:49:06.000000000 +0000 @@ -8,15 +8,14 @@ msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-27 06:50+0000\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" "Last-Translator: Michael Tunnell \n" -"Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/uget/" -"language/ka_GE/)\n" -"Language: ka_GE\n" +"Language-Team: Georgian (Georgia) (http://www.transifex.com/uget/uget/language/ka_GE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ka_GE\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../po/../uget/pwmd.c:32 @@ -24,15 +23,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "" @@ -47,7 +43,7 @@ msgstr "გადაცემა..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "ხელახლა" @@ -57,7 +53,7 @@ msgstr "ჩამოტვირთვა დასრულებულია" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "დასრულებული" @@ -68,12 +64,12 @@ msgstr "გაგრძელებადი" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "გაუგრძელებადი" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "გამომავალი ფაილის გადარქმევა შეუძლებელია." @@ -83,16 +79,14 @@ msgstr "ჰოსტთან კავშირი ვერ დამყარდა." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "საქაღალდის შექმნა შეუძლებელია." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:83 msgid "File can't be created (bad filename or file exist)." -msgstr "" -"ფაილის შექმნა შეუძლებელია (ფაილის დაუშვებელი სახელი აქვს, ან ის უკვე " -"არსებობს)." +msgstr "ფაილის შექმნა შეუძლებელია (ფაილის დაუშვებელი სახელი აქვს, ან ის უკვე არსებობს)." #. UGET_EVENT_ERROR_FILE_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:84 @@ -149,134 +143,158 @@ msgid "cookie file not found." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "" #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "" #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "" #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "მეტისმეტად ბევრი გადამისამართება." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "" +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "ჩამოტვირთვების მმართველი" @@ -293,249 +311,266 @@ msgid "uGet Project Manager: " msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "დავალებები" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "ახალის შექმნა ბუფერიდან" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "ახალი ჩამოტვირთვა" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "ბუფერი" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "ბრძანების ველი" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "ჩამოტვირთვა იწყება" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "ჩამოტვირთვების რიგის დაწყება." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "ჩამოტვირთვა დასრულებულია" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "რიგში მდგომი ყველა ჩამოტვირთვა დასრულებულია." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "მდგომარეობა" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "კატეგორია" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "ახალი ჩამოტვირთვის შექმნა" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "ახალი _ჩამოტვირთვა..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "ახალი _კატეგორია..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "ახალი ჯგუფი _ბუფერიდან..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "ახალი _URL-თა მიმდევრობა..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "ახალი ტორენტი..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "ახალი მეტაბმული..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "არჩეული ჩამოტვირთვა გაშვებადია" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "არჩეული ჩამოტვირთვის შეჩერება" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "არჩეული ჩამოტვირთვის თვისებები" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "არჩეული ჩამოტვირთვის ზემოთ წაწევა" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "არჩეული ჩამოტვირთვის ქვემოთ წაწევა" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "არჩეული ჩამოტვირთვის თავში გადატანა" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "არჩეული ჩამოტვირთვის ძირში გადატანა" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "ახალი კატეგორია" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "ასლი - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "კატეგორიის თვისებები" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "ჩამოტვირთვის თვისებები" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "ახალი ტორენტი" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "ახალი მეტაბმული" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "ტორენტ ფაილის გახსნა" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "მეტაბმულიანი ფაილის გახსნა" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "ბმული " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "გამოსახულება " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "ტექსტური ფაილი" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "URL ბმულების შემოტანა HTML ფაილიდან" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "URL ბმულების შემოტანა ტექსტური ფაილიდან" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "URL-თა მიმდევრობის ჩამოტვირთვა" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "ბუფერში URL მისამართები არ მოიძებნა." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "ჯგუფი ბუფერიდან" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "შეცდომა" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "შეტყობინება" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "არჩეულია %d ელემენტი" @@ -547,9 +582,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"ჩვენ ვატარებთ საქველმოქმედო აქციას uGet-ის მომავალი განვითარებისთვის, " -"გვეწვიეთ" +msgstr "ჩვენ ვატარებთ საქველმოქმედო აქციას uGet-ის მომავალი განვითარებისთვის, გვეწვიეთ" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -567,14 +600,17 @@ msgid "Category _name:" msgstr "კატეგორიის _სახელი:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "მოქმედი _ჩამოტვირთვები:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "დასრულებულის მოცულობა:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "გადაყრილის მოცულობა:" @@ -627,7 +663,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "" @@ -638,12 +674,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "ფაილი: " #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "საქაღალდის არჩევა" @@ -697,7 +733,7 @@ msgstr "ფუნთუშას ფაილი:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "ფუნთუშას ფაილის არჩევა:" @@ -707,7 +743,7 @@ msgstr "POST ფაილი:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "POST ფაილის არჩევა:" @@ -744,10 +780,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "კიბ/წმ" @@ -819,7 +855,8 @@ msgid "_Edit" msgstr "_ჩასწორება" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -842,9 +879,9 @@ msgstr "" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "ახლახანს ჩამოტვირთულის პარამეტრების გამოყენება" #. --- Completion Auto-Actions --- start --- @@ -948,7 +985,7 @@ msgid "Download _Columns" msgstr "ჩამოტვირთვის _სვეტები" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_დასრულებული" @@ -975,25 +1012,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "სიჩქარე" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "ატვირთვის სიჩქარე" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "ათვირთულის ზომა" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "შეფარდება" @@ -1004,13 +1041,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "დამატების თარიღი" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "დასრულების თარიღი" @@ -1032,7 +1069,8 @@ msgid "_Download" msgstr "_ჩამოტვირთვა" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "" @@ -1106,116 +1144,116 @@ msgid "Check for Updates" msgstr "განახლების შემოწმება" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "მომართვა" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "ვერ მოხერხდა '%s' ფაილის ნაგულისხმები პროგრამის გახსნა." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - საქაღალდე არ არსებობს." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "ზოგადი" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "გაღრმავებული" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "კატეგორიის მომართვა" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "ნაგულისხმები ახალი ჩამოტვირთვებისათვის 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "ნაგულისხმები 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "უსახელო" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "გადაყრილი" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "რიგში" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "მოქმედი" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "სახელი" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "დასრულებული" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "ზომა" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "გასული" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "დარჩენილი" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "ოდენობა" @@ -1242,67 +1280,67 @@ msgid "Port:" msgstr "პორტი:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "სოკეტი:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "სოკეტის არგ-ბი:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "ელემენტ:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "ორშ" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "სამ" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "ოთხ" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "ხუთ" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "პარ" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "საბ" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "კვი" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "განრიგის _გამოყენება" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "გათიშვა" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- ყველა დავალების გაჩერება" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "ჩვეულებრივი" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- დავალებების ჩვეულებრივად შესრულება" @@ -1361,271 +1399,306 @@ msgstr "_მონიშვნა ფილტრით..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "მაგ." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_გამომგზავნი:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "მიმღები:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "ციფრები:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "გამო_მგზავნი:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "რეგისტრის მიმართ მგძნობიარე" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "URL ბმულში არ მოიძებნება '*' ნიშანი." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL ბმული უმართებულოა." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "რომელიმე ველი, 'გამომგზავნი' ან 'მიმღები', ცარიელია." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "გადახედვა" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "განრიგი" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "დანამატი" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "სხვა" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_ჩუმი რეჟიმი" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "სახეობათა გაყოფისთვის გამოიყენეთ სიმბოლო '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "ასევე შეგიძლიათ გამოიყენოთ რეგულარული გამოსახულებები." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "დადასტურება ფაილების წაშლისას" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "სისტემურ არეში ხატულის ყოველთვის ჩვენება" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "ჩართვისას ჩაკეცვა სისტემურ არეში" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "ჩართვისას ხაზგარე რეჟიმის ამოქმედება" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "ჩამოტვირთვის დაწყების შეტყობინება" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "ხმა ჩამოტვირთვის დასრულებისას" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "" #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "წუთი" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_შუალედი:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "წუთი" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "ბრძანებათა სტრიქონის მომართვა" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "ნაგულისხმებად '--quiet' არგუმენტის გამოყენება" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_ჩართვისას aria2-ის გაშვება" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_გათიშვისას aria2-ის გათიშვა" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "გზა" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "არგუმენტები" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "ფაილი" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "საქაღალდე" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "ელემენტი" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "სიდიდე" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "ყველას _ასლი" diff -Nru uget-2.0.2/po/kk.po uget-2.2.2/po/kk.po --- uget-2.0.2/po/kk.po 2015-09-11 12:14:41.000000000 +0000 +++ uget-2.2.2/po/kk.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,20 +3,19 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Baurzhan Muftakhidinov , 2015 +# Baurzhan Muftakhidinov , 2016 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-03-26 09:25+0000\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-09-22 23:51+0000\n" "Last-Translator: Baurzhan Muftakhidinov \n" -"Language-Team: Kazakh (http://www.transifex.com/projects/p/uget/language/" -"kk/)\n" -"Language: kk\n" +"Language-Team: Kazakh (http://www.transifex.com/uget/uget/language/kk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: kk\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../po/../uget/pwmd.c:32 @@ -24,15 +23,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Барлық санаттар" @@ -47,17 +43,17 @@ msgstr "" #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Қайталау" #. UGET_EVENT_NORMAL_RETRY, #: ../../po/../uget/UgetEvent.c:61 msgid "Download completed" -msgstr "" +msgstr "Жүктеме аяқталды" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Дайын" @@ -68,12 +64,12 @@ msgstr "" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "" @@ -83,7 +79,7 @@ msgstr "" #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "" @@ -135,7 +131,7 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_SCHEME #: ../../po/../uget/UgetEvent.c:92 msgid "Unsupported file." -msgstr "" +msgstr "Қолдауы жоқ файл." #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 @@ -147,134 +143,158 @@ msgid "cookie file not found." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: белгісіз қате орын алған." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "" #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "" #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "" #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." -msgstr "" +msgstr "Қайта бағдарлаулар саны тым көп." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "" +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Жүктемелер басқарушысы" @@ -285,255 +305,272 @@ #: ../../po/../ui-gtk/UgtkAboutDialog.c:80 msgid "uGet Founder: " -msgstr "" +msgstr "uGet негізін қалаған: " #: ../../po/../ui-gtk/UgtkAboutDialog.c:81 msgid "uGet Project Manager: " -msgstr "" +msgstr "uGet жоба басқарушысы: " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" -msgstr "тапсырмалар" +msgstr "тапсырма" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Жаңа, алмасу буферінен" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Жаңа жүктеме" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Алмасу буфері" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Командалық жол" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Қате орын алды" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Жүктеп алу қатесі." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Жүктеп алу басталды" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." -msgstr "" +msgstr "Жүктемелер кезегін бастау." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" -msgstr "" +msgstr "Жүктеме аяқталды" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." -msgstr "" +msgstr "Кезектегі барлық жүктемелер аяқталды." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Күйі" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Санат" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Жаңа жүктемені жасау" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." -msgstr "" +msgstr "Жаңа _жүктеме..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." -msgstr "" +msgstr "Жаңа _санат..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "" #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "" #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Жаңа торрент..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Жаңа метасілтеме..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Барлық баптауларды сақтау" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" -msgstr "" +msgstr "Таңдалған жүктемені орындалатын етіп белгілеу" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" -msgstr "" +msgstr "Таңдалған жүктемені аялдату" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" -msgstr "" +msgstr "Таңдалған жүктеменің баптауларын орнату" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" -msgstr "" +msgstr "Таңдалған жүктемені жоғары жылжыту" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" -msgstr "" +msgstr "Таңдалған жүктемені төмен жылжыту" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" -msgstr "" +msgstr "Таңдалған жүктемені басына жылжыту" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" -msgstr "" +msgstr "Таңдалған жүктемені соңына жылжыту" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Жаңа санат" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " -msgstr "" +msgstr "Көшірме - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" -msgstr "" +msgstr "Санат қасиеттері" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" -msgstr "" +msgstr "Жүктеме қасиеттері" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Жаңа торрент" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" -msgstr "" +msgstr "Жаңа метасілтеме" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" -msgstr "" +msgstr "Торрент файлын ашу" + +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Torrent файлы (*.torrent)" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" -msgstr "" +msgstr "Метасілтеме файлын ашу" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." -msgstr "" +msgstr "Санаттар файлын сақтау сәтсіз аяқталды." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." -msgstr "" +msgstr "Санаттар файлын жүктеу сәтсіз аяқталды." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" -msgstr "" +msgstr "Санаттар файлын сақтау" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" -msgstr "" +msgstr "Санаттар файлын ашу" + +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "JSON файлы (*.json)" #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "" #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Мәтін файлы" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "HTML файлы (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Жаңа" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Қате" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Хабарлама" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "" @@ -563,14 +600,17 @@ msgid "Category _name:" msgstr "" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "" @@ -599,7 +639,7 @@ #: ../../po/../ui-gtk/UgtkConfirmDialog.c:65 msgid "Are you sure you want to quit?" -msgstr "" +msgstr "Шығуды қалайсыз ба?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:69 msgid "Really delete files?" @@ -623,7 +663,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -634,12 +674,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Файл:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Буманы таңдау" @@ -661,7 +701,7 @@ #: ../../po/../ui-gtk/UgtkDownloadForm.c:230 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 msgid "_Runnable" -msgstr "" +msgstr "О_рындалатын" #: ../../po/../ui-gtk/UgtkDownloadForm.c:232 msgid "P_ause" @@ -671,7 +711,7 @@ #. frame for login #: ../../po/../ui-gtk/UgtkDownloadForm.c:238 msgid "Login" -msgstr "" +msgstr "Логин" #. User - label #. user label & entry @@ -693,19 +733,19 @@ msgstr "Cookie файлы:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" -msgstr "" +msgstr "Cookie файлын таңдау" #. label - post file #: ../../po/../ui-gtk/UgtkDownloadForm.c:319 msgid "Post file:" -msgstr "" +msgstr "Post файлы:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" -msgstr "" +msgstr "Post файлын таңдау" #. label - user agent #: ../../po/../ui-gtk/UgtkDownloadForm.c:346 @@ -720,7 +760,7 @@ #. counts - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:377 msgid "counts" -msgstr "" +msgstr "рет" #. Retry delay - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:384 @@ -740,12 +780,12 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" -msgstr "" +msgstr "КиБ/сек" #. label - Max download speed #: ../../po/../ui-gtk/UgtkDownloadForm.c:424 @@ -759,7 +799,7 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:51 msgid "_File" -msgstr "" +msgstr "_Файл" #. Batch Downloads --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:94 @@ -809,13 +849,14 @@ #. Offline mode #: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 msgid "Offline Mode" -msgstr "" +msgstr "Желіден тыс режимі" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 msgid "_Edit" msgstr "Тү_зету" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -838,9 +879,9 @@ msgstr "" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "" #. --- Completion Auto-Actions --- start --- @@ -863,7 +904,7 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 msgid "Shutdown" -msgstr "" +msgstr "Сөндіру" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 msgid "Reboot" @@ -890,11 +931,11 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:285 #: ../../po/../ui-gtk/UgtkTrayIcon.c:122 msgid "_Settings..." -msgstr "" +msgstr "_Баптаулар..." #: ../../po/../ui-gtk/UgtkMenubar-ui.c:304 msgid "_View" -msgstr "" +msgstr "Тү_рі" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:308 msgid "_Toolbar" @@ -902,11 +943,11 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:313 msgid "Statusbar" -msgstr "" +msgstr "Қалып-күй жолағы" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:323 msgid "_Summary" -msgstr "" +msgstr "Жи_ынды мәлімет" #. Summary Items --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:331 @@ -921,7 +962,7 @@ #. Summary Items - Folder #: ../../po/../ui-gtk/UgtkMenubar-ui.c:341 msgid "_Folder" -msgstr "" +msgstr "_Бума" #. Summary Items - Elapsed #. menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Elapsed")); @@ -933,18 +974,18 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:356 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:436 msgid "_URL" -msgstr "" +msgstr "_Сілтеме" #. Summary Items - Message #: ../../po/../ui-gtk/UgtkMenubar-ui.c:361 msgid "_Message" -msgstr "" +msgstr "_Хабарлама" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:376 msgid "Download _Columns" msgstr "" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "" @@ -967,29 +1008,29 @@ #. Download Columns - Left #: ../../po/../ui-gtk/UgtkMenubar-ui.c:401 msgid "_Left" -msgstr "" +msgstr "Қа_лды" #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Жылдамдығы" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "" @@ -1000,13 +1041,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "" @@ -1028,7 +1069,8 @@ msgid "_Download" msgstr "Жү_ктеп алу" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "Элементті ө_шіру" @@ -1102,116 +1144,116 @@ msgid "Check for Updates" msgstr "Жаңартуларға тексеру" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Баптаулар" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "'%s' файлы үшін үнсіз келісім қолданбасын жөнелту мүмкін емес." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - Бұл бума жоқ болып тұр." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Жалпы" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Кеңейтілген" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Санат баптаулары" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "атаусыз" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Аялдатылған" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Аяқталған" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Белсенді" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Барлық қалып-күйлер" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Атауы" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Аяқталды" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Өлшемі" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Өткен" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" -msgstr "" +msgstr "Қалды" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Саны" @@ -1238,67 +1280,67 @@ msgid "Port:" msgstr "Порт:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Сокет:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Сокет аргументтері:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Дс" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Сс" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Ср" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Бс" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Жм" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Сн" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Жк" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Сөндіру" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- барлық тапсырмаларды тоқтату" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Қалыпты" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- тапсырманы қалыпты орындау" @@ -1357,280 +1399,315 @@ msgstr "" #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "мыс." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "" -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "" -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "" -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Алдын-ала қарау" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Пайдаланушы интерфейсі" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" -msgstr "" +msgstr "Жоспарлаушы" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Басқалар" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" -msgstr "" +msgstr "_Тыныш режимі" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Растау" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" -msgstr "" +msgstr "Жүйелік трей" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" -msgstr "" +msgstr "Трей таңбашасын әрқашан көрсету" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" -msgstr "" +msgstr "Іске қосылғанда, трейге қайыру" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" -msgstr "" +msgstr "Терезе жабылғанда, трейге қайыру" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Үлкен таңбашаны көрсету" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "" #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" -msgstr "" +msgstr "_Автосақтау" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 +msgid "_Interval:" +msgstr "_Аралығы:" + +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 msgid "minutes" msgstr "минут" -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 -msgid "_Interval:" -msgstr "" - #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" -msgstr "" +msgstr "Командалық жол баптаулары" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Орналасу" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" -msgstr "" +msgstr "Аргументтер" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "" -#: ../../po/../ui-gtk/UgtkSummary.c:112 -msgid "File" +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" msgstr "" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Сапасы:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Түрі:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 +msgid "File" +msgstr "Файл" + +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Бума" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Элемент" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" -msgstr "" +msgstr "Мәні" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" -msgstr "" +msgstr "Бар_лығын көшіріп алу" #. Show window #: ../../po/../ui-gtk/UgtkTrayIcon.c:141 msgid "Show window" -msgstr "" +msgstr "Терезені көрсету" #. Offline mode #: ../../po/../ui-gtk/UgtkTrayIcon.c:147 msgid "_Offline Mode" -msgstr "" +msgstr "Желіден т_ыс режимі" diff -Nru uget-2.0.2/po/ku.po uget-2.2.2/po/ku.po --- uget-2.0.2/po/ku.po 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/po/ku.po 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,1714 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Haval Abdulkarim , 2015 +# muhamad osman muhamad , 2014 +msgid "" +msgstr "" +"Project-Id-Version: uGet\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: Michael Tunnell \n" +"Language-Team: Kurdish (http://www.transifex.com/uget/uget/language/ku/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ku\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../../po/../uget/pwmd.c:32 +#, c-format +msgid "" +"Password Manager Daemon: uget\n" +"\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" +"\n" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "" + +#: ../../po/../uget/UgetApp.c:103 +msgid "All Category" +msgstr "" + +#. UGET_EVENT_NORMAL_CUSTOM +#: ../../po/../uget/UgetEvent.c:58 +msgid "Connecting..." +msgstr "پەیوەندی دەکرێ..." + +#. UGET_EVENT_NORMAL_CONNECT +#: ../../po/../uget/UgetEvent.c:59 +msgid "Transmitting..." +msgstr "بڵاودەکرێتەوە" + +#. UGET_EVENT_NORMAL_TRANSMIT, +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 +msgid "Retry" +msgstr "دوبارە هەوڵدان" + +#. UGET_EVENT_NORMAL_RETRY, +#: ../../po/../uget/UgetEvent.c:61 +msgid "Download completed" +msgstr "داگرتن تەواوبوو" + +#. UGET_EVENT_NORMAL_COMPLETE, +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 +msgid "Finished" +msgstr "تەواوبووە" + +#. UGET_EVENT_NORMAL_FINISH, +#. resumable +#: ../../po/../uget/UgetEvent.c:64 +msgid "Resumable" +msgstr "بەردەوامبوون لە توانادا هەیە" + +#. UGET_EVENT_NORMAL_RESUMABLE, +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 +msgid "Not Resumable" +msgstr "بەردەوامبوون لە توانادا نیە" + +#. UGET_EVENT_WARNING_CUSTOM +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 +msgid "Output file can't be renamed." +msgstr "فایلەکە لەتوانادانیە ناوبنرێتەوە" + +#. UGET_EVENT_ERROR_CUSTOM +#: ../../po/../uget/UgetEvent.c:81 +msgid "couldn't connect to host." +msgstr "لە توانادا نەبوو پەیوەندی بکرێت" + +#. UGET_EVENT_ERROR_CONNECT_FAILED +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 +msgid "Folder can't be created." +msgstr "فۆلدەرەکە لە توانادانیە دروستبکرێت" + +#. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED +#: ../../po/../uget/UgetEvent.c:83 +msgid "File can't be created (bad filename or file exist)." +msgstr "فایلەکە لەتوانادانیە دروستبکرێت )ناوی فایلەکە خراپە یان دووبارەیە)" + +#. UGET_EVENT_ERROR_FILE_CREATE_FAILED +#: ../../po/../uget/UgetEvent.c:84 +msgid "File can't be opened." +msgstr "فایلەکە لەتوانادانیە بکرێتەوە" + +#. UGET_EVENT_ERROR_FILE_OPEN_FAILED +#: ../../po/../uget/UgetEvent.c:85 +msgid "Unable to create thread." +msgstr "" + +#. UGET_EVENT_ERROR_THREAD_CREATE_FAILED, +#: ../../po/../uget/UgetEvent.c:86 +msgid "Incorrect source (different file size)." +msgstr "" + +#. UGET_EVENT_ERROR_INCORRECT_SOURCE, +#: ../../po/../uget/UgetEvent.c:87 +msgid "Out of resource (disk full or run out of memory)." +msgstr "شوێنی بەتاڵ نەماوە ( زاکیرە یان مێمۆری پڕبووە)" + +#. UGET_EVENT_ERROR_OUT_OF_RESOURCE +#: ../../po/../uget/UgetEvent.c:88 +msgid "No output file." +msgstr "فایلەکە بوونی نیە" + +#. UGET_EVENT_ERROR_NO_OUTPUT_FILE +#: ../../po/../uget/UgetEvent.c:89 +msgid "No output setting." +msgstr "هیچ ڕێکخستنێکی دەرخستە." + +#. UGET_EVENT_ERROR_NO_OUTPUT_SETTING +#: ../../po/../uget/UgetEvent.c:90 +msgid "Too many retries." +msgstr "ژمارەیەکی زۆر لە هەوڵدانەوە" + +#. UGET_EVENT_ERROR_TOO_MANY_RETRIES +#: ../../po/../uget/UgetEvent.c:91 +msgid "Unsupported scheme (protocol)." +msgstr "" + +#. UGET_EVENT_ERROR_UNSUPPORTED_SCHEME +#: ../../po/../uget/UgetEvent.c:92 +msgid "Unsupported file." +msgstr "فایلێکی پشتگیرینەکراوە." + +#. UGET_EVENT_ERROR_UNSUPPORTED_FILE +#: ../../po/../uget/UgetEvent.c:93 +msgid "post file not found." +msgstr "" + +#. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND +#: ../../po/../uget/UgetEvent.c:94 +msgid "cookie file not found." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + +#. 1 - 10 +#: ../../po/../uget/UgetPluginAria2.c:280 +msgid "aria2: an unknown error occurred." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:281 +msgid "aria2: time out occurred." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:282 +msgid "aria2: resource was not found." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:283 +msgid "" +"aria2 saw the specfied number of 'resource not found' error. See --max-file-" +"not-found option" +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:284 +msgid "aria2: speed was too slow." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:285 +msgid "aria2: network problem occurred." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:286 +msgid "aria2: unfinished downloads." +msgstr "" + +#. _("Not Resumable"), +#: ../../po/../uget/UgetPluginAria2.c:288 +msgid "Out of resource" +msgstr "" + +#. _(), +#: ../../po/../uget/UgetPluginAria2.c:289 +msgid "aria2: piece length was different from one in .aria2 control file." +msgstr "" + +#. 11 - 20 +#: ../../po/../uget/UgetPluginAria2.c:291 +msgid "aria2 was downloading same file." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:292 +msgid "aria2 was downloading same info hash torrent." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:293 +msgid "aria2: file already existed. See --allow-overwrite option." +msgstr "" + +#. _("Output file can't be renamed."), +#: ../../po/../uget/UgetPluginAria2.c:295 +msgid "aria2: could not open existing file." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:296 +msgid "aria2: could not create new file or truncate existing file." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:297 +msgid "aria2: file I/O error occurred." +msgstr "" + +#. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED +#: ../../po/../uget/UgetPluginAria2.c:299 +msgid "aria2: name resolution failed." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:300 +msgid "aria2: could not parse Metalink document." +msgstr "" + +#. 21 - 30 +#: ../../po/../uget/UgetPluginAria2.c:302 +msgid "aria2: FTP command failed." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:303 +msgid "aria2: HTTP response header was bad or unexpected." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:304 +msgid "Too many redirections." +msgstr "ژمارەیەکی زۆر لە ڕێپیشاندان." + +#: ../../po/../uget/UgetPluginAria2.c:305 +msgid "aria2: HTTP authorization failed." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:306 +msgid "aria2: could not parse bencoded file(usually .torrent file)." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:307 +msgid "aria2: torrent file was corrupted or missing information." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:308 +msgid "aria2: Magnet URI was bad." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:309 +msgid "" +"aria2: bad/unrecognized option was given or unexpected option argument was " +"given." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:310 +msgid "aria2: remote server was unable to handle the request." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:311 +msgid "aria2: could not parse JSON-RPC request." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:314 +msgid "No response. Is aria2 shutdown?" +msgstr "" + +#. debug +#: ../../po/../uget/UgetPluginAria2.c:641 +msgid "aria2: gid was removed." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:46 +msgid "Download Manager" +msgstr "بەڕێوەبەری داگرتن" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:48 +msgid "translator-credits" +msgstr "ناوی-وەرگێڕەکان" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:80 +msgid "uGet Founder: " +msgstr "" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:81 +msgid "uGet Project Manager: " +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:239 +msgid "tasks" +msgstr "کارەکان" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 +msgid "New from Clipboard" +msgstr "نوێ لە کلیپبۆردەوە" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 +msgid "New Download" +msgstr "داگرتنی نوێ" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 +msgid "Clipboard" +msgstr "کلیپبۆرد" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 +msgid "Command line" +msgstr "هێڵی فرمان" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 +msgid "Error Occurred" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 +msgid "Download Starting" +msgstr "داگرتن دەستی پێکرد" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 +msgid "Starting download queue." +msgstr "دەستپێکردنی داگرتنی ڕیز." + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 +msgid "Download Completed" +msgstr "داگرتن تەواوبوو" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 +msgid "All queuing downloads have been completed." +msgstr "هەموو دابەزاندنە دانراوەکان تەواوبوون" + +#. ---------------------------------------------------- +#. frame for Status (start mode) +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:224 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 +msgid "Status" +msgstr "دۆخ" + +#. Summary Items - Category +#. Download Columns - Category +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 +msgid "Category" +msgstr "پۆلێن" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 +msgid "Create new download" +msgstr "دروستکردنی داگرتنی نوێ" + +#. New Download (accelerators) +#. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. New Download +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:59 +msgid "New _Download..." +msgstr "داگرتنی نوێ..." + +#. New Category +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +msgid "New _Category..." +msgstr "پۆلێنی نوێ..." + +#. New Clipboard batch +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +msgid "New Clipboard _batch..." +msgstr "" + +#. New URL Sequence batch +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 +msgid "New _URL Sequence batch..." +msgstr "کۆمەڵە لینکێکی نوێی یەک لەدوای یەک" + +#. New Torrent +#. separator +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); +#. New Torrent +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:83 +msgid "New Torrent..." +msgstr "تۆرێنتێکی نوێ..." + +#. New Metalink +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:90 +msgid "New Metalink..." +msgstr "مێتالینکێکی نوێ..." + +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 +msgid "Save all settings" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 +msgid "Set selected download runnable" +msgstr "ئەم دابەزاندنە دیاریکراوانە دەستپێبکە" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 +msgid "Set selected download to pause" +msgstr "داگرتنی دیاریکراو بوەستێنە" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 +msgid "Set selected download properties" +msgstr "دانانی زانیاری دابەزاندنە دیاریکراوەکان" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 +msgid "Move selected download up" +msgstr "ئەم دابەزاندنە دیاریکراوانە ببە لوتکە" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 +msgid "Move selected download down" +msgstr "ئەم دابەزاندنە دیاریکراوانە ببە خوارەوە" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 +msgid "Move selected download to top" +msgstr "جوڵاندنی داگرتنی دیاریکراو بۆ سەرەوە" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 +msgid "Move selected download to bottom" +msgstr "ئەم دابەزاندنە دیاریکراوانە ببە بنەوە" + +#: ../../po/../ui-gtk/UgtkApp.c:883 +msgid "New Category" +msgstr "کۆمەڵەیەکی نوێ" + +#: ../../po/../ui-gtk/UgtkApp.c:894 +msgid "Copy - " +msgstr "لەبەرگرتنەوە -" + +#: ../../po/../ui-gtk/UgtkApp.c:1049 +msgid "Category Properties" +msgstr "زانیاری ئەم کۆمەڵە" + +#: ../../po/../ui-gtk/UgtkApp.c:1063 +msgid "Download Properties" +msgstr "خاسیەتەکانی داگرتن" + +#: ../../po/../ui-gtk/UgtkApp.c:1296 +msgid "New Torrent" +msgstr "تۆرێنتێکی نوێ" + +#: ../../po/../ui-gtk/UgtkApp.c:1312 +msgid "New Metalink" +msgstr "مێتا لینکێکی نوێ" + +#: ../../po/../ui-gtk/UgtkApp.c:1321 +msgid "Open Torrent file" +msgstr "فایلی تۆرێنت بکرەوە" + +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 +msgid "Open Metalink file" +msgstr "فایلی مێتالینک بکەرەوە" + +#: ../../po/../ui-gtk/UgtkApp.c:1377 +msgid "Failed to save category file." +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1397 +msgid "Failed to load category file." +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1408 +msgid "Save Category file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1426 +msgid "Open Category file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + +#. add link +#: ../../po/../ui-gtk/UgtkApp.c:1485 +msgid "Link " +msgstr "لینک" + +#. add image +#: ../../po/../ui-gtk/UgtkApp.c:1490 +msgid "Image " +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1535 +msgid "Text File" +msgstr "فایلێکی تێکست" + +#: ../../po/../ui-gtk/UgtkApp.c:1582 +msgid "Import URLs from HTML file" +msgstr "وەرگرتنی لینکەکان لە فایلێکی HTML" + +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 +msgid "Import URLs from text file" +msgstr "وەرگرتنی لینک لە فایلێکی تێکستەوە" + +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 +msgid "Export URLs to text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1631 +msgid "URL Sequence batch" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1658 +msgid "No URLs found in clipboard." +msgstr "هیچ لینکێک لە کلیپبۆرد نەدۆزرایەوە" + +#: ../../po/../ui-gtk/UgtkApp.c:1667 +msgid "All URLs had existed." +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1672 +msgid "Clipboard batch" +msgstr "یەکلەدوای یەک لە کلیپبۆردەوە" + +#: ../../po/../ui-gtk/UgtkApp.c:1762 +msgid "New" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 +msgid "Error" +msgstr "هەڵە" + +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 +msgid "Message" +msgstr "نامە" + +#: ../../po/../ui-gtk/UgtkApp.c:1927 +#, c-format +msgid "Selected %d items" +msgstr "%d دیاری کراوە" + +#: ../../po/../ui-gtk/UgtkBanner.c:145 ../../po/../ui-gtk/UgtkBanner.c:165 +msgid "Attention uGetters:" +msgstr "ئاگاداری بەکارهێنەرانی یوگێت" + +#: ../../po/../ui-gtk/UgtkBanner.c:148 +msgid "" +"we are running a Donation Drive for uGet's Future Development, please click " +msgstr "ئێمە بەخشینێک بۆ یوگێن دەکەین بۆ بەرەوپێشچونی زیاتر ،تکایە کلیک بکە" + +#: ../../po/../ui-gtk/UgtkBanner.c:151 +msgid "HERE" +msgstr "لێرە" + +#: ../../po/../ui-gtk/UgtkBanner.c:168 +msgid "please fill out this quick User Survey for uGet." +msgstr "تکایە ئەم خزمەتە خێرایە بکە بۆ یوگێت." + +#: ../../po/../ui-gtk/UgtkBanner.c:171 +msgid "click here to take survey" +msgstr "کلیک لێرە بکە بۆئەوەی خزمەتێک بکەی" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:62 +msgid "Category _name:" +msgstr "ناوی پۆلێن:" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:82 +msgid "Active _downloads:" +msgstr "دابەزاندنە چالاکەکان:" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:92 +msgid "Capacity of Finished:" +msgstr "قەبارەی تەواوبوو:" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:102 +msgid "Capacity of Recycled:" +msgstr "قەبارەی سڕاوە:" + +#. ------------------------------------------------------------------------ +#. URI Matching conditions +#: ../../po/../ui-gtk/UgtkCategoryForm.c:111 +msgid "URI Matching conditions" +msgstr "" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:118 +msgid "Matched _Hosts:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:129 +msgid "Matched _Schemes:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:140 +msgid "Matched _Types:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 +msgid "Really Quit?" +msgstr "دڵنیایت دایدەخەیت؟" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:65 +msgid "Are you sure you want to quit?" +msgstr "دڵنیایت دەتەوێت دایبخەیت؟" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:69 +msgid "Really delete files?" +msgstr "دڵنیایت دەتەوێت فایلەکان بسڕیتەوە" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:70 +msgid "Are you sure you want to delete files?" +msgstr "دڵنیایت دەتەوێ فایلەکان بسڕیتەوە" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:74 +msgid "Really delete category?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:75 +msgid "Are you sure you want to delete category?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:109 +msgid "Don't ask me again" +msgstr "" + +#. URL - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:111 +#: ../../po/../ui-gtk/UgtkSequence.c:63 +msgid "_URI:" +msgstr "" + +#. Mirrors - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:130 +msgid "Mirrors:" +msgstr "دانەوە" + +#. File - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:146 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 +msgid "File:" +msgstr "پەڕگە:" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:166 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 +msgid "Select Folder" +msgstr "فۆڵدەرەکە دیاری بکە" + +#. Folder - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:174 +msgid "_Folder:" +msgstr "ـبوخچە:" + +#. Referrer - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:189 +msgid "Referrer:" +msgstr "" + +#. "Max Connections:" - title label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:212 +msgid "_Max Connections:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:230 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 +msgid "_Runnable" +msgstr "بەردەوامبێت" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:232 +msgid "P_ause" +msgstr "وەستاندن" + +#. ---------------------------------------------------- +#. frame for login +#: ../../po/../ui-gtk/UgtkDownloadForm.c:238 +msgid "Login" +msgstr "چونەناوەوە" + +#. User - label +#. user label & entry +#: ../../po/../ui-gtk/UgtkDownloadForm.c:252 +#: ../../po/../ui-gtk/UgtkProxyForm.c:149 +msgid "User:" +msgstr "بەکارهێنەر:" + +#. Password - label +#. password label & entry +#: ../../po/../ui-gtk/UgtkDownloadForm.c:268 +#: ../../po/../ui-gtk/UgtkProxyForm.c:160 +msgid "Password:" +msgstr "پاسوۆرد" + +#. label - cookie file +#: ../../po/../ui-gtk/UgtkDownloadForm.c:293 +msgid "Cookie file:" +msgstr "فایلی کووکی" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:310 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 +msgid "Select Cookie File" +msgstr "فایلی کووکی دیاریبکە" + +#. label - post file +#: ../../po/../ui-gtk/UgtkDownloadForm.c:319 +msgid "Post file:" +msgstr "فایلی پۆست" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:336 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 +msgid "Select Post File" +msgstr "فایلی پۆستەکە دیاری بکە" + +#. label - user agent +#: ../../po/../ui-gtk/UgtkDownloadForm.c:346 +msgid "User Agent:" +msgstr "بریکاری بەکارهێنەر" + +#. Retry limit - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:362 +msgid "Retry _limit:" +msgstr "سنوری دوبارەکردنەوە" + +#. counts - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:377 +msgid "counts" +msgstr "ژماردنەکان" + +#. Retry delay - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:384 +msgid "Retry _delay:" +msgstr "" + +#. seconds - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:399 +msgid "seconds" +msgstr "چرکە" + +#. label - Max upload speed +#: ../../po/../ui-gtk/UgtkDownloadForm.c:406 +msgid "Max upload speed:" +msgstr "زۆرترین خێرایی ناردن" + +#. label - "KiB/s" +#: ../../po/../ui-gtk/UgtkDownloadForm.c:418 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:436 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 +msgid "KiB/s" +msgstr "کب/چ" + +#. label - Max download speed +#: ../../po/../ui-gtk/UgtkDownloadForm.c:424 +msgid "Max download speed:" +msgstr "بەرزترین خێرایی داگرتن:" + +#. Retrieve timestamp +#: ../../po/../ui-gtk/UgtkDownloadForm.c:442 +msgid "Retrieve timestamp" +msgstr "کاتی وەرگرتن" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:51 +msgid "_File" +msgstr "فایل" + +#. Batch Downloads --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:94 +msgid "_Batch Downloads" +msgstr "دابەزاندنی یەک لە دوای یەک" + +#. Batch downloads - Clipboard batch +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:100 +msgid "_Clipboard batch..." +msgstr "" + +#. Batch downloads - URL Sequence batch +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:110 +msgid "_URL Sequence batch..." +msgstr "کۆمەڵە لینکی یەک لەدوای یەک" + +#. Batch downloads - Text file import (.txt) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:120 +msgid "_Text file import (.txt)..." +msgstr "وەرگرتن لە فایلێکی تێکستەوە" + +#. Batch downloads - HTML file import (.html) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:130 +msgid "_HTML file import (.html)..." +msgstr "وەرگرتنی لینک لە فایلێکی HTML" + +#. Batch downloads - Export to Text file (.txt) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:142 +msgid "_Export to Text file (.txt)..." +msgstr "ناردنە ناو فایلێکی تێکست(.txt)" + +#. Open Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 +msgid "_Open category..." +msgstr "" + +#. Save Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 +msgid "_Save category as..." +msgstr "" + +#. Save All +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 +msgid "Save _all settings" +msgstr "" + +#. Offline mode +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 +msgid "Offline Mode" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 +msgid "_Edit" +msgstr "دەستکاری کردن" + +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); +#. Settings shortcut +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:99 +msgid "Clipboard _Monitor" +msgstr "چاودێری کلیپبۆرد" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:103 +msgid "Clipboard works quietly" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:107 +msgid "Command-line works quietly" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:111 +msgid "Skip existing URI" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:115 +msgid "Apply recent download settings" +msgstr "" + +#. --- Completion Auto-Actions --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 +msgid "Completion _Auto-Actions" +msgstr "" + +#. Completion Auto-Actions - Disable +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 +msgid "_Disable" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 +msgid "Hibernate" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 +msgid "Suspend" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 +msgid "Shutdown" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 +msgid "Reboot" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 +msgid "Custom" +msgstr "" + +#. Completion Auto-Actions - Remember +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 +msgid "Remember setting" +msgstr "" + +#. Completion Auto-Actions - Help +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:279 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:682 +msgid "_Help" +msgstr "یارمەتی" + +#. --- Completion Auto-Actions --- end --- +#. menu_item = gtk_menu_item_new_with_mnemonic (_("_Settings...")); +#. Settings +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:285 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:122 +msgid "_Settings..." +msgstr "ڕێکخستنەکان..." + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:304 +msgid "_View" +msgstr "بینین" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:308 +msgid "_Toolbar" +msgstr "توڵامراز" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:313 +msgid "Statusbar" +msgstr "باڕی دۆخ" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:323 +msgid "_Summary" +msgstr "کورتە" + +#. Summary Items --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:331 +msgid "Summary _Items" +msgstr "پێشەکی پێکهاتەکان" + +#. Summary Items - Name +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:336 +msgid "_Name" +msgstr "ناو" + +#. Summary Items - Folder +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:341 +msgid "_Folder" +msgstr "فۆڵدەر" + +#. Summary Items - Elapsed +#. menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Elapsed")); +#. gtk_check_menu_item_set_active ((GtkCheckMenuItem*) menu_item, TRUE); +#. gtk_menu_shell_append ((GtkMenuShell*) submenu, menu_item); +#. menubar->view.summary_items.elapsed = menu_item; +#. Summary Items - URL +#. Download Columns - URL +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:356 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:436 +msgid "_URL" +msgstr "لینک" + +#. Summary Items - Message +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:361 +msgid "_Message" +msgstr "پەیام" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:376 +msgid "Download _Columns" +msgstr "ڕیزی دابەزاندنەکان" + +#. Download Columns - Complete +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 +msgid "_Complete" +msgstr "تەواوبوو" + +#. Download Columns - Total +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:386 +msgid "_Size" +msgstr "قەبارە" + +#. Download Columns - Percent (%) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:391 +msgid "_Percent '%'" +msgstr "لەسەدا '%'" + +#. Download Columns - Elapsed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:396 +msgid "_Elapsed" +msgstr "کاتی بەسەرچوو" + +#. Download Columns - Left +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:401 +msgid "_Left" +msgstr "چەپ" + +#. Download Columns - Speed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 +msgid "Speed" +msgstr "خێرایی" + +#. Download Columns - Up Speed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 +msgid "Up Speed" +msgstr "خێرایی ناردن" + +#. Download Columns - Uploaded +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 +msgid "Uploaded" +msgstr "ناردراو" + +#. Download Columns - Ratio +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 +msgid "Ratio" +msgstr "تێکڕا" + +#. Download Columns - Retry +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:426 +msgid "_Retry" +msgstr "هەوڵدانەوە" + +#. Download Columns - Added On +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 +msgid "Added On" +msgstr "دانراوە لە" + +#. Download Columns - Completed On +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 +msgid "Completed On" +msgstr "تەواوبوو لە" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:461 +msgid "_Category" +msgstr "کۆمەڵە" + +#. New Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:466 +msgid "_New Category..." +msgstr "پۆلێنی نوێ" + +#. Delete Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:476 +msgid "_Delete Category" +msgstr "سڕینەوەی کۆمەڵە" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:517 +msgid "_Download" +msgstr "ـداگرتن" + +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 +msgid "_Delete Entry" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 +msgid "Delete Entry and _File" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 +msgid "Open _Containing folder" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 +msgid "Force Start" +msgstr "بە فشار دەستپێکردن" + +#. Move to --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:596 +msgid "_Move To" +msgstr "بجوڵێنە بۆ " + +#. Priority --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:645 +msgid "Priority" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:654 +msgid "_High" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:659 +msgid "_Normal" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:664 +msgid "_Low" +msgstr "" + +#. Get Help Online +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:687 +msgid "Get Help Online" +msgstr "لە ئینتەرنێت یارمەتی بەدەستبێنە" + +#. Documentation +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:698 +msgid "Documentation" +msgstr "" + +#. Support Forum +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:709 +msgid "Support Forum" +msgstr "کۆڕی پشتگیری" + +#. Submit Feedback +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:720 +msgid "Submit Feedback" +msgstr "ناردنی هەڵەیەک لە بەرنامەکە" + +#. Report a Bug +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:731 +msgid "Report a Bug" +msgstr "هەواڵدان لە کەلێن" + +#. Keyboard Shortcuts +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:742 +msgid "Keyboard Shortcuts" +msgstr "" + +#. Check for Updates +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:749 +msgid "Check for Updates" +msgstr "گەڕان بۆ ڤێرژنی نوێ" + +#: ../../po/../ui-gtk/UgtkMenubar.c:187 +msgid "Settings" +msgstr "ڕێکخستن" + +#: ../../po/../ui-gtk/UgtkMenubar.c:454 +#, c-format +msgid "Can't launch default application for file '%s'." +msgstr "لەتوانادا نیە بە بەرنامەیەک فایلی '%s' بکرێتەوە." + +#: ../../po/../ui-gtk/UgtkMenubar.c:486 +#, c-format +msgid "'%s' - This folder does not exist." +msgstr "'%s' ئەم فۆڵدەرە بوونی نیە" + +#. title +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 +msgid "URI had existed" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 +msgid "This URI had existed, are you sure to continue?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +msgid "General" +msgstr "گشتی" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +msgid "Advanced" +msgstr "پێشکەوتوو" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 +msgid "Category settings" +msgstr "ڕێکخستنی کۆمەڵە" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 +msgid "Default for new download 1" +msgstr "ڕێکخستن بۆ دابەزاندنی نوێی 1" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 +msgid "Default 2" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 +msgid "unnamed" +msgstr "ناونەنراو" + +#: ../../po/../ui-gtk/UgtkNodeView.c:641 +msgid "Paused" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:642 +msgid "Uploading" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:643 +msgid "Completed" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:645 +msgid "Recycled" +msgstr "سڕاوە" + +#: ../../po/../ui-gtk/UgtkNodeView.c:646 +msgid "Queuing" +msgstr "هەڵدەگیرێت" + +#: ../../po/../ui-gtk/UgtkNodeView.c:647 +msgid "Active" +msgstr "چالاک" + +#: ../../po/../ui-gtk/UgtkNodeView.c:668 +msgid "All Status" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 +msgid "Name" +msgstr "ناو" + +#: ../../po/../ui-gtk/UgtkNodeView.c:790 +msgid "Complete" +msgstr "تەواوبوو" + +#: ../../po/../ui-gtk/UgtkNodeView.c:804 +msgid "Size" +msgstr "قەبارە" + +#: ../../po/../ui-gtk/UgtkNodeView.c:819 +msgid "%" +msgstr "%" + +#: ../../po/../ui-gtk/UgtkNodeView.c:833 +msgid "Elapsed" +msgstr "ماوە" + +#: ../../po/../ui-gtk/UgtkNodeView.c:847 +msgid "Left" +msgstr "ماوە" + +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 +msgid "URI" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:997 +msgid "Quantity" +msgstr "ژمارە" + +#. proxy type label & combo box +#: ../../po/../ui-gtk/UgtkProxyForm.c:64 +msgid "Proxy:" +msgstr "پڕۆکسی" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:67 +msgid "Don't use" +msgstr "بەکاری مەهێنە" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:69 +msgid "Default" +msgstr "سەرەتا" + +#. host label & entry +#: ../../po/../ui-gtk/UgtkProxyForm.c:121 +msgid "Host:" +msgstr "لینک" + +#. port label & entry +#: ../../po/../ui-gtk/UgtkProxyForm.c:132 +msgid "Port:" +msgstr "پۆرت" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 +msgid "Socket:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 +msgid "Socket args:" +msgstr "فرمانی بۆشایی:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 +msgid "Element:" +msgstr "ماددەکان" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 +msgid "Mon" +msgstr "دوو شەم" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 +msgid "Tue" +msgstr "سێشەم" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 +msgid "Wed" +msgstr "چوارشەم" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 +msgid "Thu" +msgstr "پێنج شەم" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 +msgid "Fri" +msgstr "هەینی" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 +msgid "Sat" +msgstr "دانیشت" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 +msgid "Sun" +msgstr "خۆر" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 +msgid "_Enable Scheduler" +msgstr "" + +#. Turn off - label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 +msgid "Turn off" +msgstr "کوژاندنەوە" + +#. Turn off - help label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 +msgid "- stop all task" +msgstr "هەموو کارەکان بوەستێنە" + +#. Normal - label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 +msgid "Normal" +msgstr "ئاسایی" + +#. Normal - help label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 +msgid "- run task normally" +msgstr "بەئاسایی کارەکە بکە" + +#: ../../po/../ui-gtk/UgtkSelector.c:254 +msgid "All" +msgstr "هەموو" + +#: ../../po/../ui-gtk/UgtkSelector.c:259 +msgid "None" +msgstr "هیچ" + +#: ../../po/../ui-gtk/UgtkSelector.c:276 +msgid "Mark by filter" +msgstr "دیاریکردن بە فلتەر" + +#: ../../po/../ui-gtk/UgtkSelector.c:294 +msgid "Mark URLs by host AND filename extension." +msgstr "" + +#: ../../po/../ui-gtk/UgtkSelector.c:297 +msgid "This will reset all marks of URLs." +msgstr "ئەمە هەموو دیاریکردنەکانی لینکەکەن دەگەڕێنێتەوە شێوەی سەرەتا." + +#. filter view ----------------------- +#. left side +#: ../../po/../ui-gtk/UgtkSelector.c:305 +msgid "Host" +msgstr "خانەخوێ" + +#. right side (filename extension) +#: ../../po/../ui-gtk/UgtkSelector.c:309 +msgid "File Ext." +msgstr "پاشکۆی فایل." + +#: ../../po/../ui-gtk/UgtkSelector.c:449 +msgid "URL" +msgstr "لینک" + +#: ../../po/../ui-gtk/UgtkSelector.c:781 +msgid "Base hypertext reference" +msgstr "نیشاندانی بنکەی زۆر نوسین" + +#. select all +#: ../../po/../ui-gtk/UgtkSelector.c:797 +msgid "Mark _All" +msgstr "هەموو دیاری بکە" + +#. select none +#: ../../po/../ui-gtk/UgtkSelector.c:801 +msgid "Mark _None" +msgstr "هیچیان دیاری مەکە" + +#. select by filter +#: ../../po/../ui-gtk/UgtkSelector.c:805 +msgid "_Mark by filter..." +msgstr "دیاریکردن بە فلتەر" + +#. e.g. +#: ../../po/../ui-gtk/UgtkSequence.c:74 +msgid "e.g." +msgstr "بۆ نموونە" + +#. ------------------------------------------------------- +#. radio "From" +#: ../../po/../ui-gtk/UgtkSequence.c:85 +msgid "_From:" +msgstr "لێرەوە" + +#. label "To" +#: ../../po/../ui-gtk/UgtkSequence.c:108 +msgid "To:" +msgstr "بۆ:" + +#. label "digits" +#: ../../po/../ui-gtk/UgtkSequence.c:123 +msgid "digits:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSequence.c:132 +msgid "F_rom:" +msgstr "لێرەوە" + +#. label case-sensitive +#: ../../po/../ui-gtk/UgtkSequence.c:162 +msgid "case-sensitive" +msgstr "کارێکی هەستیارە" + +#: ../../po/../ui-gtk/UgtkSequence.c:188 +msgid "No wildcard(*) character in URL entry." +msgstr "نابێت (*) لە لینکەکەدا هەبێت." + +#: ../../po/../ui-gtk/UgtkSequence.c:192 +msgid "URL is not valid." +msgstr "بەستەر نەگونجاوە." + +#: ../../po/../ui-gtk/UgtkSequence.c:196 +msgid "No character in 'From' or 'To' entry." +msgstr "هیچ نەنوسراوە لە ' لێرەوە ' یان ' بۆ '" + +#: ../../po/../ui-gtk/UgtkSequence.c:311 +msgid "Preview" +msgstr "پیشاندان" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 +msgid "User Interface" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 +msgid "Bandwidth" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 +msgid "Scheduler" +msgstr "خشتەی کات" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 +msgid "Plug-in" +msgstr "پێوەکراو" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 +msgid "Others" +msgstr "دیکە" + +#. Monitor button +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 +msgid "_Enable clipboard monitor" +msgstr "" + +#. quiet mode +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 +msgid "_Quiet mode" +msgstr "جۆری بێدەنگ" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 +msgid "Default category index" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 +msgid "Adding to Nth category if no matched category." +msgstr "" + +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 +msgid "Monitor clipboard for specified file types:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 +msgid "Separate the types with character '|'." +msgstr "جۆرەکان جیابکەرەوە بە '|'." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 +msgid "You can use regular expressions here." +msgstr "دەتوانی دەربڕینی ئاسایی بەکاربێنی لێرە." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 +msgid "Confirmation" +msgstr "" + +#. Confirmation check buttons +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 +msgid "Show confirmation dialog on exit" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 +msgid "Confirm when deleting files" +msgstr "دڵنیاکردنەوە لەکاتی سڕینەوەی فایلەکان" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 +msgid "System Tray" +msgstr "" + +#. System Tray check buttons +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 +msgid "Always show tray icon" +msgstr "هەمیشە ئایکۆنی لەسەرەوە پشان بدە" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 +msgid "Minimize to tray on startup" +msgstr "بچووکبکەوە بۆ سەرەوە لە سەرەتاوە" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 +msgid "Close to tray on window close" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 +msgid "Use Ubuntu's App Indicator" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 +msgid "Enable offline mode on startup" +msgstr "ئیشپێکردنی دەرهێڵ لە سەرەتا" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 +msgid "Download starting notification" +msgstr "ئاگادارکەرەوەی دەستپێکردنی دابەزاندنی نوێ" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 +msgid "Sound when download is finished" +msgstr "دەنگ کە دابەزاندن تەواوبوو" + +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 +msgid "These will affect all plug-ins." +msgstr "" + +#. Global speed limit +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 +msgid "Global speed limit" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 +msgid "Max upload speed" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +msgid "Max download speed" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 +msgid "Completion Auto-Actions" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 +msgid "Custom command:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 +msgid "Custom command if error occured:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 +msgid "_Autosave" +msgstr "" + +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 +msgid "_Interval:" +msgstr "وچان" + +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "خولەک" + +#. Commandline Settings +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 +msgid "Commandline Settings" +msgstr "ڕێکخستنەکانی هێڵی فرمان" + +#. --quiet +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 +msgid "Use '--quiet' by default" +msgstr "بێدەنگ هەڵبژێرە وەک سەرەتا" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 +msgid "Plug-in matching order:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 +msgid "Aria2 plug-in options" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 +msgid "RPC authorization secret token" +msgstr "" + +#. ------------------------------------------------------------------------ +#. Speed Limits +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 +msgid "Global speed limit for aria2 only" +msgstr "" + +#. ------------------------------------------------------------------------ +#. aria2 works on local device +#. launch +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 +msgid "_Launch aria2 on startup" +msgstr "ئاریا 2 لە سەرەتاوە ئیشپێبکە" + +#. shutdown +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 +msgid "_Shutdown aria2 on exit" +msgstr "کوژاندنەوەی ئاریا 2 پاش داخستن" + +#. ------------------------------------------------------------------------ +#. Local options +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 +msgid "Launch aria2 on local device" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 +msgid "Path" +msgstr "شوێن" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 +msgid "Arguments" +msgstr "فرمانەکان" + +#. Arguments - hint +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 +msgid "You must restart uGet after modifying it." +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 +msgid "File" +msgstr "پەڕگە" + +#: ../../po/../ui-gtk/UgtkSummary.c:119 +msgid "Folder" +msgstr "بوخچە" + +#: ../../po/../ui-gtk/UgtkSummary.c:262 +msgid "Item" +msgstr "پێکهاتە" + +#: ../../po/../ui-gtk/UgtkSummary.c:267 +msgid "Value" +msgstr "بڕ" + +#. Copy All +#: ../../po/../ui-gtk/UgtkSummary.c:299 +msgid "Copy _All" +msgstr "کۆپیکردنی هەموو" + +#. Show window +#: ../../po/../ui-gtk/UgtkTrayIcon.c:141 +msgid "Show window" +msgstr "پیشاندانی بەرنامە" + +#. Offline mode +#: ../../po/../ui-gtk/UgtkTrayIcon.c:147 +msgid "_Offline Mode" +msgstr "شێوازی دەرهێڵ" diff -Nru uget-2.0.2/po/LINGUAS uget-2.2.2/po/LINGUAS --- uget-2.0.2/po/LINGUAS 2015-04-30 23:37:53.000000000 +0000 +++ uget-2.2.2/po/LINGUAS 2019-05-19 16:49:05.000000000 +0000 @@ -1,2 +1,2 @@ # Set of available languages. -ar be bg bn_BD ca cs da de es fa fr he hr hu id it ka_GE kk or_IN pl pt_BR ru sk_SK sr sr@latin sv tr uk vi zh_CN zh_TW +ar be bg bn_BD ca cs da de es fa fr he hr hu id it ja ka_GE kk ku lt or_IN pl pt_BR ro ru sk_SK sr sr@latin sv tr uk uz@Latn vi zh_CN zh_TW diff -Nru uget-2.0.2/po/lt.po uget-2.2.2/po/lt.po --- uget-2.0.2/po/lt.po 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/po/lt.po 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,1713 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Moo, 2017 +msgid "" +msgstr "" +"Project-Id-Version: uGet\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-12-02 22:37+0000\n" +"Last-Translator: Moo\n" +"Language-Team: Lithuanian (http://www.transifex.com/uget/uget/language/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: ../../po/../uget/pwmd.c:32 +#, c-format +msgid "" +"Password Manager Daemon: uget\n" +"\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" +"\n" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "Slaptažodžių tvarkytuvės tarnyba: uget\n\nBandant SSH ryšį su serveriu %s atsirado problemų patvirtinant jo serverio raktą ir lyginant šį raktą su žinomų ir patikimų serverių failu, nes jo serverio raktas nebuvo rastas.\n\nAr norėtumėte šiam ir ateityje užmezgiamiems ryšiams laikyti šį ryšį kaip patikimą, pridedant %s serverio raktą į žinomų serverių failą?" + +#: ../../po/../uget/UgetApp.c:103 +msgid "All Category" +msgstr "Visos kategorijos" + +#. UGET_EVENT_NORMAL_CUSTOM +#: ../../po/../uget/UgetEvent.c:58 +msgid "Connecting..." +msgstr "Jungiamasi..." + +#. UGET_EVENT_NORMAL_CONNECT +#: ../../po/../uget/UgetEvent.c:59 +msgid "Transmitting..." +msgstr "Persiunčiama..." + +#. UGET_EVENT_NORMAL_TRANSMIT, +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 +msgid "Retry" +msgstr "Bandyti dar kartą" + +#. UGET_EVENT_NORMAL_RETRY, +#: ../../po/../uget/UgetEvent.c:61 +msgid "Download completed" +msgstr "Atsiuntimas užbaigtas" + +#. UGET_EVENT_NORMAL_COMPLETE, +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 +msgid "Finished" +msgstr "Užbaigta" + +#. UGET_EVENT_NORMAL_FINISH, +#. resumable +#: ../../po/../uget/UgetEvent.c:64 +msgid "Resumable" +msgstr "Pratęsiama" + +#. UGET_EVENT_NORMAL_RESUMABLE, +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 +msgid "Not Resumable" +msgstr "Nepratęsiama" + +#. UGET_EVENT_WARNING_CUSTOM +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 +msgid "Output file can't be renamed." +msgstr "Išvesties failas negali būti pervadintas." + +#. UGET_EVENT_ERROR_CUSTOM +#: ../../po/../uget/UgetEvent.c:81 +msgid "couldn't connect to host." +msgstr "nepavyko prisijungti prie serverio." + +#. UGET_EVENT_ERROR_CONNECT_FAILED +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 +msgid "Folder can't be created." +msgstr "Aplankas negali būti sukurtas." + +#. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED +#: ../../po/../uget/UgetEvent.c:83 +msgid "File can't be created (bad filename or file exist)." +msgstr "Failas negali būti sukurtas (blogas failo pavadinimas arba failas jau yra)." + +#. UGET_EVENT_ERROR_FILE_CREATE_FAILED +#: ../../po/../uget/UgetEvent.c:84 +msgid "File can't be opened." +msgstr "Failas negali būti atvertas." + +#. UGET_EVENT_ERROR_FILE_OPEN_FAILED +#: ../../po/../uget/UgetEvent.c:85 +msgid "Unable to create thread." +msgstr "Nepavyko sukurti gijos." + +#. UGET_EVENT_ERROR_THREAD_CREATE_FAILED, +#: ../../po/../uget/UgetEvent.c:86 +msgid "Incorrect source (different file size)." +msgstr "Neteisingas šaltinis (skirtingo failo dydžiai)." + +#. UGET_EVENT_ERROR_INCORRECT_SOURCE, +#: ../../po/../uget/UgetEvent.c:87 +msgid "Out of resource (disk full or run out of memory)." +msgstr "Trūksta išteklių (diskas yra pilnas arba baigėsi atmintis)." + +#. UGET_EVENT_ERROR_OUT_OF_RESOURCE +#: ../../po/../uget/UgetEvent.c:88 +msgid "No output file." +msgstr "Nėra išvesties failo." + +#. UGET_EVENT_ERROR_NO_OUTPUT_FILE +#: ../../po/../uget/UgetEvent.c:89 +msgid "No output setting." +msgstr "Nėra išvesties nustatymo" + +#. UGET_EVENT_ERROR_NO_OUTPUT_SETTING +#: ../../po/../uget/UgetEvent.c:90 +msgid "Too many retries." +msgstr "Per daug bandymų iš naujo." + +#. UGET_EVENT_ERROR_TOO_MANY_RETRIES +#: ../../po/../uget/UgetEvent.c:91 +msgid "Unsupported scheme (protocol)." +msgstr "Nepalaikoma schema (protokolas)." + +#. UGET_EVENT_ERROR_UNSUPPORTED_SCHEME +#: ../../po/../uget/UgetEvent.c:92 +msgid "Unsupported file." +msgstr "Nepalaikomas failas." + +#. UGET_EVENT_ERROR_UNSUPPORTED_FILE +#: ../../po/../uget/UgetEvent.c:93 +msgid "post file not found." +msgstr "nerastas post failas." + +#. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND +#: ../../po/../uget/UgetEvent.c:94 +msgid "cookie file not found." +msgstr "slapukas nerastas." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Šis vaizdo įrašas buvo pašalintas." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Gaunant vaizdo įrašo informaciją, atsirado klaidų." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Gaunant vaizdo įrašo svetainės informaciją, atsirado klaidų." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "YouTube URL adrese nerasta video_id." + +#. 1 - 10 +#: ../../po/../uget/UgetPluginAria2.c:280 +msgid "aria2: an unknown error occurred." +msgstr "aria2: įvyko nežinoma klaida." + +#: ../../po/../uget/UgetPluginAria2.c:281 +msgid "aria2: time out occurred." +msgstr "aria2: pasibaigė laikas." + +#: ../../po/../uget/UgetPluginAria2.c:282 +msgid "aria2: resource was not found." +msgstr "aria2: išteklius nerastas." + +#: ../../po/../uget/UgetPluginAria2.c:283 +msgid "" +"aria2 saw the specfied number of 'resource not found' error. See --max-file-" +"not-found option" +msgstr "aria2 pamatė \"išteklius nerastas\" nurodytą klaidos numerį. Žiūrėkite --max-file-not-found parametrą" + +#: ../../po/../uget/UgetPluginAria2.c:284 +msgid "aria2: speed was too slow." +msgstr "aria2: sparta buvo pernelyg lėta." + +#: ../../po/../uget/UgetPluginAria2.c:285 +msgid "aria2: network problem occurred." +msgstr "aria2: atsirado tinklo problemų." + +#: ../../po/../uget/UgetPluginAria2.c:286 +msgid "aria2: unfinished downloads." +msgstr "aria2: neužbaigti atsiuntimai." + +#. _("Not Resumable"), +#: ../../po/../uget/UgetPluginAria2.c:288 +msgid "Out of resource" +msgstr "Nėra ištekliaus" + +#. _(), +#: ../../po/../uget/UgetPluginAria2.c:289 +msgid "aria2: piece length was different from one in .aria2 control file." +msgstr "aria2: dalies ilgis buvo kitoks nei tas, kuris yra .aria2 valdymo faile." + +#. 11 - 20 +#: ../../po/../uget/UgetPluginAria2.c:291 +msgid "aria2 was downloading same file." +msgstr "aria2 atsiuntinėjo tą patį failą." + +#: ../../po/../uget/UgetPluginAria2.c:292 +msgid "aria2 was downloading same info hash torrent." +msgstr "aria2 siuntėsi tokios pačios informacijos maišos torrent failą." + +#: ../../po/../uget/UgetPluginAria2.c:293 +msgid "aria2: file already existed. See --allow-overwrite option." +msgstr "aria2: failas jau buvo. Žiūrėkite --allow-overwrite parametrą." + +#. _("Output file can't be renamed."), +#: ../../po/../uget/UgetPluginAria2.c:295 +msgid "aria2: could not open existing file." +msgstr "aria2: nepavyko atverti esamo failo." + +#: ../../po/../uget/UgetPluginAria2.c:296 +msgid "aria2: could not create new file or truncate existing file." +msgstr "aria2: nepavyko sukurti naujo failo ar apkirpti esamo failo." + +#: ../../po/../uget/UgetPluginAria2.c:297 +msgid "aria2: file I/O error occurred." +msgstr "aria2: įvyko failo I/O klaida." + +#. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED +#: ../../po/../uget/UgetPluginAria2.c:299 +msgid "aria2: name resolution failed." +msgstr "aria2: pavadinimo rezoliucija nepavyko." + +#: ../../po/../uget/UgetPluginAria2.c:300 +msgid "aria2: could not parse Metalink document." +msgstr "aria2: nepavyko išnagrinėti Metanuorodos dokumento." + +#. 21 - 30 +#: ../../po/../uget/UgetPluginAria2.c:302 +msgid "aria2: FTP command failed." +msgstr "aria2: FTP komanda nepavyko." + +#: ../../po/../uget/UgetPluginAria2.c:303 +msgid "aria2: HTTP response header was bad or unexpected." +msgstr "aria2: HTTP atsakymo antraštė buvo bloga arba netikėta." + +#: ../../po/../uget/UgetPluginAria2.c:304 +msgid "Too many redirections." +msgstr "Per daug peradresavimų." + +#: ../../po/../uget/UgetPluginAria2.c:305 +msgid "aria2: HTTP authorization failed." +msgstr "aria2: HTTP tapatybės nustatymas nepavyko." + +#: ../../po/../uget/UgetPluginAria2.c:306 +msgid "aria2: could not parse bencoded file(usually .torrent file)." +msgstr "aria2: nepavyko išnagrinėti koduoto failo (dažniausiai, .torrent failo)." + +#: ../../po/../uget/UgetPluginAria2.c:307 +msgid "aria2: torrent file was corrupted or missing information." +msgstr "aria2: torrent failas buvo pažeistas ar jame trūko informacijos." + +#: ../../po/../uget/UgetPluginAria2.c:308 +msgid "aria2: Magnet URI was bad." +msgstr "aria2: Magnet URI buvo blogas." + +#: ../../po/../uget/UgetPluginAria2.c:309 +msgid "" +"aria2: bad/unrecognized option was given or unexpected option argument was " +"given." +msgstr "aria2: buvo nurodytas blogas/nepažįstamas parametras ar nurodytas netikėtas parametro argumentas." + +#: ../../po/../uget/UgetPluginAria2.c:310 +msgid "aria2: remote server was unable to handle the request." +msgstr "aria2: nuotoliniam serveriui nepavyko apdoroti užklausos." + +#: ../../po/../uget/UgetPluginAria2.c:311 +msgid "aria2: could not parse JSON-RPC request." +msgstr "aria2: nepavyko išnagrinėti JSON-RPC užklausos." + +#: ../../po/../uget/UgetPluginAria2.c:314 +msgid "No response. Is aria2 shutdown?" +msgstr "Nėra atsakymo. Ar aria2 išjungta?" + +#. debug +#: ../../po/../uget/UgetPluginAria2.c:641 +msgid "aria2: gid was removed." +msgstr "aria2: gid buvo pašalinta." + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Failed gauti medijos nuorodos." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "Nėra atitinkamos medijos." + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:46 +msgid "Download Manager" +msgstr "Atsiuntimų tvarkytuvė" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:48 +msgid "translator-credits" +msgstr "Moo" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:80 +msgid "uGet Founder: " +msgstr "uGet įkūrėjas: " + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:81 +msgid "uGet Project Manager: " +msgstr "uGet projekto vadybininkas: " + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:239 +msgid "tasks" +msgstr "užduočių" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 +msgid "New from Clipboard" +msgstr "Naujas iš iškarpinės" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 +msgid "New Download" +msgstr "Naujos atsiuntimas" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 +msgid "Clipboard" +msgstr "Iškarpinė" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 +msgid "Command line" +msgstr "Komandų eilutė" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 +msgid "Error Occurred" +msgstr "Įvyko klaida" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." +msgstr "Atsiunčiant, įvyko klaida." + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 +msgid "Download Starting" +msgstr "Atsiuntimas pradedamas" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 +msgid "Starting download queue." +msgstr "Pradedama atsiuntimų eilė." + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 +msgid "Download Completed" +msgstr "Atsiuntimas užbaigtas" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 +msgid "All queuing downloads have been completed." +msgstr "Visi atsiuntimai eilėje yra užbaigti." + +#. ---------------------------------------------------- +#. frame for Status (start mode) +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:224 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 +msgid "Status" +msgstr "Būsena" + +#. Summary Items - Category +#. Download Columns - Category +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 +msgid "Category" +msgstr "Kategorija" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 +msgid "Create new download" +msgstr "Sukurti naują atsiuntimą" + +#. New Download (accelerators) +#. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. New Download +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:59 +msgid "New _Download..." +msgstr "Naujas _atsiuntimas..." + +#. New Category +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +msgid "New _Category..." +msgstr "Nauja _kategorija..." + +#. New Clipboard batch +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +msgid "New Clipboard _batch..." +msgstr "Naujas paketinis atsiuntimas iš _iškarpinės..." + +#. New URL Sequence batch +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 +msgid "New _URL Sequence batch..." +msgstr "Naujas _URL sekos paketinis atsiuntimas..." + +#. New Torrent +#. separator +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); +#. New Torrent +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:83 +msgid "New Torrent..." +msgstr "Naujas torentas..." + +#. New Metalink +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:90 +msgid "New Metalink..." +msgstr "Nauja metanuoroda..." + +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 +msgid "Save all settings" +msgstr "Įrašyti visus nustatymus" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 +msgid "Set selected download runnable" +msgstr "Nustatyti pažymėtus atsiuntimus kaip paleistus" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 +msgid "Set selected download to pause" +msgstr "Nustatyti pažymėtus atsiuntimus kaip pristabdytus" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 +msgid "Set selected download properties" +msgstr "Nustatyti pažymėtų atsiuntimų savybes" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 +msgid "Move selected download up" +msgstr "Pakelti pažymėtą atsiuntimą" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 +msgid "Move selected download down" +msgstr "Nuleisti pažymėtą atsiuntimą" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 +msgid "Move selected download to top" +msgstr "Perkelti pažymėtą atsiuntimą į viršų" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 +msgid "Move selected download to bottom" +msgstr "Perkelti pažymėtą atsiuntimą į apačią" + +#: ../../po/../ui-gtk/UgtkApp.c:883 +msgid "New Category" +msgstr "Nauja kategorija" + +#: ../../po/../ui-gtk/UgtkApp.c:894 +msgid "Copy - " +msgstr "Kopija - " + +#: ../../po/../ui-gtk/UgtkApp.c:1049 +msgid "Category Properties" +msgstr "Kategorijos savybės" + +#: ../../po/../ui-gtk/UgtkApp.c:1063 +msgid "Download Properties" +msgstr "Atsiuntimo savybės" + +#: ../../po/../ui-gtk/UgtkApp.c:1296 +msgid "New Torrent" +msgstr "Naujas torentas" + +#: ../../po/../ui-gtk/UgtkApp.c:1312 +msgid "New Metalink" +msgstr "Nauja metanuoroda" + +#: ../../po/../ui-gtk/UgtkApp.c:1321 +msgid "Open Torrent file" +msgstr "Atverti Torrent failą" + +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Torrent failas (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 +msgid "Open Metalink file" +msgstr "Atverti Metanuorodos failą" + +#: ../../po/../ui-gtk/UgtkApp.c:1377 +msgid "Failed to save category file." +msgstr "Nepavyko įrašyti kategorijos failo." + +#: ../../po/../ui-gtk/UgtkApp.c:1397 +msgid "Failed to load category file." +msgstr "Nepavyko įkelti kategorijos failo." + +#: ../../po/../ui-gtk/UgtkApp.c:1408 +msgid "Save Category file" +msgstr "Įrašyti kategorijos failą" + +#: ../../po/../ui-gtk/UgtkApp.c:1426 +msgid "Open Category file" +msgstr "Atverti kategorijos failą" + +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "JSON failas (*.json)" + +#. add link +#: ../../po/../ui-gtk/UgtkApp.c:1485 +msgid "Link " +msgstr "Nuoroda " + +#. add image +#: ../../po/../ui-gtk/UgtkApp.c:1490 +msgid "Image " +msgstr "Paveikslas " + +#: ../../po/../ui-gtk/UgtkApp.c:1535 +msgid "Text File" +msgstr "Tekstinis failas" + +#: ../../po/../ui-gtk/UgtkApp.c:1582 +msgid "Import URLs from HTML file" +msgstr "Importuoti URL adresus iš HTML failo" + +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "HTML failas (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 +msgid "Import URLs from text file" +msgstr "Importuoti URL adresus iš tekstinio failo" + +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Grynojo teksto failas" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 +msgid "Export URLs to text file" +msgstr "Eksportuoti URL adresus į tekstinį failą" + +#: ../../po/../ui-gtk/UgtkApp.c:1631 +msgid "URL Sequence batch" +msgstr "URL sekos paketinis atsiuntimas" + +#: ../../po/../ui-gtk/UgtkApp.c:1658 +msgid "No URLs found in clipboard." +msgstr "Iškarpinėje nerasta jokių URL." + +#: ../../po/../ui-gtk/UgtkApp.c:1667 +msgid "All URLs had existed." +msgstr "Visi URL jau buvo." + +#: ../../po/../ui-gtk/UgtkApp.c:1672 +msgid "Clipboard batch" +msgstr "Paketinis atsiuntimas iš iškarpinės" + +#: ../../po/../ui-gtk/UgtkApp.c:1762 +msgid "New" +msgstr "Naujas" + +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 +msgid "Error" +msgstr "Klaida" + +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 +msgid "Message" +msgstr "Žinutė" + +#: ../../po/../ui-gtk/UgtkApp.c:1927 +#, c-format +msgid "Selected %d items" +msgstr "Pažymėta %d elementų" + +#: ../../po/../ui-gtk/UgtkBanner.c:145 ../../po/../ui-gtk/UgtkBanner.c:165 +msgid "Attention uGetters:" +msgstr "Dėmėsio uGet naudotojai:" + +#: ../../po/../ui-gtk/UgtkBanner.c:148 +msgid "" +"we are running a Donation Drive for uGet's Future Development, please click " +msgstr "mes vykdome paaukojimų maratoną, skirtą ateities uGet plėtojimui, prašome spustelėti " + +#: ../../po/../ui-gtk/UgtkBanner.c:151 +msgid "HERE" +msgstr "ČIA" + +#: ../../po/../ui-gtk/UgtkBanner.c:168 +msgid "please fill out this quick User Survey for uGet." +msgstr "prašome užpildyti šią trumpą uGet naudotojų apklausą." + +#: ../../po/../ui-gtk/UgtkBanner.c:171 +msgid "click here to take survey" +msgstr "spustelėkite čia, norėdami sudalyvauti apklausoje" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:62 +msgid "Category _name:" +msgstr "Kategorijos pavadi_nimas:" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:82 +msgid "Active _downloads:" +msgstr "Aktyvių _atsiuntimų:" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:92 +msgid "Capacity of Finished:" +msgstr "Užbaigtų talpa:" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:102 +msgid "Capacity of Recycled:" +msgstr "Šiukšlinės talpa:" + +#. ------------------------------------------------------------------------ +#. URI Matching conditions +#: ../../po/../ui-gtk/UgtkCategoryForm.c:111 +msgid "URI Matching conditions" +msgstr "URI atitikimo sąlygos" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:118 +msgid "Matched _Hosts:" +msgstr "Atitinkantys s_erveriai:" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:129 +msgid "Matched _Schemes:" +msgstr "Atitinkančios _schemos:" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:140 +msgid "Matched _Types:" +msgstr "Atitinkantys _tipai:" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 +msgid "Really Quit?" +msgstr "Tikrai išeiti?" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:65 +msgid "Are you sure you want to quit?" +msgstr "Ar tikrai norite išeiti?" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:69 +msgid "Really delete files?" +msgstr "Tikrai ištrinti failus?" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:70 +msgid "Are you sure you want to delete files?" +msgstr "Ar tikrai norite ištrinti failus?" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:74 +msgid "Really delete category?" +msgstr "Tikrai ištrinti kategoriją?" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:75 +msgid "Are you sure you want to delete category?" +msgstr "Ar tikrai norite ištrinti kategoriją?" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:109 +msgid "Don't ask me again" +msgstr "Daugiau nebeklausti" + +#. URL - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:111 +#: ../../po/../ui-gtk/UgtkSequence.c:63 +msgid "_URI:" +msgstr "_URI:" + +#. Mirrors - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:130 +msgid "Mirrors:" +msgstr "Tinklavietės:" + +#. File - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:146 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 +msgid "File:" +msgstr "Failas:" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:166 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 +msgid "Select Folder" +msgstr "Pasirinkite aplanką" + +#. Folder - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:174 +msgid "_Folder:" +msgstr "A_plankas:" + +#. Referrer - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:189 +msgid "Referrer:" +msgstr "Nukreipėjas:" + +#. "Max Connections:" - title label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:212 +msgid "_Max Connections:" +msgstr "_Daugiausia sujungimų:" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:230 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 +msgid "_Runnable" +msgstr "_Paleisti" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:232 +msgid "P_ause" +msgstr "P_ristabdyti" + +#. ---------------------------------------------------- +#. frame for login +#: ../../po/../ui-gtk/UgtkDownloadForm.c:238 +msgid "Login" +msgstr "Prisijungimas" + +#. User - label +#. user label & entry +#: ../../po/../ui-gtk/UgtkDownloadForm.c:252 +#: ../../po/../ui-gtk/UgtkProxyForm.c:149 +msgid "User:" +msgstr "Naudotojas:" + +#. Password - label +#. password label & entry +#: ../../po/../ui-gtk/UgtkDownloadForm.c:268 +#: ../../po/../ui-gtk/UgtkProxyForm.c:160 +msgid "Password:" +msgstr "Slaptažodis:" + +#. label - cookie file +#: ../../po/../ui-gtk/UgtkDownloadForm.c:293 +msgid "Cookie file:" +msgstr "Slapuko failas:" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:310 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 +msgid "Select Cookie File" +msgstr "Pasirinkite slapuko failą" + +#. label - post file +#: ../../po/../ui-gtk/UgtkDownloadForm.c:319 +msgid "Post file:" +msgstr "Post failas:" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:336 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 +msgid "Select Post File" +msgstr "Pasirinkite Post failą" + +#. label - user agent +#: ../../po/../ui-gtk/UgtkDownloadForm.c:346 +msgid "User Agent:" +msgstr "Naudotojo agentas:" + +#. Retry limit - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:362 +msgid "Retry _limit:" +msgstr "Bandymų iš naujo _riba:" + +#. counts - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:377 +msgid "counts" +msgstr "kartų" + +#. Retry delay - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:384 +msgid "Retry _delay:" +msgstr "Bandymų iš naujo _delsa:" + +#. seconds - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:399 +msgid "seconds" +msgstr "sek." + +#. label - Max upload speed +#: ../../po/../ui-gtk/UgtkDownloadForm.c:406 +msgid "Max upload speed:" +msgstr "Didžiausia išsiuntimo sparta:" + +#. label - "KiB/s" +#: ../../po/../ui-gtk/UgtkDownloadForm.c:418 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:436 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 +msgid "KiB/s" +msgstr "KiB/s" + +#. label - Max download speed +#: ../../po/../ui-gtk/UgtkDownloadForm.c:424 +msgid "Max download speed:" +msgstr "Didžiausia atsiuntimo sparta:" + +#. Retrieve timestamp +#: ../../po/../ui-gtk/UgtkDownloadForm.c:442 +msgid "Retrieve timestamp" +msgstr "Gauti laiko žymą" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:51 +msgid "_File" +msgstr "_Failas" + +#. Batch Downloads --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:94 +msgid "_Batch Downloads" +msgstr "_Paketiniai atsiuntimai" + +#. Batch downloads - Clipboard batch +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:100 +msgid "_Clipboard batch..." +msgstr "_Paketinis atsiuntimas iš iškarpinės..." + +#. Batch downloads - URL Sequence batch +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:110 +msgid "_URL Sequence batch..." +msgstr "_URL sekos paketinis atsiuntimas..." + +#. Batch downloads - Text file import (.txt) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:120 +msgid "_Text file import (.txt)..." +msgstr "_Tekstinio failo importavimas (.txt)..." + +#. Batch downloads - HTML file import (.html) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:130 +msgid "_HTML file import (.html)..." +msgstr "_HTML failo importavimas (.html)..." + +#. Batch downloads - Export to Text file (.txt) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:142 +msgid "_Export to Text file (.txt)..." +msgstr "_Eksportuoti į tekstinį failą (.txt)..." + +#. Open Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 +msgid "_Open category..." +msgstr "_Atverti kategoriją..." + +#. Save Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 +msgid "_Save category as..." +msgstr "Į_rašyti kategoriją kaip..." + +#. Save All +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 +msgid "Save _all settings" +msgstr "Įrašyti _visus nustatymus" + +#. Offline mode +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 +msgid "Offline Mode" +msgstr "Autonominė veiksena" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 +msgid "_Edit" +msgstr "_Taisa" + +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); +#. Settings shortcut +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:99 +msgid "Clipboard _Monitor" +msgstr "Iškarpinės _prižiūryklė" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:103 +msgid "Clipboard works quietly" +msgstr "Iškarpinė veikia tyliai" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:107 +msgid "Command-line works quietly" +msgstr "Komandų eilutė veikia tyliai" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:111 +msgid "Skip existing URI" +msgstr "Praleisti esamą URI" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:115 +msgid "Apply recent download settings" +msgstr "Taikyti paskiausio atsiuntimo nustatymus" + +#. --- Completion Auto-Actions --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 +msgid "Completion _Auto-Actions" +msgstr "_Automatiniai užbaigimo veiksmai" + +#. Completion Auto-Actions - Disable +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 +msgid "_Disable" +msgstr "_Išjungti" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 +msgid "Hibernate" +msgstr "Užmigdyti" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 +msgid "Suspend" +msgstr "Pristabdyti" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 +msgid "Shutdown" +msgstr "Išjungti" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 +msgid "Reboot" +msgstr "Paleisti iš naujo" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 +msgid "Custom" +msgstr "Pasirinktinai" + +#. Completion Auto-Actions - Remember +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 +msgid "Remember setting" +msgstr "Prisiminti nustatymą" + +#. Completion Auto-Actions - Help +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:279 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:682 +msgid "_Help" +msgstr "Ž_inynas" + +#. --- Completion Auto-Actions --- end --- +#. menu_item = gtk_menu_item_new_with_mnemonic (_("_Settings...")); +#. Settings +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:285 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:122 +msgid "_Settings..." +msgstr "Nu_statymai..." + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:304 +msgid "_View" +msgstr "_Rodinys" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:308 +msgid "_Toolbar" +msgstr "Į_rankių juosta" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:313 +msgid "Statusbar" +msgstr "Būsenos juosta" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:323 +msgid "_Summary" +msgstr "_Santrauka" + +#. Summary Items --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:331 +msgid "Summary _Items" +msgstr "Santraukos _elementai" + +#. Summary Items - Name +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:336 +msgid "_Name" +msgstr "Pavadi_nimas" + +#. Summary Items - Folder +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:341 +msgid "_Folder" +msgstr "_Aplankas" + +#. Summary Items - Elapsed +#. menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Elapsed")); +#. gtk_check_menu_item_set_active ((GtkCheckMenuItem*) menu_item, TRUE); +#. gtk_menu_shell_append ((GtkMenuShell*) submenu, menu_item); +#. menubar->view.summary_items.elapsed = menu_item; +#. Summary Items - URL +#. Download Columns - URL +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:356 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:436 +msgid "_URL" +msgstr "_URL" + +#. Summary Items - Message +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:361 +msgid "_Message" +msgstr "_Žinutė" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:376 +msgid "Download _Columns" +msgstr "Atsiuntimo s_tulpeliai" + +#. Download Columns - Complete +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 +msgid "_Complete" +msgstr "_Užbaigta" + +#. Download Columns - Total +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:386 +msgid "_Size" +msgstr "_Dydis" + +#. Download Columns - Percent (%) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:391 +msgid "_Percent '%'" +msgstr "_Procentai \"%\"" + +#. Download Columns - Elapsed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:396 +msgid "_Elapsed" +msgstr "_Praėjęs laikas" + +#. Download Columns - Left +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:401 +msgid "_Left" +msgstr "_Liko" + +#. Download Columns - Speed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 +msgid "Speed" +msgstr "Sparta" + +#. Download Columns - Up Speed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 +msgid "Up Speed" +msgstr "Išsiuntimo sparta" + +#. Download Columns - Uploaded +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 +msgid "Uploaded" +msgstr "Išsiųsta" + +#. Download Columns - Ratio +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 +msgid "Ratio" +msgstr "Santykis" + +#. Download Columns - Retry +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:426 +msgid "_Retry" +msgstr "_Bandyti dar kartą" + +#. Download Columns - Added On +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 +msgid "Added On" +msgstr "Pridėtas" + +#. Download Columns - Completed On +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 +msgid "Completed On" +msgstr "Užbaigtas" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:461 +msgid "_Category" +msgstr "_Kategorija" + +#. New Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:466 +msgid "_New Category..." +msgstr "_Nauja kategorija..." + +#. Delete Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:476 +msgid "_Delete Category" +msgstr "_Ištrinti kategoriją" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:517 +msgid "_Download" +msgstr "_Atsiuntimas" + +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 +msgid "_Delete Entry" +msgstr "_Ištrinti įrašą" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 +msgid "Delete Entry and _File" +msgstr "Ištrinti įrašą ir _failą" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 +msgid "Open _Containing folder" +msgstr "Atverti _vidinį aplanką" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 +msgid "Force Start" +msgstr "Priverstinai pradėti" + +#. Move to --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:596 +msgid "_Move To" +msgstr "_Perkelti į" + +#. Priority --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:645 +msgid "Priority" +msgstr "Pirmenybė" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:654 +msgid "_High" +msgstr "_Aukšta" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:659 +msgid "_Normal" +msgstr "_Normali" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:664 +msgid "_Low" +msgstr "Že_ma" + +#. Get Help Online +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:687 +msgid "Get Help Online" +msgstr "Rodyti žinyną internete" + +#. Documentation +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:698 +msgid "Documentation" +msgstr "Dokumentacija" + +#. Support Forum +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:709 +msgid "Support Forum" +msgstr "Palaikymo forumas" + +#. Submit Feedback +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:720 +msgid "Submit Feedback" +msgstr "Pateikti atsiliepimą" + +#. Report a Bug +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:731 +msgid "Report a Bug" +msgstr "Pranešti apie klaidą" + +#. Keyboard Shortcuts +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:742 +msgid "Keyboard Shortcuts" +msgstr "Spartieji klavišai" + +#. Check for Updates +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:749 +msgid "Check for Updates" +msgstr "Tikrinti ar yra atnaujinimų" + +#: ../../po/../ui-gtk/UgtkMenubar.c:187 +msgid "Settings" +msgstr "Nustatymai" + +#: ../../po/../ui-gtk/UgtkMenubar.c:454 +#, c-format +msgid "Can't launch default application for file '%s'." +msgstr "Nepavyksta paleisti numatytosios programos failui \"%s\"." + +#: ../../po/../ui-gtk/UgtkMenubar.c:486 +#, c-format +msgid "'%s' - This folder does not exist." +msgstr "\"%s\" - Šio aplanko nėra." + +#. title +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 +msgid "URI had existed" +msgstr "URI jau buvo" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 +msgid "This URI had existed, are you sure to continue?" +msgstr "Šis URI jau buvo, ar tikrai norite tęsti?" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +msgid "General" +msgstr "Bendros" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +msgid "Advanced" +msgstr "Išplėstinės" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 +msgid "Category settings" +msgstr "Kategorijos nustatymai" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 +msgid "Default for new download 1" +msgstr "Numatytieji naujam atsiuntimui 1" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 +msgid "Default 2" +msgstr "Numatytieji 2" + +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 +msgid "unnamed" +msgstr "be pavadinimo" + +#: ../../po/../ui-gtk/UgtkNodeView.c:641 +msgid "Paused" +msgstr "Pristabdyti" + +#: ../../po/../ui-gtk/UgtkNodeView.c:642 +msgid "Uploading" +msgstr "Išsiunčiama" + +#: ../../po/../ui-gtk/UgtkNodeView.c:643 +msgid "Completed" +msgstr "Užbaigta" + +#: ../../po/../ui-gtk/UgtkNodeView.c:645 +msgid "Recycled" +msgstr "Šiukšlinėje" + +#: ../../po/../ui-gtk/UgtkNodeView.c:646 +msgid "Queuing" +msgstr "Eilėje" + +#: ../../po/../ui-gtk/UgtkNodeView.c:647 +msgid "Active" +msgstr "Aktyvūs" + +#: ../../po/../ui-gtk/UgtkNodeView.c:668 +msgid "All Status" +msgstr "Visos būsenos" + +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 +msgid "Name" +msgstr "Pavadinimas" + +#: ../../po/../ui-gtk/UgtkNodeView.c:790 +msgid "Complete" +msgstr "Užbaigta" + +#: ../../po/../ui-gtk/UgtkNodeView.c:804 +msgid "Size" +msgstr "Dydis" + +#: ../../po/../ui-gtk/UgtkNodeView.c:819 +msgid "%" +msgstr "%" + +#: ../../po/../ui-gtk/UgtkNodeView.c:833 +msgid "Elapsed" +msgstr "Praėjęs laikas" + +#: ../../po/../ui-gtk/UgtkNodeView.c:847 +msgid "Left" +msgstr "Liko" + +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 +msgid "URI" +msgstr "URI" + +#: ../../po/../ui-gtk/UgtkNodeView.c:997 +msgid "Quantity" +msgstr "Kiekis" + +#. proxy type label & combo box +#: ../../po/../ui-gtk/UgtkProxyForm.c:64 +msgid "Proxy:" +msgstr "Įgaliotasis serveris:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:67 +msgid "Don't use" +msgstr "Nenaudoti" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:69 +msgid "Default" +msgstr "Numatytasis" + +#. host label & entry +#: ../../po/../ui-gtk/UgtkProxyForm.c:121 +msgid "Host:" +msgstr "Serveris:" + +#. port label & entry +#: ../../po/../ui-gtk/UgtkProxyForm.c:132 +msgid "Port:" +msgstr "Prievadas:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 +msgid "Socket:" +msgstr "Lizdas:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 +msgid "Socket args:" +msgstr "Lizdo argumentai:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 +msgid "Element:" +msgstr "Elementas:" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 +msgid "Mon" +msgstr "Pir" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 +msgid "Tue" +msgstr "Ant" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 +msgid "Wed" +msgstr "Tre" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 +msgid "Thu" +msgstr "Ket" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 +msgid "Fri" +msgstr "Pen" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 +msgid "Sat" +msgstr "Šeš" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 +msgid "Sun" +msgstr "Sek" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 +msgid "_Enable Scheduler" +msgstr "Į_jungti planuoklę" + +#. Turn off - label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 +msgid "Turn off" +msgstr "Išjungti" + +#. Turn off - help label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 +msgid "- stop all task" +msgstr "- stabdyti visas užduotis" + +#. Normal - label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 +msgid "Normal" +msgstr "Įprasta" + +#. Normal - help label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 +msgid "- run task normally" +msgstr "- vykdyti užduotis įprastai" + +#: ../../po/../ui-gtk/UgtkSelector.c:254 +msgid "All" +msgstr "Visi" + +#: ../../po/../ui-gtk/UgtkSelector.c:259 +msgid "None" +msgstr "Joks" + +#: ../../po/../ui-gtk/UgtkSelector.c:276 +msgid "Mark by filter" +msgstr "Žymėti pagal filtrą" + +#: ../../po/../ui-gtk/UgtkSelector.c:294 +msgid "Mark URLs by host AND filename extension." +msgstr "Žymėti URL adresus pagal serverį IR failo prievardį." + +#: ../../po/../ui-gtk/UgtkSelector.c:297 +msgid "This will reset all marks of URLs." +msgstr "Tai atstatys visus URL adresų žymėjimus." + +#. filter view ----------------------- +#. left side +#: ../../po/../ui-gtk/UgtkSelector.c:305 +msgid "Host" +msgstr "Serveris" + +#. right side (filename extension) +#: ../../po/../ui-gtk/UgtkSelector.c:309 +msgid "File Ext." +msgstr "Failo prievardis" + +#: ../../po/../ui-gtk/UgtkSelector.c:449 +msgid "URL" +msgstr "URL" + +#: ../../po/../ui-gtk/UgtkSelector.c:781 +msgid "Base hypertext reference" +msgstr "Bazinė hiperteksto nuoroda" + +#. select all +#: ../../po/../ui-gtk/UgtkSelector.c:797 +msgid "Mark _All" +msgstr "Žymėti _visus" + +#. select none +#: ../../po/../ui-gtk/UgtkSelector.c:801 +msgid "Mark _None" +msgstr "Nuimti žymėjimą _nuo visų" + +#. select by filter +#: ../../po/../ui-gtk/UgtkSelector.c:805 +msgid "_Mark by filter..." +msgstr "Ž_ymėti pagal filtrą..." + +#. e.g. +#: ../../po/../ui-gtk/UgtkSequence.c:74 +msgid "e.g." +msgstr "pvz.," + +#. ------------------------------------------------------- +#. radio "From" +#: ../../po/../ui-gtk/UgtkSequence.c:85 +msgid "_From:" +msgstr "_Nuo:" + +#. label "To" +#: ../../po/../ui-gtk/UgtkSequence.c:108 +msgid "To:" +msgstr "Iki:" + +#. label "digits" +#: ../../po/../ui-gtk/UgtkSequence.c:123 +msgid "digits:" +msgstr "skaitmenys:" + +#: ../../po/../ui-gtk/UgtkSequence.c:132 +msgid "F_rom:" +msgstr "N_uo:" + +#. label case-sensitive +#: ../../po/../ui-gtk/UgtkSequence.c:162 +msgid "case-sensitive" +msgstr "skiriant raidžių dydį" + +#: ../../po/../ui-gtk/UgtkSequence.c:188 +msgid "No wildcard(*) character in URL entry." +msgstr "URL įraše nėra pakaitos simbolio(*)." + +#: ../../po/../ui-gtk/UgtkSequence.c:192 +msgid "URL is not valid." +msgstr "URL yra neteisingas." + +#: ../../po/../ui-gtk/UgtkSequence.c:196 +msgid "No character in 'From' or 'To' entry." +msgstr "\"Nuo\" ar \"Iki\" įraše nėra simbolio." + +#: ../../po/../ui-gtk/UgtkSequence.c:311 +msgid "Preview" +msgstr "Peržiūra" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 +msgid "User Interface" +msgstr "Naudotojo sąsaja" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 +msgid "Bandwidth" +msgstr "Siuntimo sparta" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 +msgid "Scheduler" +msgstr "Planuoklė" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 +msgid "Plug-in" +msgstr "Įskiepis" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "Medijos svetainė" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 +msgid "Others" +msgstr "Kiti" + +#. Monitor button +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 +msgid "_Enable clipboard monitor" +msgstr "Į_jungti iškarpinės prižiūryklę" + +#. quiet mode +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 +msgid "_Quiet mode" +msgstr "_Tylioji veiksena" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 +msgid "Default category index" +msgstr "Numatytoji kategorijos rodyklė" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 +msgid "Adding to Nth category if no matched category." +msgstr "Jei nėra atitinkamos kategorijos, pridedama į N-tą kategorija." + +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "_Stebėti medijos svetainių URL" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 +msgid "Monitor clipboard for specified file types:" +msgstr "Iškarpinėje stebėti nurodytus failų tipus:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 +msgid "Separate the types with character '|'." +msgstr "Atskirkite tipus, naudodami \"|\" simbolį." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 +msgid "You can use regular expressions here." +msgstr "Čia galite naudoti reguliariuosius reiškinius." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 +msgid "Confirmation" +msgstr "Patvirtinimas" + +#. Confirmation check buttons +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 +msgid "Show confirmation dialog on exit" +msgstr "Išeinant, rodyti patvirtinimo dialogą" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 +msgid "Confirm when deleting files" +msgstr "Ištrinant failus, klausti patvirtinimo" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 +msgid "System Tray" +msgstr "Sistemos dėklas" + +#. System Tray check buttons +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 +msgid "Always show tray icon" +msgstr "Visada rodyti dėklo piktogramą" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 +msgid "Minimize to tray on startup" +msgstr "Paleidus programą, suskleisti į sistemos dėklą" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 +msgid "Close to tray on window close" +msgstr "Užvėrus langą, suskleisti į dėklą" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 +msgid "Use Ubuntu's App Indicator" +msgstr "Naudoti Ubuntu programų indikatorių" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 +msgid "Enable offline mode on startup" +msgstr "Paleidimo metu įjungti autonominę veikseną" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 +msgid "Download starting notification" +msgstr "Pranešimas apie pradedamą atsiuntimą" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 +msgid "Sound when download is finished" +msgstr "Užbaigus atsiuntimą, groti garsą" + +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Rodyti dideles piktogramas" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 +msgid "These will affect all plug-ins." +msgstr "Tai paveiks visus įskiepius." + +#. Global speed limit +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 +msgid "Global speed limit" +msgstr "Visuotiniai spartos apribojimai" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 +msgid "Max upload speed" +msgstr "Didžiausia išsiuntimo sparta" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +msgid "Max download speed" +msgstr "Didžiausia atsiuntimo sparta" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 +msgid "Completion Auto-Actions" +msgstr "Automatiniai užbaigimo veiksmai" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 +msgid "Custom command:" +msgstr "Pasirinktinė komanda:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 +msgid "Custom command if error occured:" +msgstr "Pasirinktinė komanda, įvykus klaidai:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 +msgid "_Autosave" +msgstr "_Automatinis įrašymas" + +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 +msgid "_Interval:" +msgstr "_Intervalas:" + +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "minutės" + +#. Commandline Settings +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 +msgid "Commandline Settings" +msgstr "Komandų eilutės nustatymai" + +#. --quiet +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 +msgid "Use '--quiet' by default" +msgstr "Pagal numatymą, naudoti \"--quiet\"" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 +msgid "Plug-in matching order:" +msgstr "Įskiepio atitikimo tvarka:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 +msgid "Aria2 plug-in options" +msgstr "Aria2 įskiepio parametrai" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 +msgid "RPC authorization secret token" +msgstr "Slaptas RPC prieigos teisių prieigos raktas" + +#. ------------------------------------------------------------------------ +#. Speed Limits +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 +msgid "Global speed limit for aria2 only" +msgstr "Visuotinis spartos apribojimas, skirtas tik aria2" + +#. ------------------------------------------------------------------------ +#. aria2 works on local device +#. launch +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 +msgid "_Launch aria2 on startup" +msgstr "Pa_leidžiant programą, paleisti aria2" + +#. shutdown +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 +msgid "_Shutdown aria2 on exit" +msgstr "_Išeinant iš programos, išjungti aria2" + +#. ------------------------------------------------------------------------ +#. Local options +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 +msgid "Launch aria2 on local device" +msgstr "Paleisti aria2 vietiniame įrenginyje" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 +msgid "Path" +msgstr "Kelias" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 +msgid "Arguments" +msgstr "Argumentai" + +#. Arguments - hint +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 +msgid "You must restart uGet after modifying it." +msgstr "Juos modifikavę, privalote paleisti uGet iš naujo." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "Medijos atitikimo veiksena:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Atitikimo sąlygos" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Kokybė:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Tipas:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 +msgid "File" +msgstr "Failas" + +#: ../../po/../ui-gtk/UgtkSummary.c:119 +msgid "Folder" +msgstr "Aplankas" + +#: ../../po/../ui-gtk/UgtkSummary.c:262 +msgid "Item" +msgstr "Elementas" + +#: ../../po/../ui-gtk/UgtkSummary.c:267 +msgid "Value" +msgstr "Reikšmė" + +#. Copy All +#: ../../po/../ui-gtk/UgtkSummary.c:299 +msgid "Copy _All" +msgstr "Kopijuoti viską" + +#. Show window +#: ../../po/../ui-gtk/UgtkTrayIcon.c:141 +msgid "Show window" +msgstr "Rodyti langą" + +#. Offline mode +#: ../../po/../ui-gtk/UgtkTrayIcon.c:147 +msgid "_Offline Mode" +msgstr "_Autonominė veiksena" diff -Nru uget-2.0.2/po/Makefile.in.in uget-2.2.2/po/Makefile.in.in --- uget-2.0.2/po/Makefile.in.in 2012-04-02 08:48:47.000000000 +0000 +++ uget-2.2.2/po/Makefile.in.in 2015-03-09 01:39:54.000000000 +0000 @@ -33,8 +33,7 @@ datadir = @datadir@ datarootdir = @datarootdir@ libdir = @libdir@ -DATADIRNAME = @DATADIRNAME@ -itlocaledir = $(prefix)/$(DATADIRNAME)/locale +localedir = @localedir@ subdir = po install_sh = @install_sh@ # Automake >= 1.8 provides @mkdir_p@. @@ -80,7 +79,7 @@ .po.pox: $(MAKE) $(GETTEXT_PACKAGE).pot - $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox + $(MSGMERGE) $* $(GETTEXT_PACKAGE).pot -o $*.pox .po.mo: $(INTLTOOL_V_MSGFMT)$(MSGFMT) -o $@ $< @@ -108,7 +107,7 @@ install-data-yes: all linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ - dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \ + dir=$(DESTDIR)$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $$dir; \ if test -r $$lang.gmo; then \ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ @@ -142,8 +141,8 @@ uninstall: linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ - rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \ - rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \ + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \ + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \ done check: all $(GETTEXT_PACKAGE).pot diff -Nru uget-2.0.2/po/or_IN.po uget-2.2.2/po/or_IN.po --- uget-2.0.2/po/or_IN.po 2015-09-11 12:14:41.000000000 +0000 +++ uget-2.2.2/po/or_IN.po 2019-05-19 16:49:06.000000000 +0000 @@ -7,15 +7,14 @@ msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-27 06:52+0000\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" "Last-Translator: Michael Tunnell \n" -"Language-Team: Oriya (India) (http://www.transifex.com/projects/p/uget/" -"language/or_IN/)\n" -"Language: or_IN\n" +"Language-Team: Oriya (India) (http://www.transifex.com/uget/uget/language/or_IN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: or_IN\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -23,15 +22,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "" @@ -46,7 +42,7 @@ msgstr "ପ୍ରେରଣ କରାଯାଉଛି..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "ପୁନଃ-ଚେଷ୍ଟା କରନ୍ତୁ" @@ -56,7 +52,7 @@ msgstr "ଆହରଣ ସମାପ୍ତ ହେଲା" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "ସମାପ୍ତ" @@ -67,12 +63,12 @@ msgstr "ପୁନଃ-ଆରମ୍ଭଯୋଗ୍ୟ" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "ପୁନଃ-ଆରମ୍ଭଯୋଗ୍ୟ ନୁହେଁ" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "ନିର୍ଗମ ଫାଇଲର ପୁନଃ-ନାମକରଣ କରି ହେବ ନାହିଁ" @@ -82,7 +78,7 @@ msgstr "ହୋଷ୍ଟ ସହିତ ଯୋଗାଯୋଗ କରାଯାଇ ପାରୁନାହିଁ" #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "ଫୋଲ୍ଡର ତିଆରି କରିହେବନାହିଁ" @@ -146,134 +142,158 @@ msgid "cookie file not found." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "" #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "" #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "" #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "ମାତ୍ରାଧିକ ପୁନଃ-ନିର୍ଦ୍ଦେଶନା" -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "" +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "ଆହରଣ ପରିଚାଳକ" @@ -290,249 +310,266 @@ msgid "uGet Project Manager: " msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "କାର୍ଯ୍ୟସବୁ" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "କ୍ଲିପ୍-ବୋର୍ଡ୍ ରୁ ନୂଆ" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "ନୂଆ ଆହରଣ" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "କ୍ଲିପ୍-ବୋର୍ଡ୍" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "କମାଣ୍ଡ ଲାଇନ" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "ଆହରଣ ଆରମ୍ଭ ହେଉଛି" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "ଆହରଣ ଶୃଙ୍ଖଳା ଆରମ୍ଭ ହେଉଛି" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "ଆହରଣ ସମାପ୍ତ ହେଲା" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "ସମସ୍ତ ଶୃଙ୍ଖଳାବଦ୍ଧ ଆହରଣ ସମାପ୍ତ ହେଲା" #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "ସ୍ଥିତି" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "ବିଭାଗ" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "ନୂଆ ଆହରଣ ତିଆରି କରନ୍ତୁ" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "New _Download..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "New _Category..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "New Clipboard _batch..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "New _URL Sequence batch..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "ନୂଆ ଟରେଣ୍ଟ..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "ନୂଆ ମେଟାଲିଙ୍କ..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "ଚୟନୀତ ଆହରଣକୁ ଚଳନକ୍ଷମ ହିସାବରେ ସେଟ କରନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "ଚୟନୀତ ଆହରଣ ବିରତି ପାଇଁ ସେଟ କରନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "ଚୟନୀତ ଆହରଣର ଗୁଣ-ଧର୍ମ ସ୍ଥିର କରନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "ଚୟନୀତ ଆହରଣକୁ ଉପରକୁ ସ୍ଥାନାନ୍ତରିତ କରନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "ଚୟନୀତ ଆହରଣକୁ ତଳକୁ ସ୍ଥାନାନ୍ତରିତ କରନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "ଚୟନୀତ ଆହରଣକୁ ସବୁଠାରୁ ଉପରକୁ ସ୍ଥାନାନ୍ତରିତ କରନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "ଚୟନୀତ ଆହରଣକୁ ସବୁଠାରୁ ତଳକୁ ସ୍ଥାନାନ୍ତରିତ କରନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "ନୂଆ ବିଭାଗ" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "ନକଲ କରନ୍ତୁ - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "ବିଭାଗ ବୈଶିଷ୍ଟ୍ୟ" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "ଆହରଣ ଗୁଣ-ଧର୍ମ" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "ନୂଆ ଟରେଣ୍ଟ" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "ନୂଆ ମେଟାଲିଙ୍କ" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "ଟରେଣ୍ଟ ଫାଇଲ ଖୋଲନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "ମେଟାଲିଙ୍କ ଫାଇଲ ଖୋଲନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "ଲିଙ୍କ " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "ଛବି " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "ଟେକ୍ସଟ ଫାଇଲ" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "HTML ଫାଇଲରୁ URL ଆମଦାନୀ କରନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "ଟେକ୍ସଟ ଫାଇଲରୁ URL ଆମଦାନୀ କରନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "କ୍ରମାନୁସାରେ ସଜ୍ଜିତ URL" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "କ୍ଲିପ୍-ବୋର୍ଡ୍ ରେ କୌଣସି URL ମିଳିଲା ନାହିଁ" -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "କ୍ଲିପ୍-ବୋର୍ଡ୍ ବ୍ୟାଚ" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "ତ୍ରୁଟି" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "ବାର୍ତା" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "ଚୟନୀତ %d ଟି ବସ୍ତୁ" @@ -544,9 +581,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"uGetର ଆଗାମୀ ଭବିଷ୍ୟତ ଓ ଉନ୍ନତି ପାଇଁ ଆମେ ଏକ ଆର୍ଥିକ ସାହାଯ୍ୟ କାର୍ଯ୍ୟକ୍ରମ ଚଳାଇଛୁ । ଦୟାକରି କ୍ଲିକ " -"କରନ୍ତୁ" +msgstr "uGetର ଆଗାମୀ ଭବିଷ୍ୟତ ଓ ଉନ୍ନତି ପାଇଁ ଆମେ ଏକ ଆର୍ଥିକ ସାହାଯ୍ୟ କାର୍ଯ୍ୟକ୍ରମ ଚଳାଇଛୁ । ଦୟାକରି କ୍ଲିକ କରନ୍ତୁ" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -564,14 +599,17 @@ msgid "Category _name:" msgstr "Category _name:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Active _downloads:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "ସମାପ୍ତିର କ୍ଷମତା:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "ପୁନଃ-ବ୍ୟବହାର କ୍ଷମତା:" @@ -624,7 +662,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "" @@ -635,12 +673,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "ଫାଇଲ:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "ଫୋଲ୍ଡର ବାଛନ୍ତୁ" @@ -694,7 +732,7 @@ msgstr "କୂକି ଫାଇଲ:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "କୁକୀ ଫାଇଲ ବାଛନ୍ତୁ:" @@ -704,7 +742,7 @@ msgstr "ପୋଷ୍ଟ ଫାଇଲ:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "ପୋଷ୍ଟ ଫାଇଲ ବାଛନ୍ତୁ" @@ -741,10 +779,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "କି.ବାଇଟ ସେକେଣ୍ଡପିଛା" @@ -816,7 +854,8 @@ msgid "_Edit" msgstr "_Edit" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -839,9 +878,9 @@ msgstr "" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "ସାମ୍ପ୍ରତିକ ଆହରଣ ବିନ୍ୟାସଗୁଡ଼ିକ ପ୍ରୟୋଗ କରନ୍ତୁ" #. --- Completion Auto-Actions --- start --- @@ -945,7 +984,7 @@ msgid "Download _Columns" msgstr "Download _Columns" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Complete" @@ -972,25 +1011,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "ବେଗ" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "ଅପ ବେଗ" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "ଅପଲୋଡ ହୋଇଛି" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "ଅନୁପାତ" @@ -1001,13 +1040,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "ଆରମ୍ଭ ସମୟ" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "ସମାପ୍ତି ସମୟ" @@ -1029,7 +1068,8 @@ msgid "_Download" msgstr "_Download" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "" @@ -1103,116 +1143,116 @@ msgid "Check for Updates" msgstr "ଅଦ୍ୟତନ ଖୋଜନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "ବିନ୍ୟାସ" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr " '%s' ଫାଇଲ ପାଇଁ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ପ୍ରୟୋଗ ଆରମ୍ଭ ହୋଇପାରୁନି" -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - ଏହି ଫୋଲ୍ଡରଟି ଉପଲବ୍ଧ ନାହିଁ" #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "ସାଧାରଣ" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "ଉନ୍ନତ" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "ବିଭାଗ ବିନ୍ୟାସ" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "ନୂତନ ଆହରଣ ୧ ପାଇଁ ପୂର୍ବନିର୍ଦ୍ଧାରିତ" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "ପୂର୍ବନିର୍ଦ୍ଧାରିତ ୨" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "ଅନାମଧେୟ" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "ପୁନଃ-ବ୍ୟବହୃତ" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "ଧାଡି" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "ସକ୍ରିୟ" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "ନାମ" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "ସମାପ୍ତ" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "ଆକାର" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "ଅତିକ୍ରାନ୍ତ ହୋଇଛି" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "ବାମ" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "ପରିମାଣ" @@ -1239,67 +1279,67 @@ msgid "Port:" msgstr "ପୋର୍ଟ:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "ସକେଟ୍:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "ସକେଟ୍ ଆର୍ଗୁମେଣ୍ଟ:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "ଉପାଦାନ:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "ସୋମ" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "ମଙ୍ଗଳ" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "ବୁଧ" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "ଗୁରୁ" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "ଶୁକ୍ର" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "ଶନି" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "ରବି" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Enable Scheduler" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "ବନ୍ଦ କରନ୍ତୁ" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- ସମସ୍ତ କାର୍ଯ୍ୟ ବନ୍ଦ କରନ୍ତୁ" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "ସ୍ଵାଭାବିକ" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- run task normally" @@ -1358,271 +1398,306 @@ msgstr "_Mark by filter..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "ଯେପରିକି:" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_From:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "ପ୍ରତି:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "ସଂଖ୍ୟା:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "F_rom:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "କେସ୍-ସଂବେଦନଶୀଳ" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "URL ରେ କୌଣସି ୱାଇଲ୍ଡକାର୍ଡ(*) ବର୍ଣ ଉପସ୍ଥିତ ନାହିଁ" -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL ବୈଧ ନୁହେଁ" -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "'From' ଅଥବା 'To' ସ୍ଥାନରେ କିଛି ଅକ୍ଷର ଉପସ୍ଥିତ ନାହିଁ" -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "ପ୍ରାକ୍-ଦର୍ଶନ" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "ନିର୍ଘଣ୍ଟକ" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "ପ୍ଲଗ୍-ଇନ୍" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "ଅନ୍ୟାନ୍ୟ" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Quiet mode" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "ପ୍ରକାର ଗୁଡିକୁ '|' ଦ୍ଵାରା ଅଲଗା କରନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "ଏଠାରେ ଆପଣ ଚିରାଚରିତ ଏକ୍ସପ୍ରେସନ ବ୍ୟବହାର କରିପାରନ୍ତି" -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "ଫାଇଲ ଅପସାରଣ କଲାବେଳେ ସୂଚିତ କରାନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "ଟ୍ରେ ଚିତ୍ରସଂକେତ ସବୁବେଳେ ଦେଖାନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "କମ୍ପୁଟର ଚାଲୁହେବା ମାତ୍ରେ ଟ୍ରେ ରେ ମିନିମାଇଜ କରିଦିଅନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "କମ୍ପୁଟର ଚାଲୁହେବା ମାତ୍ରେ ଅଫଲାଇନ ଧାରା ଚାଲୁ କରନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "ଆହରଣ ଆରମ୍ଭ ହେବାର ବିଜ୍ଞପ୍ତି" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "ଆହରଣ ସମାପ୍ତ ହେଲେ ଏକ ଧ୍ୱନି ଶୁଣାନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "" #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "ମିନିଟ" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Interval:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "ମିନିଟ" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "କମାଣ୍ଡ-ଲାଇନ ବିନ୍ୟାସ" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "'--quiet' ପୂର୍ବ-ନିର୍ଦ୍ଧାରିତ ଭାବେ ବ୍ୟବହାର କରନ୍ତୁ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Launch aria2 on startup" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Shutdown aria2 on exit" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "ପଥ" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Arguments" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "ଫାଇଲ" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "ଫୋଲ୍ଡର" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "ବସ୍ତୁ" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "ମୂଲ୍ୟ" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Copy _All" diff -Nru uget-2.0.2/po/pl.po uget-2.2.2/po/pl.po --- uget-2.0.2/po/pl.po 2015-09-11 12:14:41.000000000 +0000 +++ uget-2.2.2/po/pl.po 2019-05-19 16:49:06.000000000 +0000 @@ -4,40 +4,37 @@ # # Translators: # Artur Frącek , 2013 +# div off , 2016-2017 # fazi.3294, 2014 +# Krzysztof Kokot , 2016 # Miś Uszatek , 2012 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-27 06:34+0000\n" -"Last-Translator: Michael Tunnell \n" -"Language-Team: Polish (http://www.transifex.com/projects/p/uget/language/" -"pl/)\n" -"Language: pl\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-01-01 13:42+0000\n" +"Last-Translator: div off \n" +"Language-Team: Polish (http://www.transifex.com/uget/uget/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" #: ../../po/../uget/pwmd.c:32 #, c-format msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" -msgstr "" +msgstr "Wszystkie kategorie" #. UGET_EVENT_NORMAL_CUSTOM #: ../../po/../uget/UgetEvent.c:58 @@ -50,7 +47,7 @@ msgstr "Transmisja..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Powtórzeń" @@ -60,7 +57,7 @@ msgstr "Pobieranie ukończone" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Ukończono" @@ -71,12 +68,12 @@ msgstr "Wznawialny" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Nie wznawialny" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Plik wyjściowy nie może być zmieniony." @@ -86,7 +83,7 @@ msgstr "nie można połączyć się z hostem." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Folder nie może zostać utworzony." @@ -103,12 +100,12 @@ #. UGET_EVENT_ERROR_FILE_OPEN_FAILED #: ../../po/../uget/UgetEvent.c:85 msgid "Unable to create thread." -msgstr "" +msgstr "Nie można utworzyć wątku" #. UGET_EVENT_ERROR_THREAD_CREATE_FAILED, #: ../../po/../uget/UgetEvent.c:86 msgid "Incorrect source (different file size)." -msgstr "" +msgstr "Nieprawidłowe źródło (inny rozmiar pliku)." #. UGET_EVENT_ERROR_INCORRECT_SOURCE, #: ../../po/../uget/UgetEvent.c:87 @@ -143,139 +140,163 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "Nie znaleziono pliku postu." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." +msgstr "Nie znaleziono pliku cookie." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "To wideo zostało usunięte." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Wystąpił błąd podczas pobierania informacji o wideo." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "Nie znaleziono video_id w adresie URL z YouTube'a" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." -msgstr "" +msgstr "aria2: wystąpił nieznany błąd." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." -msgstr "" +msgstr "aria2: przekroczono czas oczekiwania." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." -msgstr "" +msgstr "aria2: nie znaleziono zasobu." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." -msgstr "" +msgstr "aria2: szybkość połączenia była za wolna." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." -msgstr "" +msgstr "aria2: wystąpił błąd sieciowy." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." -msgstr "" +msgstr "aria2: niedokończone pobierania." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." -msgstr "" +msgstr "aria2 ściągała ten sam plik." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." -msgstr "" +msgstr "aria2: plik już istnieje. Zobacz opcję --allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." -msgstr "" +msgstr "aria2: nie można otworzyć istniejącego pliku." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." -msgstr "" +msgstr "aria2: nie można utworzyć nowego pliku lub usunąć istniejącego." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." -msgstr "" +msgstr "aria2: wystąpił błąd wejścia/wyjścia w pliku." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." -msgstr "" +msgstr "aria2: rozpoznawanie nazw nie powiodło się." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "" #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." -msgstr "" +msgstr "aria2: zawiodło polecenie FTP." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." -msgstr "" +msgstr "aria2: odpowiedź nagłówka HTTP była zła lub niespodziewana." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Za dużo przekierowań." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." -msgstr "" +msgstr "aria2: zawiodła autoryzacja HTTP." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." -msgstr "" +msgstr "aria2: plik torrentu był uszkodzony lub brakowało w nim informacji." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." -msgstr "" +msgstr "aria2: serwer zdalny nie był w stanie obsłużyć żądania." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" -msgstr "" +msgstr "Nie ma odpowiedzi. Czy aria2 jest wyłączona?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." +msgstr "aria2: usunięto gid." + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Nie udało się pobrać linku do mediów." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." msgstr "" #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 @@ -284,261 +305,276 @@ #: ../../po/../ui-gtk/UgtkAboutDialog.c:48 msgid "translator-credits" -msgstr "" -"Piotr Ozarowski, 2005-2006.\n" -"Miś Uszatek, 2012" +msgstr "Piotr Ozarowski, 2005-2006.\nMiś Uszatek, 2012" #: ../../po/../ui-gtk/UgtkAboutDialog.c:80 msgid "uGet Founder: " -msgstr "" +msgstr "Twórca uGet:" #: ../../po/../ui-gtk/UgtkAboutDialog.c:81 msgid "uGet Project Manager: " -msgstr "" +msgstr "Menadżer projektu uGet" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "zadania" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Nowy ze schowka" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Nowe Pobierania" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Schowek" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "linia poleceń" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" -msgstr "" +msgstr "Wystąpił błąd." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." -msgstr "" +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." +msgstr "Wystąpił błąd podczas pobierania." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Rozpoczęto Pobieranie" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Uruchomienie kolejki pobierania." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Pobieranie Ukończone" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Wszystkie kolejki pobierania zostały ukończone." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Status" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Kategoria" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Utwórz nowe pobieranie" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Nowe _Pobieranie..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Nowa _Kategoria..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Wklej nową grupę ze schowka" #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Nowa grupa sekwencji adresów URL" #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Nowy Torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Nowy Metalink..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" -msgstr "" +msgstr "Zapisz wszystkie ustawienia." -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Wznowienie wybranego pobierania " -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Wstrzymanie wybranego pobierania" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Ustaw właściwości wybranego pobierania" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Przenieś zaznaczone pobieranie wyżej" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Przenieś zaznaczone pobieranie niżej" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Przenieś zaznaczone pobieranie na górę" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Przenieś zaznaczone pobieranie na dół" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Nowa Kategoria" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Kopiuj -" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Właściwości Kategorii" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Właściwości Pobierania " -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Nowy Torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Nowy Metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Otwórz Plik Torrent " -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Plik torrent (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Otwórz Plik Metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." -msgstr "" +msgstr "Nie udało się zapisać pliku kategorii." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." -msgstr "" +msgstr "Nie udało się załadować pliku kategorii." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" -msgstr "" +msgstr "Zapisz plik categorii" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" -msgstr "" +msgstr "Otwórz plik kategorii" + +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "Plik JSON (*.json)" #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Odnośniki " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Obrazki " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Plik tekstowy" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Importuj adresy z pliku HTML" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "Plik HTML (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Importuj adresy z pliku tekstowego" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Plik tekstowy" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" -msgstr "" +msgstr "Eksportuj adresy URL do pliku tekstowego." -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Sekwencyjna grupa adresów URL" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Nie znaleziono adresów w schowku." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." -msgstr "" +msgstr "Wszystkie adresy URL już istniały." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Wklej grupę ze schowka" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" -msgstr "" +msgstr "Nowy" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Błąd" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Komunikaty" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Wybrano %d pozycje " @@ -550,8 +586,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"Zbieramy dotacje na sfinansowanie przyszłych wersji uGet, proszę kliknij" +msgstr "Zbieramy dotacje na sfinansowanie przyszłych wersji uGet, proszę kliknij" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -569,14 +604,17 @@ msgid "Category _name:" msgstr "_Nazwa kategorii:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Aktywnych połączeń:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Pojemność Ukończonych" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Pojemność Kosza" @@ -617,19 +655,19 @@ #: ../../po/../ui-gtk/UgtkConfirmDialog.c:74 msgid "Really delete category?" -msgstr "" +msgstr "Na pewno usunąć kategorię?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:75 msgid "Are you sure you want to delete category?" -msgstr "" +msgstr "Jesteś pewny, że chcesz usunąć kategorię?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:109 msgid "Don't ask me again" -msgstr "" +msgstr "Nie pytaj mnie ponownie" #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "" @@ -640,12 +678,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Plik:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Wybierz Folder" @@ -662,7 +700,7 @@ #. "Max Connections:" - title label #: ../../po/../ui-gtk/UgtkDownloadForm.c:212 msgid "_Max Connections:" -msgstr "" +msgstr "_Maksymalna liczba połączeń" #: ../../po/../ui-gtk/UgtkDownloadForm.c:230 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 @@ -699,7 +737,7 @@ msgstr "Plik ciasteczka:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Wybierz Plik Ciasteczka" @@ -709,7 +747,7 @@ msgstr "Prześlij pliki:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Wybierz Plik do Wysłania" @@ -746,10 +784,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -800,28 +838,29 @@ #. Open Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 msgid "_Open category..." -msgstr "" +msgstr "_Otwórz kategorię..." #. Save Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 msgid "_Save category as..." -msgstr "" +msgstr "_Zapisz kategorię jako..." #. Save All #: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 msgid "Save _all settings" -msgstr "" +msgstr "Zapisz _wszystkie ustawienia" #. Offline mode #: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 msgid "Offline Mode" -msgstr "" +msgstr "Tryb offline" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 msgid "_Edit" msgstr "_Edycja" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -841,12 +880,12 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 #: ../../po/../ui-gtk/UgtkTrayIcon.c:111 msgid "Skip existing URI" -msgstr "" +msgstr "Pomiń istniejące adresy URI" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Zastosuj ostatnie ustawienia pobierania" #. --- Completion Auto-Actions --- start --- @@ -857,32 +896,32 @@ #. Completion Auto-Actions - Disable #: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 msgid "_Disable" -msgstr "" +msgstr "_Wyłącz" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 msgid "Hibernate" -msgstr "" +msgstr "Zahibernuj" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 msgid "Suspend" -msgstr "" +msgstr "Uśpij" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 msgid "Shutdown" -msgstr "" +msgstr "Zamknij" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 msgid "Reboot" -msgstr "" +msgstr "Uruchom ponownie" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 msgid "Custom" -msgstr "" +msgstr "Własne" #. Completion Auto-Actions - Remember #: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 msgid "Remember setting" -msgstr "" +msgstr "Zapamiętaj ustawienia" #. Completion Auto-Actions - Help #: ../../po/../ui-gtk/UgtkMenubar-ui.c:279 @@ -950,7 +989,7 @@ msgid "Download _Columns" msgstr "Kolumny Pobierania" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Ukończono" @@ -977,25 +1016,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Szybkość" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Prędkość wysyłania" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Wysłane" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Stosunek" @@ -1006,13 +1045,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Dodano" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Ukończono " @@ -1034,18 +1073,19 @@ msgid "_Download" msgstr "_Pobierz" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" -msgstr "" +msgstr "_Usuń Wpis" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 msgid "Delete Entry and _File" -msgstr "" +msgstr "Usuń Wpis i _Plik" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 msgid "Open _Containing folder" -msgstr "" +msgstr "Otwóż _folder zawierający plik" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 msgid "Force Start" @@ -1059,19 +1099,19 @@ #. Priority --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:645 msgid "Priority" -msgstr "" +msgstr "Priorytet" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:654 msgid "_High" -msgstr "" +msgstr "_Wysoki" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:659 msgid "_Normal" -msgstr "" +msgstr "_Normalny" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:664 msgid "_Low" -msgstr "" +msgstr "_Niski" #. Get Help Online #: ../../po/../ui-gtk/UgtkMenubar-ui.c:687 @@ -1101,123 +1141,123 @@ #. Keyboard Shortcuts #: ../../po/../ui-gtk/UgtkMenubar-ui.c:742 msgid "Keyboard Shortcuts" -msgstr "" +msgstr "Skróty klawiaturowe" #. Check for Updates #: ../../po/../ui-gtk/UgtkMenubar-ui.c:749 msgid "Check for Updates" msgstr "Aktualizacja" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Ustawienia" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Nie można uruchomić domyślnej aplikacji dla pliku '%s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - Ten folder nie istnieje." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" -msgstr "" +msgstr "URI już istniał" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" -msgstr "" +msgstr "Ten adres URI już istniał, jesteś pewien, że chcesz kontynuować?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Ogólny" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Zaawansowany" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Ustawienia kategorii" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Domyślne nowe pobranie 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Domyślny 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "bez nazwy" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" -msgstr "" +msgstr "Zatrzymano" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" -msgstr "" +msgstr "Przesyłanie" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" -msgstr "" +msgstr "Ukończono" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Kosz" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Kolejka" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Aktywne" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" -msgstr "" +msgstr "Wszystkie" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Nazwa" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Ukończono" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Rozmiar" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Upłynęło" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Pozostało" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" -msgstr "" +msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Wielkość" @@ -1244,67 +1284,67 @@ msgid "Port:" msgstr "Port:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Gniazdo:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Argumenty gniazda:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Element:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Pon" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Wt" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Śro" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Czw" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Pt" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Sob" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Niedz" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Włącz Harmonogram" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Wyłącz" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- zatrzymaj wszystkie zadania" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normalny" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- uruchom zadanie normalnie" @@ -1363,271 +1403,306 @@ msgstr "_Zaznacz przez filtr..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "np." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Od:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "Do:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "cyfrowy:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "O_d" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "wielkość liter" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Brak symbolu(*) wieloznacznego w zapisie adresu." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "Adres URL jest nieprawidłowy." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Brak znaków w pozycji 'Z' lub 'Do'" -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Podgląd" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" -msgstr "" +msgstr "Interfejs Użytkownika" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" -msgstr "" +msgstr "Przepustowość" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Harmonogram" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Wtyczki" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Inne" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" -msgstr "" +msgstr "_Włącz monitor schowka" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Cichy tryb" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" -msgstr "" +msgstr "Domyślny indeks kategorii" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 -msgid "Monitor clipboard for specified file types:" +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 +msgid "Monitor clipboard for specified file types:" +msgstr "Monitorować schowek dla określonych typów plików:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Oddziel typy przez znak '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Możesz użyć wyrażeń regularnych tutaj." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" -msgstr "" +msgstr "Potwierdzenie" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" -msgstr "" +msgstr "Wyświetl dialog potwierdzenia przy wyjściu" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Potwierdź przy usuwaniu plików" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" -msgstr "" +msgstr "Zasobnik systemowy" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Zawsze pokazuj ikonę na pasku zadań" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Minimalizuj do zasobnika na starcie" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" -msgstr "" +msgstr "Zminimalizuj do zasobnika systemowego po zamknięciu okna" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Włącz tryb offline na starcie" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Włącz powiadomienia pobierania" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Dźwięk, gdy pobieranie zostanie ukończone" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Wyświetl dużą ikonę" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "" #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" -msgstr "" +msgstr "Ogólne ograniczenia szybkości" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" -msgstr "" +msgstr "Maksymalna prędkość wgrywania" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" -msgstr "" +msgstr "Maksymalna prędkość pobierania" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" -msgstr "" +msgstr "Własne polecenie" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" -msgstr "" +msgstr "Własne polecenie jeżeli wystąpi błąd" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" -msgstr "" +msgstr "_Autozapis" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "minut" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Odstęp:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "minut" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Ustawienia Wiersza Poleceń" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Użyj '--quiet' domyślnie" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" -msgstr "" +msgstr "Opcje dodatku Aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" -msgstr "" +msgstr "Ogólne ograniczenia szybkości tylko dla arii2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Uruchom aria2 na starcie" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Zamknij aria2 przy wyjściu" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" -msgstr "" +msgstr "Uruchom aria2 na urządzeniu lokalnym" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Ścieżka" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Argumenty" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." +msgstr "Musisz uruchomić ponownie uGet po modyfikacji tego." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" msgstr "" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Jakość:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Typ:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Plik" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Folder" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Pozycja" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Wartość" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Kopiuj _Wszystko" diff -Nru uget-2.0.2/po/POTFILES.in uget-2.2.2/po/POTFILES.in --- uget-2.0.2/po/POTFILES.in 2015-06-07 23:57:13.000000000 +0000 +++ uget-2.2.2/po/POTFILES.in 2019-05-19 16:49:05.000000000 +0000 @@ -1,7 +1,10 @@ uget/pwmd.c uget/UgetApp.c uget/UgetEvent.c +uget/UgetMedia-youtube.c uget/UgetPluginAria2.c +uget/UgetPluginMedia.c +uget/UgetPluginMega.c ui-gtk/UgtkAboutDialog.c ui-gtk/UgtkApp-main.c ui-gtk/UgtkApp-timeout.c @@ -19,7 +22,7 @@ ui-gtk/UgtkProxyForm.c ui-gtk/UgtkScheduleForm.c ui-gtk/UgtkSelector.c -ui-gtk/UgtkSequencer.c +ui-gtk/UgtkSequence.c ui-gtk/UgtkSettingDialog.c ui-gtk/UgtkSettingForm.c ui-gtk/UgtkSummary.c diff -Nru uget-2.0.2/po/pt_BR.po uget-2.2.2/po/pt_BR.po --- uget-2.0.2/po/pt_BR.po 2015-09-11 12:14:41.000000000 +0000 +++ uget-2.2.2/po/pt_BR.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,22 +3,20 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# carlo giusepe tadei valente sasaki , 2014 -# Rafael Ferreira , 2013 +# carlo giusepe tadei valente sasaki , 2014,2016 +# Rafael Fontenelle , 2013 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-12-21 18:08+0000\n" -"Last-Translator: carlo giusepe tadei valente sasaki \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/uget/" -"language/pt_BR/)\n" -"Language: pt_BR\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: carlo giusepe tadei valente sasaki \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/uget/uget/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -26,15 +24,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "Serviço de gerenciamento de senhas: uget\n\nHouve um problema na conexão SSH com %s : sua hostkey não foi encontrada no arquivo de hospedeiros conhecidos e confiáveis.\n\nGostaria de adicionar a hostkey de %s ao arquivo de hospedeiros conhecidos e definir essa conexão como confiável agora e futuramente?" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Todas as categorias" @@ -49,7 +44,7 @@ msgstr "Transmitindo..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Tentar novamente" @@ -59,7 +54,7 @@ msgstr "Download concluído" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Finalizado" @@ -70,12 +65,12 @@ msgstr "Resumível" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Não resumível" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "O arquivo de saída não pode ser renomeado." @@ -85,15 +80,14 @@ msgstr "não foi possível conectar ao host." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "A pasta não pôde ser criada." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:83 msgid "File can't be created (bad filename or file exist)." -msgstr "" -"O arquivo não pôde ser criado (nome de arquivo inválido ou arquivo existe)." +msgstr "O arquivo não pôde ser criado (nome de arquivo inválido ou arquivo existe)." #. UGET_EVENT_ERROR_FILE_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:84 @@ -143,147 +137,165 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "arquivo enviado não encontrado." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "arquivo de cookie não encontrado." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Esse vídeo foi removido." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Erro ao obter informações do vídeo." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Erro ao obter a página do vídeo." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "Nenhuma video_id encontrada na URL do YouTube." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: ocorreu um erro desconhecido." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: tempo excedido." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: recurso não encontrado." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 viu o erro de número específico de 'recurso não encontrado'. Veja --" -"max-file-not-found option" +msgstr "aria2 viu o erro de número específico de 'recurso não encontrado'. Veja --max-file-not-found option" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: velocidade muito baixa." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: ocorreu um problema na rede." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: downloads não encerrados." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Sem recursos" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "aria2: comprimento da peça diferente do arquivo de controle .aria2." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "O aria2 estava baixando o mesmo arquivo." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "O aria2 estava baixando o mesmo info hash de torrent." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: o arquivo já existe. Veja a opção --allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: não foi possível abrir o arquivo existente." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." -msgstr "" -"aria2: não foi possível criar um novo arquivo ou mesclar o arquivo existente." +msgstr "aria2: não foi possível criar um novo arquivo ou mesclar o arquivo existente." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: erro de I/O de arquivo." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: falha na resolução de nome." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: não foi possível analisar o documento Metalink." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: falha no comando FTP." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: cabeçalho de resposta HTTP errado ou inesperado." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Número excessivo de redirecionamentos." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: falha na autorização de HTTP." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." -msgstr "" -"aria2: não foi possível analisar o arquivo bencoded (geralmente arquivo ." -"torrent)." +msgstr "aria2: não foi possível analisar o arquivo bencoded (geralmente arquivo .torrent)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: arquivo torrent corrompido ou com informação ausente." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: URI Magnet errada." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" -"aria2: foi dada uma opção errada/não reconhecida ou um argumento inesperado." +msgstr "aria2: foi dada uma opção errada/não reconhecida ou um argumento inesperado." -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2: o servidor remoto foi incapaz de manipular a requisição." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: não foi possível analisar a requisição JSON-RPC." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Sem resposta. O aria2 está desligado?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2: o gid foi removido." +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Falha ao obter o link da mídia." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "Nenhuma mídia correspondente." + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Gerenciador de downloads" @@ -300,249 +312,266 @@ msgid "uGet Project Manager: " msgstr "Gerente de Projeto do uGet:" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "tarefas" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Novo da área de transferência" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Novo download" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Área de transferência" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Linha de comando" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Ocorreu um erro" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Ocorreu um erro ao baixar." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Download começando" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Começando a fila de downloads." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Download concluído" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Todos os downloads da fila foram concluídos." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Status" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Categoria" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Cria novo download" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Novo _download..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Nova _categoria..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Novo _lote da área de transferência..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Novo lote de sequência de _URL..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Novo torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Novo metalink..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Salvar todas as configurações" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Define o download selecionado como continuável" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Define o download selecionado como pausado" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Define as propriedades do download selecionado" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Move o download selecionado para cima" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Move o download selecionado para baixo" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Move o download selecionado para o topo" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Move o download selecionado para canto inferior" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Nova categoria" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Cópia -" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Propriedades da categoria" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Propriedades de download" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Novo torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Novo metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Abrir arquivo torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Arquivo torrent (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Abrir arquivo metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "Falha ao salvar a categoria de arquivo." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "Falha ao carregar a categoria de arquivo." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Salvar categoria de arquivo" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Abrir categoria de arquivo" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "Arquivo JSON (*.json)" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Link " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Imagem " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Arquivo texto" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Importar URLs de arquivo HTML" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "Arquivo HTML (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Importar URLs de arquivo texto" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Arquivo de texto simples" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Exportar URLs para arquivo de texto" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Lote de sequência de URLs" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Nenhuma URL encontrada na área de transferência." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Todas as URLs existiram." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Lote da área de transferência" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Novo" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Erro" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Mensagem" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Selecionados %d itens" @@ -554,9 +583,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"nós estamos fazendo uma Arrecadação de Doações para o Desenvolvimento Futuro " -"do uGet, por favor clique" +msgstr "nós estamos fazendo uma Arrecadação de Doações para o Desenvolvimento Futuro do uGet, por favor clique" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -574,14 +601,17 @@ msgid "Category _name:" msgstr "_Nome da categoria:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "_Downloads ativos:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Capacidade de finalizados:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Capacidade de reciclados:" @@ -634,7 +664,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -645,12 +675,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Arquivo:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Selecione uma pasta" @@ -704,7 +734,7 @@ msgstr "Arquivo de cookie:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Selecione um arquivo de cookie" @@ -714,7 +744,7 @@ msgstr "Arquivo de post:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Selecione um arquivo de Post" @@ -751,10 +781,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KB/s" @@ -826,7 +856,8 @@ msgid "_Edit" msgstr "_Editar" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -849,9 +880,9 @@ msgstr "Pular URI existente" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Aplica configurações de download recentes" #. --- Completion Auto-Actions --- start --- @@ -955,7 +986,7 @@ msgid "Download _Columns" msgstr "_Colunas de download" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Concluído" @@ -982,25 +1013,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Velocidade" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Veloc. Upload" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Enviado" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Proporção" @@ -1011,13 +1042,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Adicionado em" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Concluído em" @@ -1039,7 +1070,8 @@ msgid "_Download" msgstr "_Baixar" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "_Deletar entrada" @@ -1113,116 +1145,116 @@ msgid "Check for Updates" msgstr "Verificar por atualizações" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Configurações" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Não foi possível iniciar o aplicativo padrão para o arquivo \"%s\"." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "\"%s\" - Esta pasta não existe." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "A URI existe" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "Essa URI já existe, tem certeza que quer continuar?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Geral" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Avançado" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Configurações da categoria" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Padrão para novos downloads 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Padrão 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "sem nome" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Pausado" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Enviando" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Concluído" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Reciclado" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Enfileramento" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Ativo" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Todos os estados" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Nome" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Concluído" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Tamanho" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Transcorrido" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Restante" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Qualidade" @@ -1249,67 +1281,67 @@ msgid "Port:" msgstr "Porta:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Args. de socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Elemento:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Seg" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Ter" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Qua" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Qui" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Sex" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Sáb" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Dom" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Habilitar agendador" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Desligar" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- para todas as tarefas" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normal" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- executa a tarefa normalmente" @@ -1368,271 +1400,306 @@ msgstr "_Marcar por filtro..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "ex.:" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_De:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "Para:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "dígitos:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "_De:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "diferenciar maiúsculo/minúsculo" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Nenhum caractere coringa (*) na entrada de URL." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL não válida." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Nenhum caractere nas entradas \"De\" ou \"Para\"." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Visualizar" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Interface de usuário" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Largura de banda" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Agendador" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Plug-in" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "Site de mídias" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Outros" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Habilitar monitor da área de transferência" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "Modo _silencioso" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Índice de categoria padrão" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "Adicionar à N categoria se não houver categoria correspondente." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "_Monitorar URL do site de mídias" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "Monitorar a área de transferência para os seguintes tipos de arquivo:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Separe os tipos com o caractere \"|\"." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Você pode usar expressões regulares aqui." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Confirmação" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Exibir diálogo de confirmação ao sair" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Confirma ao excluir arquivos" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Barra do sistema" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Sempre mostra o ícone na área de notificação" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Minimiza para a área de notificação ao inicializar" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Ir para a barra ao fechar a janela" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Usar " -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Habilita modo offline ao inicializar" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" -msgstr "Baixa notificação de início" +msgstr "Notificação de início de download" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Produz som quando o download tiver finalizado" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Exibir ícones grandes" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "Isso afetará todos os plugins." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Limite de velocidade global" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Velocidade máxima de upload" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Velocidade máxima de download" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Ações automáticas de acabamento" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Comando personalizado:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Comando personalizado caso ocorra um erro:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "_Autosalvar" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "minutos" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Intervalo:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "minutos" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Configurações de linha de comando" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Usa \"--quiet\" por padrão" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "Ordem de correspondência de plugin:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Opções de plugins do Aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "Token secreto de autorização RPC" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Limite de velocidade global apenas para o aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Executar aria2 ao inicializar" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Desligar aria2 ao sair" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Executar o aria2 em dispositivo local" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Caminho" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Argumentos" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Você deve reiniciar o uGet após modificá-lo." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "Modo de correspondência de mídia:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Condições para correspondência:" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Qualidade:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Tipo:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Arquivo" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Pasta" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Item" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Valor" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Copiar _todos" diff -Nru uget-2.0.2/po/ro.po uget-2.2.2/po/ro.po --- uget-2.0.2/po/ro.po 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/po/ro.po 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,1714 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Nicolae Crefelean, 2017 +# Remus-Gabriel Chelu , 2016 +msgid "" +msgstr "" +"Project-Id-Version: uGet\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-09-23 22:34+0000\n" +"Last-Translator: Nicolae Crefelean\n" +"Language-Team: Romanian (http://www.transifex.com/uget/uget/language/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +#: ../../po/../uget/pwmd.c:32 +#, c-format +msgid "" +"Password Manager Daemon: uget\n" +"\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" +"\n" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "Serviciu de gestiune a parolelor: uget\n\nLa încercarea de conectare prin SSH la %s a apărut o problemă la verificarea cheii gazdei cu cea din fișierul local cu gazde cunoscute și de încredere, pentru că această cheie nu a fost găsită.\n\nDoriți să tratați ca sigură conexiunea curentă și cele viitoare, adăugând cheia gazdei %s în fișierul gazdelor cunoscute?" + +#: ../../po/../uget/UgetApp.c:103 +msgid "All Category" +msgstr "Toate categoriile" + +#. UGET_EVENT_NORMAL_CUSTOM +#: ../../po/../uget/UgetEvent.c:58 +msgid "Connecting..." +msgstr "Conectare..." + +#. UGET_EVENT_NORMAL_CONNECT +#: ../../po/../uget/UgetEvent.c:59 +msgid "Transmitting..." +msgstr "Transmitere..." + +#. UGET_EVENT_NORMAL_TRANSMIT, +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 +msgid "Retry" +msgstr "Reîncearcă" + +#. UGET_EVENT_NORMAL_RETRY, +#: ../../po/../uget/UgetEvent.c:61 +msgid "Download completed" +msgstr "Descărcare completă" + +#. UGET_EVENT_NORMAL_COMPLETE, +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 +msgid "Finished" +msgstr "Terminat" + +#. UGET_EVENT_NORMAL_FINISH, +#. resumable +#: ../../po/../uget/UgetEvent.c:64 +msgid "Resumable" +msgstr "Se poate continua" + +#. UGET_EVENT_NORMAL_RESUMABLE, +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 +msgid "Not Resumable" +msgstr "Nu se poate continua" + +#. UGET_EVENT_WARNING_CUSTOM +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 +msgid "Output file can't be renamed." +msgstr "Fișierul de destinație nu poate fi redenumit." + +#. UGET_EVENT_ERROR_CUSTOM +#: ../../po/../uget/UgetEvent.c:81 +msgid "couldn't connect to host." +msgstr "conectarea la gazdă nu a reușit." + +#. UGET_EVENT_ERROR_CONNECT_FAILED +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 +msgid "Folder can't be created." +msgstr "Directorul nu a putut fi creat." + +#. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED +#: ../../po/../uget/UgetEvent.c:83 +msgid "File can't be created (bad filename or file exist)." +msgstr "Fișierul nu a putut fi creat (nume incorect sau fișierul există)." + +#. UGET_EVENT_ERROR_FILE_CREATE_FAILED +#: ../../po/../uget/UgetEvent.c:84 +msgid "File can't be opened." +msgstr "Fișierul nu poate fi deschis." + +#. UGET_EVENT_ERROR_FILE_OPEN_FAILED +#: ../../po/../uget/UgetEvent.c:85 +msgid "Unable to create thread." +msgstr "Nu se poate crea firul." + +#. UGET_EVENT_ERROR_THREAD_CREATE_FAILED, +#: ../../po/../uget/UgetEvent.c:86 +msgid "Incorrect source (different file size)." +msgstr "Sursă incorectă (dimensiunea fișierului diferă)." + +#. UGET_EVENT_ERROR_INCORRECT_SOURCE, +#: ../../po/../uget/UgetEvent.c:87 +msgid "Out of resource (disk full or run out of memory)." +msgstr "Resurse epuizate (disc plin sau memorie insuficientă)." + +#. UGET_EVENT_ERROR_OUT_OF_RESOURCE +#: ../../po/../uget/UgetEvent.c:88 +msgid "No output file." +msgstr "Nu există un fișier destinație." + +#. UGET_EVENT_ERROR_NO_OUTPUT_FILE +#: ../../po/../uget/UgetEvent.c:89 +msgid "No output setting." +msgstr "Nu există setări pentru destinație." + +#. UGET_EVENT_ERROR_NO_OUTPUT_SETTING +#: ../../po/../uget/UgetEvent.c:90 +msgid "Too many retries." +msgstr "Prea multe reîncercări." + +#. UGET_EVENT_ERROR_TOO_MANY_RETRIES +#: ../../po/../uget/UgetEvent.c:91 +msgid "Unsupported scheme (protocol)." +msgstr "" + +#. UGET_EVENT_ERROR_UNSUPPORTED_SCHEME +#: ../../po/../uget/UgetEvent.c:92 +msgid "Unsupported file." +msgstr "" + +#. UGET_EVENT_ERROR_UNSUPPORTED_FILE +#: ../../po/../uget/UgetEvent.c:93 +msgid "post file not found." +msgstr "" + +#. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND +#: ../../po/../uget/UgetEvent.c:94 +msgid "cookie file not found." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + +#. 1 - 10 +#: ../../po/../uget/UgetPluginAria2.c:280 +msgid "aria2: an unknown error occurred." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:281 +msgid "aria2: time out occurred." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:282 +msgid "aria2: resource was not found." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:283 +msgid "" +"aria2 saw the specfied number of 'resource not found' error. See --max-file-" +"not-found option" +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:284 +msgid "aria2: speed was too slow." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:285 +msgid "aria2: network problem occurred." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:286 +msgid "aria2: unfinished downloads." +msgstr "" + +#. _("Not Resumable"), +#: ../../po/../uget/UgetPluginAria2.c:288 +msgid "Out of resource" +msgstr "" + +#. _(), +#: ../../po/../uget/UgetPluginAria2.c:289 +msgid "aria2: piece length was different from one in .aria2 control file." +msgstr "" + +#. 11 - 20 +#: ../../po/../uget/UgetPluginAria2.c:291 +msgid "aria2 was downloading same file." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:292 +msgid "aria2 was downloading same info hash torrent." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:293 +msgid "aria2: file already existed. See --allow-overwrite option." +msgstr "" + +#. _("Output file can't be renamed."), +#: ../../po/../uget/UgetPluginAria2.c:295 +msgid "aria2: could not open existing file." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:296 +msgid "aria2: could not create new file or truncate existing file." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:297 +msgid "aria2: file I/O error occurred." +msgstr "" + +#. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED +#: ../../po/../uget/UgetPluginAria2.c:299 +msgid "aria2: name resolution failed." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:300 +msgid "aria2: could not parse Metalink document." +msgstr "" + +#. 21 - 30 +#: ../../po/../uget/UgetPluginAria2.c:302 +msgid "aria2: FTP command failed." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:303 +msgid "aria2: HTTP response header was bad or unexpected." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:304 +msgid "Too many redirections." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:305 +msgid "aria2: HTTP authorization failed." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:306 +msgid "aria2: could not parse bencoded file(usually .torrent file)." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:307 +msgid "aria2: torrent file was corrupted or missing information." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:308 +msgid "aria2: Magnet URI was bad." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:309 +msgid "" +"aria2: bad/unrecognized option was given or unexpected option argument was " +"given." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:310 +msgid "aria2: remote server was unable to handle the request." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:311 +msgid "aria2: could not parse JSON-RPC request." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:314 +msgid "No response. Is aria2 shutdown?" +msgstr "" + +#. debug +#: ../../po/../uget/UgetPluginAria2.c:641 +msgid "aria2: gid was removed." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:46 +msgid "Download Manager" +msgstr "" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:48 +msgid "translator-credits" +msgstr "" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:80 +msgid "uGet Founder: " +msgstr "" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:81 +msgid "uGet Project Manager: " +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:239 +msgid "tasks" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 +msgid "New from Clipboard" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 +msgid "New Download" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 +msgid "Clipboard" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 +msgid "Command line" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 +msgid "Error Occurred" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 +msgid "Download Starting" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 +msgid "Starting download queue." +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 +msgid "Download Completed" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 +msgid "All queuing downloads have been completed." +msgstr "" + +#. ---------------------------------------------------- +#. frame for Status (start mode) +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:224 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 +msgid "Status" +msgstr "" + +#. Summary Items - Category +#. Download Columns - Category +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 +msgid "Category" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 +msgid "Create new download" +msgstr "" + +#. New Download (accelerators) +#. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. New Download +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:59 +msgid "New _Download..." +msgstr "" + +#. New Category +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +msgid "New _Category..." +msgstr "" + +#. New Clipboard batch +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +msgid "New Clipboard _batch..." +msgstr "" + +#. New URL Sequence batch +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 +msgid "New _URL Sequence batch..." +msgstr "" + +#. New Torrent +#. separator +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); +#. New Torrent +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:83 +msgid "New Torrent..." +msgstr "" + +#. New Metalink +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:90 +msgid "New Metalink..." +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 +msgid "Save all settings" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 +msgid "Set selected download runnable" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 +msgid "Set selected download to pause" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 +msgid "Set selected download properties" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 +msgid "Move selected download up" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 +msgid "Move selected download down" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 +msgid "Move selected download to top" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 +msgid "Move selected download to bottom" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:883 +msgid "New Category" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:894 +msgid "Copy - " +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1049 +msgid "Category Properties" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1063 +msgid "Download Properties" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1296 +msgid "New Torrent" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1312 +msgid "New Metalink" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1321 +msgid "Open Torrent file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 +msgid "Open Metalink file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1377 +msgid "Failed to save category file." +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1397 +msgid "Failed to load category file." +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1408 +msgid "Save Category file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1426 +msgid "Open Category file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + +#. add link +#: ../../po/../ui-gtk/UgtkApp.c:1485 +msgid "Link " +msgstr "" + +#. add image +#: ../../po/../ui-gtk/UgtkApp.c:1490 +msgid "Image " +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1535 +msgid "Text File" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1582 +msgid "Import URLs from HTML file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 +msgid "Import URLs from text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 +msgid "Export URLs to text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1631 +msgid "URL Sequence batch" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1658 +msgid "No URLs found in clipboard." +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1667 +msgid "All URLs had existed." +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1672 +msgid "Clipboard batch" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1762 +msgid "New" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 +msgid "Error" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 +msgid "Message" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1927 +#, c-format +msgid "Selected %d items" +msgstr "" + +#: ../../po/../ui-gtk/UgtkBanner.c:145 ../../po/../ui-gtk/UgtkBanner.c:165 +msgid "Attention uGetters:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkBanner.c:148 +msgid "" +"we are running a Donation Drive for uGet's Future Development, please click " +msgstr "" + +#: ../../po/../ui-gtk/UgtkBanner.c:151 +msgid "HERE" +msgstr "" + +#: ../../po/../ui-gtk/UgtkBanner.c:168 +msgid "please fill out this quick User Survey for uGet." +msgstr "" + +#: ../../po/../ui-gtk/UgtkBanner.c:171 +msgid "click here to take survey" +msgstr "" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:62 +msgid "Category _name:" +msgstr "" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:82 +msgid "Active _downloads:" +msgstr "" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:92 +msgid "Capacity of Finished:" +msgstr "" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:102 +msgid "Capacity of Recycled:" +msgstr "" + +#. ------------------------------------------------------------------------ +#. URI Matching conditions +#: ../../po/../ui-gtk/UgtkCategoryForm.c:111 +msgid "URI Matching conditions" +msgstr "" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:118 +msgid "Matched _Hosts:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:129 +msgid "Matched _Schemes:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:140 +msgid "Matched _Types:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 +msgid "Really Quit?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:65 +msgid "Are you sure you want to quit?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:69 +msgid "Really delete files?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:70 +msgid "Are you sure you want to delete files?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:74 +msgid "Really delete category?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:75 +msgid "Are you sure you want to delete category?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:109 +msgid "Don't ask me again" +msgstr "" + +#. URL - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:111 +#: ../../po/../ui-gtk/UgtkSequence.c:63 +msgid "_URI:" +msgstr "" + +#. Mirrors - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:130 +msgid "Mirrors:" +msgstr "" + +#. File - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:146 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 +msgid "File:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:166 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 +msgid "Select Folder" +msgstr "" + +#. Folder - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:174 +msgid "_Folder:" +msgstr "" + +#. Referrer - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:189 +msgid "Referrer:" +msgstr "" + +#. "Max Connections:" - title label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:212 +msgid "_Max Connections:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:230 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 +msgid "_Runnable" +msgstr "" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:232 +msgid "P_ause" +msgstr "" + +#. ---------------------------------------------------- +#. frame for login +#: ../../po/../ui-gtk/UgtkDownloadForm.c:238 +msgid "Login" +msgstr "" + +#. User - label +#. user label & entry +#: ../../po/../ui-gtk/UgtkDownloadForm.c:252 +#: ../../po/../ui-gtk/UgtkProxyForm.c:149 +msgid "User:" +msgstr "" + +#. Password - label +#. password label & entry +#: ../../po/../ui-gtk/UgtkDownloadForm.c:268 +#: ../../po/../ui-gtk/UgtkProxyForm.c:160 +msgid "Password:" +msgstr "" + +#. label - cookie file +#: ../../po/../ui-gtk/UgtkDownloadForm.c:293 +msgid "Cookie file:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:310 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 +msgid "Select Cookie File" +msgstr "" + +#. label - post file +#: ../../po/../ui-gtk/UgtkDownloadForm.c:319 +msgid "Post file:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:336 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 +msgid "Select Post File" +msgstr "" + +#. label - user agent +#: ../../po/../ui-gtk/UgtkDownloadForm.c:346 +msgid "User Agent:" +msgstr "" + +#. Retry limit - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:362 +msgid "Retry _limit:" +msgstr "" + +#. counts - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:377 +msgid "counts" +msgstr "" + +#. Retry delay - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:384 +msgid "Retry _delay:" +msgstr "" + +#. seconds - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:399 +msgid "seconds" +msgstr "" + +#. label - Max upload speed +#: ../../po/../ui-gtk/UgtkDownloadForm.c:406 +msgid "Max upload speed:" +msgstr "" + +#. label - "KiB/s" +#: ../../po/../ui-gtk/UgtkDownloadForm.c:418 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:436 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 +msgid "KiB/s" +msgstr "" + +#. label - Max download speed +#: ../../po/../ui-gtk/UgtkDownloadForm.c:424 +msgid "Max download speed:" +msgstr "" + +#. Retrieve timestamp +#: ../../po/../ui-gtk/UgtkDownloadForm.c:442 +msgid "Retrieve timestamp" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:51 +msgid "_File" +msgstr "" + +#. Batch Downloads --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:94 +msgid "_Batch Downloads" +msgstr "" + +#. Batch downloads - Clipboard batch +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:100 +msgid "_Clipboard batch..." +msgstr "" + +#. Batch downloads - URL Sequence batch +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:110 +msgid "_URL Sequence batch..." +msgstr "" + +#. Batch downloads - Text file import (.txt) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:120 +msgid "_Text file import (.txt)..." +msgstr "" + +#. Batch downloads - HTML file import (.html) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:130 +msgid "_HTML file import (.html)..." +msgstr "" + +#. Batch downloads - Export to Text file (.txt) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:142 +msgid "_Export to Text file (.txt)..." +msgstr "" + +#. Open Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 +msgid "_Open category..." +msgstr "" + +#. Save Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 +msgid "_Save category as..." +msgstr "" + +#. Save All +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 +msgid "Save _all settings" +msgstr "" + +#. Offline mode +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 +msgid "Offline Mode" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 +msgid "_Edit" +msgstr "" + +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); +#. Settings shortcut +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:99 +msgid "Clipboard _Monitor" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:103 +msgid "Clipboard works quietly" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:107 +msgid "Command-line works quietly" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:111 +msgid "Skip existing URI" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:115 +msgid "Apply recent download settings" +msgstr "" + +#. --- Completion Auto-Actions --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 +msgid "Completion _Auto-Actions" +msgstr "" + +#. Completion Auto-Actions - Disable +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 +msgid "_Disable" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 +msgid "Hibernate" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 +msgid "Suspend" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 +msgid "Shutdown" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 +msgid "Reboot" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 +msgid "Custom" +msgstr "" + +#. Completion Auto-Actions - Remember +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 +msgid "Remember setting" +msgstr "" + +#. Completion Auto-Actions - Help +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:279 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:682 +msgid "_Help" +msgstr "" + +#. --- Completion Auto-Actions --- end --- +#. menu_item = gtk_menu_item_new_with_mnemonic (_("_Settings...")); +#. Settings +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:285 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:122 +msgid "_Settings..." +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:304 +msgid "_View" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:308 +msgid "_Toolbar" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:313 +msgid "Statusbar" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:323 +msgid "_Summary" +msgstr "" + +#. Summary Items --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:331 +msgid "Summary _Items" +msgstr "" + +#. Summary Items - Name +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:336 +msgid "_Name" +msgstr "" + +#. Summary Items - Folder +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:341 +msgid "_Folder" +msgstr "" + +#. Summary Items - Elapsed +#. menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Elapsed")); +#. gtk_check_menu_item_set_active ((GtkCheckMenuItem*) menu_item, TRUE); +#. gtk_menu_shell_append ((GtkMenuShell*) submenu, menu_item); +#. menubar->view.summary_items.elapsed = menu_item; +#. Summary Items - URL +#. Download Columns - URL +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:356 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:436 +msgid "_URL" +msgstr "" + +#. Summary Items - Message +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:361 +msgid "_Message" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:376 +msgid "Download _Columns" +msgstr "" + +#. Download Columns - Complete +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 +msgid "_Complete" +msgstr "" + +#. Download Columns - Total +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:386 +msgid "_Size" +msgstr "" + +#. Download Columns - Percent (%) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:391 +msgid "_Percent '%'" +msgstr "" + +#. Download Columns - Elapsed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:396 +msgid "_Elapsed" +msgstr "" + +#. Download Columns - Left +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:401 +msgid "_Left" +msgstr "" + +#. Download Columns - Speed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 +msgid "Speed" +msgstr "" + +#. Download Columns - Up Speed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 +msgid "Up Speed" +msgstr "" + +#. Download Columns - Uploaded +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 +msgid "Uploaded" +msgstr "" + +#. Download Columns - Ratio +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 +msgid "Ratio" +msgstr "" + +#. Download Columns - Retry +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:426 +msgid "_Retry" +msgstr "" + +#. Download Columns - Added On +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 +msgid "Added On" +msgstr "" + +#. Download Columns - Completed On +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 +msgid "Completed On" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:461 +msgid "_Category" +msgstr "" + +#. New Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:466 +msgid "_New Category..." +msgstr "" + +#. Delete Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:476 +msgid "_Delete Category" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:517 +msgid "_Download" +msgstr "" + +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 +msgid "_Delete Entry" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 +msgid "Delete Entry and _File" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 +msgid "Open _Containing folder" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 +msgid "Force Start" +msgstr "" + +#. Move to --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:596 +msgid "_Move To" +msgstr "" + +#. Priority --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:645 +msgid "Priority" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:654 +msgid "_High" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:659 +msgid "_Normal" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:664 +msgid "_Low" +msgstr "" + +#. Get Help Online +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:687 +msgid "Get Help Online" +msgstr "" + +#. Documentation +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:698 +msgid "Documentation" +msgstr "" + +#. Support Forum +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:709 +msgid "Support Forum" +msgstr "" + +#. Submit Feedback +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:720 +msgid "Submit Feedback" +msgstr "" + +#. Report a Bug +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:731 +msgid "Report a Bug" +msgstr "" + +#. Keyboard Shortcuts +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:742 +msgid "Keyboard Shortcuts" +msgstr "" + +#. Check for Updates +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:749 +msgid "Check for Updates" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar.c:187 +msgid "Settings" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar.c:454 +#, c-format +msgid "Can't launch default application for file '%s'." +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar.c:486 +#, c-format +msgid "'%s' - This folder does not exist." +msgstr "" + +#. title +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 +msgid "URI had existed" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 +msgid "This URI had existed, are you sure to continue?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +msgid "General" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +msgid "Advanced" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 +msgid "Category settings" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 +msgid "Default for new download 1" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 +msgid "Default 2" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 +msgid "unnamed" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:641 +msgid "Paused" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:642 +msgid "Uploading" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:643 +msgid "Completed" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:645 +msgid "Recycled" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:646 +msgid "Queuing" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:647 +msgid "Active" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:668 +msgid "All Status" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 +msgid "Name" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:790 +msgid "Complete" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:804 +msgid "Size" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:819 +msgid "%" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:833 +msgid "Elapsed" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:847 +msgid "Left" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 +msgid "URI" +msgstr "" + +#: ../../po/../ui-gtk/UgtkNodeView.c:997 +msgid "Quantity" +msgstr "" + +#. proxy type label & combo box +#: ../../po/../ui-gtk/UgtkProxyForm.c:64 +msgid "Proxy:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:67 +msgid "Don't use" +msgstr "" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:69 +msgid "Default" +msgstr "" + +#. host label & entry +#: ../../po/../ui-gtk/UgtkProxyForm.c:121 +msgid "Host:" +msgstr "" + +#. port label & entry +#: ../../po/../ui-gtk/UgtkProxyForm.c:132 +msgid "Port:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 +msgid "Socket:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 +msgid "Socket args:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 +msgid "Element:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 +msgid "Mon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 +msgid "Tue" +msgstr "" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 +msgid "Wed" +msgstr "" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 +msgid "Thu" +msgstr "" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 +msgid "Fri" +msgstr "" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 +msgid "Sat" +msgstr "" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 +msgid "Sun" +msgstr "" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 +msgid "_Enable Scheduler" +msgstr "" + +#. Turn off - label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 +msgid "Turn off" +msgstr "" + +#. Turn off - help label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 +msgid "- stop all task" +msgstr "" + +#. Normal - label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 +msgid "Normal" +msgstr "" + +#. Normal - help label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 +msgid "- run task normally" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSelector.c:254 +msgid "All" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSelector.c:259 +msgid "None" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSelector.c:276 +msgid "Mark by filter" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSelector.c:294 +msgid "Mark URLs by host AND filename extension." +msgstr "" + +#: ../../po/../ui-gtk/UgtkSelector.c:297 +msgid "This will reset all marks of URLs." +msgstr "" + +#. filter view ----------------------- +#. left side +#: ../../po/../ui-gtk/UgtkSelector.c:305 +msgid "Host" +msgstr "" + +#. right side (filename extension) +#: ../../po/../ui-gtk/UgtkSelector.c:309 +msgid "File Ext." +msgstr "" + +#: ../../po/../ui-gtk/UgtkSelector.c:449 +msgid "URL" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSelector.c:781 +msgid "Base hypertext reference" +msgstr "" + +#. select all +#: ../../po/../ui-gtk/UgtkSelector.c:797 +msgid "Mark _All" +msgstr "" + +#. select none +#: ../../po/../ui-gtk/UgtkSelector.c:801 +msgid "Mark _None" +msgstr "" + +#. select by filter +#: ../../po/../ui-gtk/UgtkSelector.c:805 +msgid "_Mark by filter..." +msgstr "" + +#. e.g. +#: ../../po/../ui-gtk/UgtkSequence.c:74 +msgid "e.g." +msgstr "" + +#. ------------------------------------------------------- +#. radio "From" +#: ../../po/../ui-gtk/UgtkSequence.c:85 +msgid "_From:" +msgstr "" + +#. label "To" +#: ../../po/../ui-gtk/UgtkSequence.c:108 +msgid "To:" +msgstr "" + +#. label "digits" +#: ../../po/../ui-gtk/UgtkSequence.c:123 +msgid "digits:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSequence.c:132 +msgid "F_rom:" +msgstr "" + +#. label case-sensitive +#: ../../po/../ui-gtk/UgtkSequence.c:162 +msgid "case-sensitive" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSequence.c:188 +msgid "No wildcard(*) character in URL entry." +msgstr "" + +#: ../../po/../ui-gtk/UgtkSequence.c:192 +msgid "URL is not valid." +msgstr "" + +#: ../../po/../ui-gtk/UgtkSequence.c:196 +msgid "No character in 'From' or 'To' entry." +msgstr "" + +#: ../../po/../ui-gtk/UgtkSequence.c:311 +msgid "Preview" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 +msgid "User Interface" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 +msgid "Bandwidth" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 +msgid "Scheduler" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 +msgid "Plug-in" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 +msgid "Others" +msgstr "" + +#. Monitor button +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 +msgid "_Enable clipboard monitor" +msgstr "" + +#. quiet mode +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 +msgid "_Quiet mode" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 +msgid "Default category index" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 +msgid "Adding to Nth category if no matched category." +msgstr "" + +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 +msgid "Monitor clipboard for specified file types:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 +msgid "Separate the types with character '|'." +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 +msgid "You can use regular expressions here." +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 +msgid "Confirmation" +msgstr "" + +#. Confirmation check buttons +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 +msgid "Show confirmation dialog on exit" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 +msgid "Confirm when deleting files" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 +msgid "System Tray" +msgstr "" + +#. System Tray check buttons +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 +msgid "Always show tray icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 +msgid "Minimize to tray on startup" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 +msgid "Close to tray on window close" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 +msgid "Use Ubuntu's App Indicator" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 +msgid "Enable offline mode on startup" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 +msgid "Download starting notification" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 +msgid "Sound when download is finished" +msgstr "" + +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 +msgid "These will affect all plug-ins." +msgstr "" + +#. Global speed limit +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 +msgid "Global speed limit" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 +msgid "Max upload speed" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +msgid "Max download speed" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 +msgid "Completion Auto-Actions" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 +msgid "Custom command:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 +msgid "Custom command if error occured:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 +msgid "_Autosave" +msgstr "" + +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 +msgid "_Interval:" +msgstr "" + +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "" + +#. Commandline Settings +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 +msgid "Commandline Settings" +msgstr "" + +#. --quiet +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 +msgid "Use '--quiet' by default" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 +msgid "Plug-in matching order:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 +msgid "Aria2 plug-in options" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 +msgid "RPC authorization secret token" +msgstr "" + +#. ------------------------------------------------------------------------ +#. Speed Limits +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 +msgid "Global speed limit for aria2 only" +msgstr "" + +#. ------------------------------------------------------------------------ +#. aria2 works on local device +#. launch +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 +msgid "_Launch aria2 on startup" +msgstr "" + +#. shutdown +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 +msgid "_Shutdown aria2 on exit" +msgstr "" + +#. ------------------------------------------------------------------------ +#. Local options +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 +msgid "Launch aria2 on local device" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 +msgid "Path" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 +msgid "Arguments" +msgstr "" + +#. Arguments - hint +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 +msgid "You must restart uGet after modifying it." +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 +msgid "File" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:119 +msgid "Folder" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:262 +msgid "Item" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:267 +msgid "Value" +msgstr "" + +#. Copy All +#: ../../po/../ui-gtk/UgtkSummary.c:299 +msgid "Copy _All" +msgstr "" + +#. Show window +#: ../../po/../ui-gtk/UgtkTrayIcon.c:141 +msgid "Show window" +msgstr "" + +#. Offline mode +#: ../../po/../ui-gtk/UgtkTrayIcon.c:147 +msgid "_Offline Mode" +msgstr "" diff -Nru uget-2.0.2/po/ru.po uget-2.2.2/po/ru.po --- uget-2.0.2/po/ru.po 2015-09-11 12:14:42.000000000 +0000 +++ uget-2.2.2/po/ru.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,40 +3,36 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Anton Shcherbina , 2016 # Paul Zercy , 2013 # Pavlo Bohmat , 2010 +# Vasya Durkin , 2017 # Дмитрий Серов , 2014 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-12-01 19:25+0000\n" -"Last-Translator: Дмитрий Серов \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/uget/language/" -"ru/)\n" -"Language: ru\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-07-13 14:16+0000\n" +"Last-Translator: Vasya Durkin \n" +"Language-Team: Russian (http://www.transifex.com/uget/uget/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" -"%100>=11 && n%100<=14)? 2 : 3);\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" #: ../../po/../uget/pwmd.c:32 #, c-format msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Все категории" @@ -51,7 +47,7 @@ msgstr "Передача..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Повторить" @@ -61,7 +57,7 @@ msgstr "Закачка завершена" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Завершено" @@ -72,12 +68,12 @@ msgstr "Возобновляемо" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Не возобновляемо" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Исходящий файл невозможно переименовать." @@ -87,7 +83,7 @@ msgstr "не удается подключиться к узлу." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Невозможно создать каталог." @@ -149,151 +145,167 @@ #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." +msgstr "cookie файл не найден" + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Это видео удалено." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "Не найден video_id в ссылке YouTube." + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: произошла неизвестная ошибка." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: время истекло." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: ресурс не найден." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 получила определенное число ошибок \"ресурс не найден\". Смотрите " -"параметр --max-file-not-found" +msgstr "aria2 получила определенное число ошибок \"ресурс не найден\". Смотрите параметр --max-file-not-found" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: скорость была слишком медленной." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: возникла проблема с сетью." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: незавершенные загрузки." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Нет ресурсов" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." -msgstr "" -"aria2: размер блока был отличным от указанного в контрольном .aria2-файле" +msgstr "aria2: размер блока был отличным от указанного в контрольном .aria2-файле" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 был загружен один и тот же файл." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 был загружен один и тот же хеш торрента." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: файл уже существует. Смотрите параметр --allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: не удалось открыть существующий файл." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "aria2: не удалось создать новый файл или обнулить существующий файл." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: произошла ошибка чтения/записи файла." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: разрешение имен не удалось." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: не удалось проанализировать Metalink-документ." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: FTP команда не удалась." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: HTTP-заголовок ответа был испорченным или неожиданным." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Слишком много перенаправлений." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: HTTP-авторизация не удалась." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." -msgstr "" -"aria2: не удалось проанализировать закодированный файл (обычно файл \"." -"torrent\")." +msgstr "aria2: не удалось проанализировать закодированный файл (обычно файл \".torrent\")." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: торрент-файл поврежден или недостаточно информации." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: плохой Magnet URI." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" -"aria2: задан плохой/неопознанный параметр или неожиданный аргумент к нему." +msgstr "aria2: задан плохой/неопознанный параметр или неожиданный аргумент к нему." -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2: удаленный сервер не смог обработать запрос." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: не удалось проанализировать JSON-RPC запрос." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Нет ответа. Может быть aria2 отключена?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2: gid был удален." +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Невозможно получить media ссылку" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Менеджер закачек" #: ../../po/../ui-gtk/UgtkAboutDialog.c:48 msgid "translator-credits" -msgstr "" -"Павел Богмат \n" -"Михаил Воронцов " +msgstr "Павел Богмат \nМихаил Воронцов " #: ../../po/../ui-gtk/UgtkAboutDialog.c:80 msgid "uGet Founder: " @@ -303,249 +315,266 @@ msgid "uGet Project Manager: " msgstr "Менеджер проекта uGet: " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "задачи" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Новая из буфера обмена" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Новая закачка" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Буфер обмена" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Командная строка" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Произошла ошибка" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Произошла ошибка при загрузке." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Закачка запущена" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Запущена очередь закачки" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Закачка завершена" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Все очереди загрузки были завершены." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Состояние" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Категории" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Создать новую закачку" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Новая _закачка..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Новая _категория" #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Новая _из буфера обмена" #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Новая пакетная закачка..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Новый торрент..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Новая мета-ссылка" -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Сохранить все настройки" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Установить выбранные закачки на исполнение" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Установить выбранные закачки на паузу" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Настройки выбранных закачек" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Поднять выбранное" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Опустить выбранное" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Переместить выбранное вверх" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Переместить выбранное вниз" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Новая категория" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Копировать - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Свойства категории" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Свойства закачки" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Новый торрент" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Новая мета-ссылка" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Открыть торрент-файл" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Torrent файл (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Открыть файл мета-ссылки" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "Не удалось сохранить файл категории." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "Не удалось загрузить файл категории." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Сохранить файл категории" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Открыть файл категории" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "Файл JSON (*.json)" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Ссылка " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Изображение " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Текстовый файл" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Импорт URL-адресов из HTML файла" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "Файл HTML (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Импорт URL-адресов из текстового файла" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Простой текстовый файл" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Экспорт URL-адресов в текстовый файл" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Последовательность ссылок" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "В буфере обмена не найдено URL-адресов." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Все URL-адреса уже существуют." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Из буфера обмена" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Новая" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Ошибка" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Сообщение" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Выбран(о) %d пункт(а,ов)" @@ -557,9 +586,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"мы запустили Donation Drive для дальнейшей разработки uGet, пожалуйста, " -"щелкните" +msgstr "мы запустили Donation Drive для дальнейшей разработки uGet, пожалуйста, щелкните" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -577,14 +604,17 @@ msgid "Category _name:" msgstr "_Имя категории:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Активные _закачки:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Завершенных загрузок:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Количество удаленных:" @@ -637,7 +667,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -648,12 +678,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Файл:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Выбрать каталог" @@ -707,7 +737,7 @@ msgstr "Файл куки:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Выбрать куки-файл" @@ -717,7 +747,7 @@ msgstr "Post файл:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Выберать отправляемый файл" @@ -754,10 +784,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "кб/с" @@ -829,7 +859,8 @@ msgid "_Edit" msgstr "_Правка" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -852,9 +883,9 @@ msgstr "Пропускать существующие URI" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Принять настройки последней закачки" #. --- Completion Auto-Actions --- start --- @@ -958,7 +989,7 @@ msgid "Download _Columns" msgstr "Колонки списка _закачек" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Скачано" @@ -985,25 +1016,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Скорость" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Скорость отдачи" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Отправлено" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Рейтинг" @@ -1014,13 +1045,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Добавлено" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Завершено" @@ -1042,7 +1073,8 @@ msgid "_Download" msgstr "_Закачка" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "_Удалить запись" @@ -1116,116 +1148,116 @@ msgid "Check for Updates" msgstr "Проверить наличие обновлений" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Настройки" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Не удается запустить приложение по умолчанию для файла '%s'" -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - каталог не существует." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "URI уже существует" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "Этот URI уже существует, вы уверены, что хотите продолжить?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Главные" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Дополнительные" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Настройки категории" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Умолчания для новой закачки 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Умолчания 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "безымянный" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Приостановлено" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Отправка" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Завершено" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Удалено" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Очередь" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Активно" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Все состояния" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Имя" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Скачано" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Размер" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Прошло" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Осталось" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Количество" @@ -1252,67 +1284,67 @@ msgid "Port:" msgstr "Порт:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Сокет:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Параметры сокета:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Элемент:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Пнд" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Втр" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Срд" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Чтв" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Птн" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Суб" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Вск" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "Включить планировщик" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Выключить" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- остановить всё" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Нормально" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- запустить задачу нормально" @@ -1371,273 +1403,306 @@ msgstr "_Отметить по фильтру..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "Например:" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_С:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "По:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "цифр:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "_с:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "с учётом регистра" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Нет символа шаблона(*) в URL." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "Недопустимый URL-адрес." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "В полях 'С' или 'По' ничего нет." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Предпросмотр" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Интерфейс" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Пропускная способность" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Планировщик" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Плагины" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Другое" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Включить мониторинг буфера обмена" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" -msgstr "" -"_В автоматическом\n" -" режиме" +msgstr "_В автоматическом\n режиме" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Индекс категории по умолчанию" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "Добавление к N-ой категории, если категория не распознана." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "Следить за этими типами файлов в буфере обмена:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Типы отделяются символом '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Можно использовать регулярные выражения." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Подтверждение" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Показывать окно подтверждения при выходе" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Подтверждение при удалении файлов" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Область уведомлений" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Всегда показывать иконку в трее" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Минимизировать в трей при запуске" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Скрывать в трей при закрытии окна" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Использовать индикатор приложений Ubuntu" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Включить автономный режим при запуске" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Уведомление при запуске загрузки" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Звуковое уведомление по окончании" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Показать увеличенные иконки" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "Они воздействуют на все плагины." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Глобальные ограничения скорости" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Максимальная скорость отправки" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Максимальная скорость закачки" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Действия после завершения" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Пользовательская команда:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Пользовательская команда при возникновении ошибки:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "_Автосохранение" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "минут" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Интервал:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "минут" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Настройки параметров командной строки" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Использовать '--quiet' по умолчанию" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "Порядок распознавания плагинов:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Опции плагина aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "Секретный токен RPC-авторизации" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Глобальные ограничения скорости только для aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Запускать aria2 при старте" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Выключать aria2 при выходе" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Запускать aria2 на локальном устройстве" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Путь" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Параметры" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Вы должны перезагрузить uGet после внесения изменений." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Соответствует условиям" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Качество:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Тип:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Файл" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Каталог" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Пункт" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Значение" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Копировать _всё" diff -Nru uget-2.0.2/po/sk_SK.po uget-2.2.2/po/sk_SK.po --- uget-2.0.2/po/sk_SK.po 2015-09-11 12:14:42.000000000 +0000 +++ uget-2.2.2/po/sk_SK.po 2019-05-19 16:49:06.000000000 +0000 @@ -8,15 +8,14 @@ msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-29 16:32+0000\n" -"Last-Translator: pyler \n" -"Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/uget/" -"language/sk_SK/)\n" -"Language: sk_SK\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: Michael Tunnell \n" +"Language-Team: Slovak (Slovakia) (http://www.transifex.com/uget/uget/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: ../../po/../uget/pwmd.c:32 @@ -24,15 +23,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Všetky kategórie" @@ -47,7 +43,7 @@ msgstr "Prenášanie..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Skúsiť znovu" @@ -57,7 +53,7 @@ msgstr "Sťahovanie dokončené" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Dokončené" @@ -68,12 +64,12 @@ msgstr "Obnoviteľné" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Neobnoviteľné" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Výstupný súbor nemôže byť premenovaný." @@ -83,7 +79,7 @@ msgstr "Nemožno sa pripojiť k hostiteľovi." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Priečinok nemôže byť vytvorený." @@ -147,139 +143,158 @@ msgid "cookie file not found." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: Vyskytla sa neznáma chyba." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: Časový limit vypršal." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: Zdroj nebol nájdený." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 má špecifický počet chýb 'zdroj nebol nájdený'. Pozrite možnosť --max-" -"file-not-found" +msgstr "aria2 má špecifický počet chýb 'zdroj nebol nájdený'. Pozrite možnosť --max-file-not-found" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: Rýchlosť bola príliš pomalá." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: Vyskytol sa problém so sieťou." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: Nedokončené sťahovania." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Nedostatok zdrojov" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." -msgstr "" -"aria2: Dĺžka časti bola odlišná od uvedenej v kontrolnom súbore .aria2." +msgstr "aria2: Dĺžka časti bola odlišná od uvedenej v kontrolnom súbore .aria2." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 sťahoval rovnaký súbor." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 stiahol rovnaký info hash torrent." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: Súbor už existuje. Pozrite možnosť --allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: Nemožno otvoriť existujúci súbor." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "aria2: Nemožno vytvoriť nový súbor alebo skrátiť existujúci súbor." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: Vyskytla sa vstupno-výstupná chyba súboru." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: Rozlíšenie názvu zlyhalo." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: Nemožno parsovať Metalink dokument." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: FTP príkaz zlyhal." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: Hlavička HTTP odozvy bola zlá alebo neočakávaná." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Príliš veľa presmerovaní." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: HTTP overenie zlyhalo." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "aria2: Nemožno parsovať benkódovaný súbor (zvyčajne súbor .torrent)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." -msgstr "" -"aria2: Súbor torrentu je poškodený alebo neobsahuje niektoré informácie." +msgstr "aria2: Súbor torrentu je poškodený alebo neobsahuje niektoré informácie." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: Magnet URI je zlá." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" -"aria2: Bola zadaná zlá alebo nerozpoznaná možnosť alebo zlý argument možnosti" +msgstr "aria2: Bola zadaná zlá alebo nerozpoznaná možnosť alebo zlý argument možnosti" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2: Vzdialený server nemohol spracovať požiadavku." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: Nemožno parsovať JSON-RPC požiadavka." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Žiadna odozva. Je plugin aria2 vypnutý?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2: Gid bol odstránený." +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Správca sťahovaní" @@ -296,249 +311,266 @@ msgid "uGet Project Manager: " msgstr "Správca projektu uGet:" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "úlohy" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Nové zo schránky" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Nové sťahovanie" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Schránka" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Príkazový riadok" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Vyskytla sa chyba" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Vyskytla sa chyba pri sťahovaní." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Sťahovanie začalo" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Sťahovanie fronty začalo." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Sťahovanie dokončené" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Všetky sťahovania vo fronte sú dokončené." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Stav" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Kategória" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Vytvoriť nové sťahovanie" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Nové _sťahovanie..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Nová _kategória..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "New Clipboard _batch..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Nové _dávkové z URL sekvencie..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Nový torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Nový metaodkaz..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Uložiť všetky nastavenia" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Spustiť vybrané sťahovanie" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Pozastaviť vybrané sťahovanie" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Vlastnosti vybraného sťahovania" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Posunúť vybrané sťahovanie vyššie" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Posunúť vybrané sťahovanie nižšie" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Posunúť vybrané sťahovanie nahor" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Posunúť vybrané sťahovanie nadol" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Nová kategória" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Kopírovať - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Vlastnosti kategórie" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Vlastnosti sťahovania" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Nový torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Nový metaodkaz" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Otvoriť súbor torrentu" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Otvoriť súbor metaodkazu" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "Nepodarilo sa uložiť súbor kategórií." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "Nepodarilo sa načítať súbor kategórií." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Uložiť súbor kategórií" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Otvoriť súbor kategórií" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Odkaz " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Obrázok " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Textový súbor" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Importovať URL adresy z HTML súboru" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Importovať URL adresy z textového súboru" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Exportovať URL adresy do textového súboru" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Dávkové zo URL sekvencie" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Nenájdené žiadne URL adresy v schránke." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Všetky URL adresy existujú." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Dávkové zo schránky" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Nové" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Chyba" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Správa" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Počet vybraných položiek: %d" @@ -568,14 +600,17 @@ msgid "Category _name:" msgstr "_Názov kategórie:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Aktívne _sťahovania:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Kapacita dokončených:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Kapacita koša:" @@ -628,7 +663,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -639,12 +674,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Súbor:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Vyberte priečinok" @@ -698,7 +733,7 @@ msgstr "Súbor cookie:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Vyberte súbor cookie:" @@ -708,7 +743,7 @@ msgstr "Odoslať súbor:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Vyberte súbor na odoslanie:" @@ -745,10 +780,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -820,7 +855,8 @@ msgid "_Edit" msgstr "_Upraviť" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -843,9 +879,9 @@ msgstr "Preskočiť existujúce URI" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Použiť nedávne nastavenia sťahovania" #. --- Completion Auto-Actions --- start --- @@ -949,7 +985,7 @@ msgid "Download _Columns" msgstr "Stĺpce sťahovania" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Dokončené" @@ -976,25 +1012,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Rýchlosť" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Rýchlosť nahrávania" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Nahrané" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Pomer" @@ -1005,13 +1041,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Dátum pridania" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Dátum dokončenia" @@ -1033,7 +1069,8 @@ msgid "_Download" msgstr "_Sťahovanie" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "_Vymazať položku" @@ -1107,116 +1144,116 @@ msgid "Check for Updates" msgstr "Skontrolovať aktualizácie" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Nastavenia" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Nemožno spustiť predvolenú aplikáciu pre súbor '%s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - Tento priečinok neexistuje." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "URI existuje" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "Toto URI existuje, naozaj chcete pokračovať?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Všeobecné" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Pokročilé" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Nastavenia kategórie" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Predvolené pre nové sťahovanie 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Predvolené 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "bez názvu" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Pozastavené" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Nahrávanie" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Dokončené" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "V koši" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Vo fronte" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Aktívne" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Všetky stavy" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Názov" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Dokončené" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Veľkosť" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Uplynulé" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Zostáva" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Počet" @@ -1243,67 +1280,67 @@ msgid "Port:" msgstr "Port:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Argumenty socketu:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Prvok:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Po" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Ut" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "St" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Št" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Pi" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "So" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Ne" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Povoliť plánovač" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Vypnúť" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- zastaviť všetky úlohy" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normálne" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- spustiť úlohu normálne" @@ -1362,271 +1399,306 @@ msgstr "_Označiť podľa filtra..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "napríklad" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Od:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "Do:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "číslice:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "_Od:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "citlivé na veľkosť písmen" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Žiadny znak divokej karty (*) v položke URL." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL nie je platná" -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Žiadny znak v položkách 'Od' alebo 'Do'." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Náhľad" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Používateľské rozhranie" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Šírka pásma" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Plánovač" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Zásuvný modul" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Ostatné" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Povoliť monitor schránky" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Tichý režim" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Predvolený index kategórií" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "Pridať do N-tej kategórie, ak nie je žiadna zodpovedajúca kategória" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "Monitorovať schránku pre konkrétne typy súborov:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Oddeľte typy pomocou znaku '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Tu môžete používať regulárne výrazy." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Potvrdenie" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Zobraziť potvrdovací dialóg pri ukončení" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Potvrdiť pri vymazávaní súborov" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Systémový panel" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Vždy zobraziť ikonu v oznamovacej oblasti" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Minimalizovať po štarte do oznamovacej oblasti" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Minimalizovať do panela po zavretí okna" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Použiť Ubuntu indikátor aplikácie" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Povoliť režim offline po štarte" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Oznámenie o začatí sťahovania" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Zvuk pri dokončení sťahovania" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "Toto bude mať vplyv na všetky pluginy." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Globálne limity rýchlostí" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Maximálna rýchlosť nahrávania" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Maximálna rýchlosť sťahovania" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Dokončenie automatických akcií" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Vlastný príkaz:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Vlastný príkaz ak dôjde k chybe:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "_Automaticky ukladať" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "minútach" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Interval:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "minútach" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Nastavenia príkazového riadku" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Používať predvolene '--quiet'" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "Plugin odpovedajúci zadaniu:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Možnosti pluginu Aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "Overovací tajný token RPC" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Globálne limity rýchlostí sú len pre aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Spustiť aria2 po štarte" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Vypnúť aria2 po ukončení" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Spustiť aria2 na lokálnom zariadení" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Umiestnenie" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Argumenty" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Po zmene musíte reštartovať uGet." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Súbor" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Priečinok" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Položka" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Hodnota" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Kopírovať _všetko" diff -Nru uget-2.0.2/po/sr@latin.po uget-2.2.2/po/sr@latin.po --- uget-2.0.2/po/sr@latin.po 2015-09-11 12:14:42.000000000 +0000 +++ uget-2.2.2/po/sr@latin.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,38 +3,32 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# markosm , 2014 -# markosm , 2014 +# markosm , 2014 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-29 15:15+0000\n" -"Last-Translator: markosm \n" -"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/uget/" -"language/sr@latin/)\n" -"Language: sr@latin\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: Michael Tunnell \n" +"Language-Team: Serbian (Latin) (http://www.transifex.com/uget/uget/language/sr@latin/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Language: sr@latin\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../../po/../uget/pwmd.c:32 #, c-format msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Sve kategorije" @@ -49,7 +43,7 @@ msgstr "Šaljem..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Pokušaj ponovo" @@ -59,7 +53,7 @@ msgstr "Preuzimanje završeno" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Završeno" @@ -70,12 +64,12 @@ msgstr "Obnovljivo" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Nije obnovljivo" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Izlazni fajl ne može biti preimenovan." @@ -85,7 +79,7 @@ msgstr "nemoguće povezivanje sa računarom." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Fascikla ne može biti kreirana." @@ -149,136 +143,158 @@ msgid "cookie file not found." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: dogodila se nepoznata greška." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: vremenska pauza." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: resursi nisu pronađeni." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 prijavljuje određeni broj 'resource not found' greški. Pogledaj --max-" -"file-not-found opciju" +msgstr "aria2 prijavljuje određeni broj 'resource not found' greški. Pogledaj --max-file-not-found opciju" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: brzina je vrlo spora." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: dogodio se problem sa mrežom." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: nezavršena preuzimanja." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Van resursa" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "aria2: dužina komada je različita od one u .aria2 kontrolnom fajlu." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 je preuzela isti fajl." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 je preuzela isti torent info." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: fajl već postoji. Pogledaj --allow-overwrite opciju." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: ne mogu otvoriti postojeći fajl." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "aria2: ne mogu kreirati novi fajl ili skratiti postojeći." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: dogodila se I/O greška." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: neuspelo imenovanje rezolucije." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: nije moguće analizirati Metalink dokument." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: FTP komanda nije uspela." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: HTTP odgovor je loš ili neočekiva." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Previše preusmeravanja." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: HTTP autorizacija nije uspela." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "aria2: ne mogu analizirati fajl (obično .torrent fajl)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: torent fajl je oštećen ili nedostaju informacije." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: Magnet URI je bio loš." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "aria2: data je loša/nepoznata opcija." -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2: udaljeni server nije mogao da obradi zahtev." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: nije moguće analizirati JSON-RPC zahtev." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Bez odgovora. Da li je aria2 ugašen?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2: gid je uklonjen." +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Menadžer preuzimanja" @@ -295,249 +311,266 @@ msgid "uGet Project Manager: " msgstr "uGet menadžer projekta: " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "zadaci" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Novo iz klipborda" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Novo preuzimanje" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Klipbord" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Komandna linija" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Dogodila se greška" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Dogodila se greška kod preuzimanja." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Preuzimanje započinje" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Pokretanje preuzimanja na čekanju" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Preuzimanje završeno" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Sva preuzimanja sa popisa čekanja su završena." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Stanje" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Kategorija" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Kreiraj novo preuzimanje" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Novo _preuzimanje..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Nova _kategorija..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Novo iz _klipborda..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Novi _URL redosled linkova..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Novi torent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Novi meta-link..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Sačuvaj sva podešavanja" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Pokreni odabrano preuzimanje" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Pauziraj odabrano preuzimanje" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Podesi svojstva odabranog preuzimanja" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Pomeri odabrano preuzimanje gore" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Pomeri odabrano preuzimanje dole" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Pomeri odabrano preuzimanje na vrh" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Pomeri odabrano preuzimanje na dno" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Nova kategorija" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Kopiraj - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Svojstva kategorije" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Svojstva preuzimanja" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Novi torent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Novi meta-link" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Otvori torent fajl" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Otvori meta-link fajl" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "Neuspelo čuvanje fajla kategorije" -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "Neuspelo učitavanje kategorije fajla." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Sačuvaj fajl kategorije" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Otvori fajl kategorije" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Link " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Slika " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Tekstualni fajl" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Uvezi URL-ove iz HTML fajla" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Uvezi URL-ove iz tekstualnog fajla" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Izvezi URL u tekstualni fajl" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "URL Redosled linkova" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Bez URL-a pronađenih u klipbordu." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Sve URL adrese su postojeće." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Iz klipborda" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Novo" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Greška" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Poruka" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Odabrano %d stavki" @@ -549,8 +582,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"pokrenuli smo prikupljanje donacija za budući razvoj uGet-a, molim kliknite " +msgstr "pokrenuli smo prikupljanje donacija za budući razvoj uGet-a, molim kliknite " #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -568,14 +600,17 @@ msgid "Category _name:" msgstr "Ime _kategorije:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Aktivna _preuzimanja:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Kapacitet završenog:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Kapacitet obrisanog:" @@ -628,7 +663,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -639,12 +674,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Fajl:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Odaberi fasciklu:" @@ -698,7 +733,7 @@ msgstr "Fajl kolačića:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Odaberi fajl kolačića" @@ -708,7 +743,7 @@ msgstr "Poštanski fajl:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Odaberi poštanski fajl" @@ -745,10 +780,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -820,7 +855,8 @@ msgid "_Edit" msgstr "_Uredi" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -843,9 +879,9 @@ msgstr "Preskoči postojeći URI" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Primeni nedavne postavke preuzimanja" #. --- Completion Auto-Actions --- start --- @@ -949,7 +985,7 @@ msgid "Download _Columns" msgstr "Kolone _preuzimanja" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Završeno" @@ -976,25 +1012,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Brzina" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Brzina otpreme" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Otpremljeno" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Odnos" @@ -1005,13 +1041,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Dodato" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Završeno" @@ -1033,7 +1069,8 @@ msgid "_Download" msgstr "_Preuzimanje" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "_Obriši stavku" @@ -1107,116 +1144,116 @@ msgid "Check for Updates" msgstr "Proverite ažuriranja" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Postavke" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Nemoguće pokretanje podrazumevane aplikacija za fajl '%s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - Ova fascikla ne postoji." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "URI postoji" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "Ovaj URI postoji, da li želite da nastavite?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Opšte" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Napredno" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Postavke kategorije" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Podrazumevano za novo preuzimanje 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Podrazumevano 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "bezimeno" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Pauzirano" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Otpremanje" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Završeno" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Obrisano" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Na čekanju" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Aktivno" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Svi statusi" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Ime" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Završeno" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Veličina" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Pokrenuto" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Završeno" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Količina" @@ -1243,67 +1280,67 @@ msgid "Port:" msgstr "Port:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Utičnica:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Utičnica args:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Element:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Pon" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Uto" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Sre" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Čet" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Pet" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Sub" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Ned" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Omogući raspored" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Isključi" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- zaustavi sve zadatke" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Normalno" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- normalno pokreni zadatak" @@ -1362,271 +1399,306 @@ msgstr "_Označi prema filteru..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "npr." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Od:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "Na:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "brojevi:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "O_d:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "mala-velika slova" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Bez zamenskih(*) karaktera u URL unosu." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL nije ispravan." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Nema znakova u 'Od' ili 'Na' unosu." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Pregled" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Korisničko sučelje" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Protok" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Raspored" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Dodatak" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Ostalo" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Omogući klipbord monitor" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Tihi režim" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Podrazumevani indeks kategorije" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "Dodavanje u Nth kategoriju ako se ne podudaraju." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "Monitor klipborda za određeni tip fajla:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Razdvoj vrste fajlova sa znakom '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Možete koristiti uobičajene izraze ovde." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Potvrda" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Prikaži dijalog potvrde na izlasku" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Potvrdi pri brisanju fajlova" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Sistemska kaseta" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Uvek prikaži ikonu u sistemskoj kaseti" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Smanji u sistemsku kasetu po pokretanju" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Spusti u sistemsku kasetu kad zatvoriš prozor" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Koristi Ubuntu indikator" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Omogući na početku režim van mreže" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Obaveštenje o početku preuzimanja" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Zvuk kada se završi preuzimanje" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "Ovo će uticati na sve dodatke." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Opšte ograničenje brzine" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Maks brzina otpremanja" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Maks brzina preuzimanja" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Završene auto-akcije" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Prilagođena komanda:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Prilagođena komanda ako se dogodi greška:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "_Automatsko čuvanje" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "minuta" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Interval:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "minuta" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Postavke komandne linije" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Koristi '--quiet' kao podrazumevano" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "Poredak povezivanja:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Aria2 opcije povezivanja" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "RPC tajno pitanje za autorizaciju" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Opšte ograničenje brzine samo za aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Pokreni aria2 na početku" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Isključi aria2 na izlazu" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Pokreni aria2 na lokalnom uređaju" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Putanja" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Argumenti" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Morate ponovo pokrenuti uGet nakon izmena." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Fajl" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Fascikla" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Stavka" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Vrednost" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Kopiraj _sve" diff -Nru uget-2.0.2/po/sr.po uget-2.2.2/po/sr.po --- uget-2.0.2/po/sr.po 2015-09-11 12:14:42.000000000 +0000 +++ uget-2.2.2/po/sr.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,38 +3,33 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# markosm , 2014 -# markosm , 2014 +# markosm , 2016 +# markosm , 2014 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-29 15:05+0000\n" -"Last-Translator: markosm \n" -"Language-Team: Serbian (http://www.transifex.com/projects/p/uget/language/" -"sr/)\n" -"Language: sr\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: markosm \n" +"Language-Team: Serbian (http://www.transifex.com/uget/uget/language/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../../po/../uget/pwmd.c:32 #, c-format msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "Менаџер лозинки: uget\n\nТоком покушаја SSH повезивања за %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n\nДа ли би желели да ову конекцију третирате као поуздана за сада и будућа повезивања додавањем %s's кључа од познатог домаћина?" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Све категорије" @@ -49,7 +44,7 @@ msgstr "Шаљем..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Покушај поново" @@ -59,7 +54,7 @@ msgstr "Преузимање завршено" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Завршено" @@ -70,12 +65,12 @@ msgstr "Обновљиво" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Није обновљиво" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Излазни фајл не може бити преименован." @@ -85,7 +80,7 @@ msgstr "немогуће повезивање са рачунаром." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Фасцикла не може бити креирана." @@ -142,143 +137,165 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "фајл поста није пронађен." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "фајл колачића није пронађен." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Овај видео је уклоњен." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Грешка код прибављања информација о видеу." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Грешка код прибављања странице са видеом." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "Није пронађен video_id на YouTube адреси." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: догодила се непозната грешка." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: временска пауза." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: ресурси нису пронађени." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 пријављује одређени број 'resource not found' грешки. Погледај --max-" -"file-not-found опцију" +msgstr "aria2 пријављује одређени број 'resource not found' грешки. Погледај --max-file-not-found опцију" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: брзина је врло спора." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: догодио се проблем са мрежом." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: незавршена преузимања." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Ван ресурса" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "aria2: дужина комада је различита од оне у .aria2 контролном фајлу." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 је преузела исти фајл." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 је преузела исти торент инфо." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: фајл већ постоји. Погледај --allow-overwrite опцију." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: не могу отворити постојећи фајл." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "aria2: не могу креирати нови фајл или скратити постојећи." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: догодила се I/O грешка." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: неуспело именовање резолуције." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: није могуће анализирати Металинк документ." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: ФТП команда није успела." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: HTTP одговор је лош или неочекива." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Превише преусмеравања." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: HTTP ауторизација није успела." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "aria2: не могу анализирати фајл (обично .torrent фајл)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: торент фајл је оштећен или недостају информације." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: Магнет URI је био лош." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "aria2: дата је лоша/непозната опција." -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2: удаљени сервер није могао да обради захтев." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: није могуће анализирати JSON-RPC захтев." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Без одговора. Да ли је aria2 угашен?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2: гид је уклоњен." +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Неуспело добављање медијског линка." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "Без подударних медија." + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Менаџер преузимања" @@ -295,249 +312,266 @@ msgid "uGet Project Manager: " msgstr "uGet менаџер пројекта: " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "задаци" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Ново из клипборда" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Ново преузимање" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Клипборд" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Командна линија" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Догодила се грешка" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Догодила се грешка код преузимања." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Преузимање започиње" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Покретање преузимања на чекању" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Преузимање завршено" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Сва преузимања са пописа чекања су завршена." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Стање" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Категорија" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Креирај ново преузимање" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Ново _преузимање..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Нова _категорија..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Ново из _клипборда..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Нови _URL редослед линкова..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Нови торент..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Нови мета-линк..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Сачувај сва подешавања" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Покрени одабрано преузимање" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Паузирај одабрано преузимање" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Подеси својства одабраног преузимања" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Помери одабрано преузимање горе" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Помери одабрано преузимање доле" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Помери одабрано преузимање на врх" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Помери одабрано преузимање на дно" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Нова категорија" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Копирај - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Својства категорије" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Својства преузимања" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Нови торент" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Нови мета-линк" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Отвори торент фајл" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Торент фајл (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Отвори мета-линк фајл" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "Неуспело чување фајла категорије" -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "Неуспело учитавање категорије фајла." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Сачувај фајл категорије" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Отвори фајл категорије" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "JSON фајл (*.json)" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Линк " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Слика " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Текстуални фајл" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Увези URL-ове из HTML фајла" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "HTML фајл (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Увези URL-ове из текстуалног фајла" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Чист текстуални фајл" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Извези УРЛ у текстуални фајл" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "URL Редослед линкова" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Без URL-а пронађених у клипборду." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "Све УРЛ адресе су постојеће." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Из клипборда" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Ново" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Грешка" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Порука" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Одабрано %d ставки" @@ -549,8 +583,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"покренули смо прикупљање донација за будући развој uGet-а, молим кликните " +msgstr "покренули смо прикупљање донација за будући развој uGet-а, молим кликните " #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -568,14 +601,17 @@ msgid "Category _name:" msgstr "Име _категорије:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Активна _преузимања:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Капацитет завршеног:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Капацитет обрисаног:" @@ -628,7 +664,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -639,12 +675,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Фајл:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Одабери фасциклу:" @@ -698,7 +734,7 @@ msgstr "Фајл колачића:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Одабери фајл колачића" @@ -708,7 +744,7 @@ msgstr "Поштански фајл:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Одабери поштански фајл" @@ -745,10 +781,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -820,7 +856,8 @@ msgid "_Edit" msgstr "_Уреди" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -843,9 +880,9 @@ msgstr "Прескочи постојећи URI" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Примени недавне поставке преузимања" #. --- Completion Auto-Actions --- start --- @@ -949,7 +986,7 @@ msgid "Download _Columns" msgstr "Колоне _преузимања" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Завршено" @@ -976,25 +1013,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Брзина" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Брзина отпреме" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Отпремљено" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Однос" @@ -1005,13 +1042,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Додато" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Завршено" @@ -1033,7 +1070,8 @@ msgid "_Download" msgstr "_Преузимање" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "_Обриши ставку" @@ -1107,116 +1145,116 @@ msgid "Check for Updates" msgstr "Проверите ажурирања" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Поставке" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Немогуће покретање подразумеване апликација за фајл '%s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - Ова фасцикла не постоји." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "URI постоји" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "Овај URI постоји, да ли желите да наставите?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Опште" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Напредно" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Поставке категорије" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Подразумевано за ново преузимање 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Подразумевано 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "безимено" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Паузирано" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Отпремање" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Завршено" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Обрисано" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "На чекању" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Активно" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Сви статуси" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Име" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Завршено" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Величина" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Покренуто" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Завршено" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Количина" @@ -1243,67 +1281,67 @@ msgid "Port:" msgstr "Порт:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Утичница:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Утичница args:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Елемент:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Пон" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Уто" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Сре" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Чет" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Пет" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Суб" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Нед" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Омогући распоред" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Искључи" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- заустави све задатке" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Нормално" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- нормално покрени задатак" @@ -1362,271 +1400,306 @@ msgstr "_Означи према филтеру..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "нпр." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Од:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "На:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "бројеви:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "О_д:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "мала-велика слова" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Без заменских(*) карактера у URL уносу." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL није исправан." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Нема знакова у 'Од' или 'На' уносу." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Преглед" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Корисничко сучеље" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "Проток" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Распоред" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Додатак" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "Медијски сајт" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Остало" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Омогући клипборд монитор" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Тихи режим" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "Подразумевани индекс категорије" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "Додавање у Nth категорију ако се не подударају." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "_Монитор УРЛ од медијског сајта" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "Монитор клипборда за одређени тип фајла:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Раздвој врсте фајлова са знаком '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Можете користити уобичајене изразе овде." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "Потврда" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Прикажи дијалог потврде на изласку" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Потврди при брисању фајлова" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Системска касета" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Увек прикажи икону у системској касети" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Смањи у системску касету по покретању" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Спусти у системску касету кад затвориш прозор" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "Користи Ubuntu индикатор" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Омогући на почетку режим ван мреже" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Обавештење о почетку преузимања" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Звук када се заврши преузимање" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Прикажи већу икону" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "Ово ће утицати на све додатке." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "Опште ограничење брзине" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Макс брзина отпремања" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Макс брзина преузимања" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "Завршене ауто-акције" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Прилагођена команда:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Прилагођена команда ако се догоди грешка:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "_Аутоматско чување" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "минута" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Интервал:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "минута" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Поставке командне линије" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Користи '--quiet' као подразумевано" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "Поредак повезивања:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Aria2 опције повезивања" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "RPC тајно питање за ауторизацију" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Опште ограничење брзине само за aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Покрени aria2 на почетку" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Искључи aria2 на излазу" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Покрени aria2 на локалном уређају" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Путања" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Аргументи" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Морате поново покренути uGet након измена." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "Режим медијског подударања:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Подударање услова" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Квалитет:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Тип:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Фајл" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Фасцикла" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Ставка" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Вредност" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Копирај _све" diff -Nru uget-2.0.2/po/sv.po uget-2.2.2/po/sv.po --- uget-2.0.2/po/sv.po 2015-09-11 12:14:42.000000000 +0000 +++ uget-2.2.2/po/sv.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,20 +3,19 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Patrik Nilsson , 2014-2015 +# Patrik Nilsson , 2017 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-02-04 12:53+0000\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-09-16 10:31+0000\n" "Last-Translator: Patrik Nilsson \n" -"Language-Team: Swedish (http://www.transifex.com/projects/p/uget/language/" -"sv/)\n" -"Language: sv\n" +"Language-Team: Swedish (http://www.transifex.com/uget/uget/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -24,15 +23,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "Demon för lösenordshanterare: uget\n\nUnder försöket att upprätta en SSH anslutning till %s uppstod det ett problem med verifieringen av dess värdnyckel emot den kända och betrodda värd filen, eftersom dess värdnyckel inte hittades.\n\nVill du behandla den här anslutningen som betrodda för denna och framtida anslutningar genom att lägga till %s's värdnyckel till den kända värdfilen?" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "All kategorin" @@ -47,7 +43,7 @@ msgstr "Överför..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Försök igen" @@ -57,7 +53,7 @@ msgstr "Nedladdning slutförd" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Slutförd" @@ -68,12 +64,12 @@ msgstr "Kan återupptas" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Kan ej återupptas" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Output-fil kan inte döpas om." @@ -83,7 +79,7 @@ msgstr "kunde inte ansluta till värd." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Mappen kan inte skapas." @@ -140,143 +136,165 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "post-filen hittades inte." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "kakfilen hittades inte." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Den här videon har tagits bort." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Fel uppstod under hämtningen av video info." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Fell uppstod under hämtningen av video webbsida." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "Inget video_id hittades i URL till YouTube." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: ett okänt fel inträffade." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." -msgstr "" +msgstr "aria2: timeout inträffade." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: resursen hittades inte." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" -"aria2 såg det angivna antalet 'resursen hittades inte' fel. Se alternativet " -"--max-file-not-found." +msgstr "aria2 såg det angivna antalet 'resursen hittades inte' fel. Se alternativet --max-file-not-found." -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: hastigheten var för låg." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: ett nätverksproblem uppstod." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: oavslutade nedladdningar." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Slut på resurser" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "aria2: bit längd var annorlunda än en i .aria2 kontroll filen." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 hämtade samma fil." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." -msgstr "" +msgstr "aria2 hämtade samma info hash torrent." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: filen existerade redan. Se --allow-overwrite alternativet." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: kunde inte öppna den befintliga filen." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." -msgstr "" +msgstr "aria2: kunde inte skapa ny fil eller ändra befintlig fil." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." -msgstr "" +msgstr "aria2: fil I/O fel inträffade." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." -msgstr "" +msgstr "aria2: namn uppslagning misslyckades." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." -msgstr "" +msgstr "aira2: kunde inte tolka Metalink dokumentet." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: FTP-kommandot misslyckades." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." -msgstr "" +msgstr "aira2: HTTP-svarshuvud var felaktig eller oväntat." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "För många omdirigeringar." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: HTTP autentisering misslyckades." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." -msgstr "" +msgstr "aria2: kunde inte tolka bencoded fil (vanligtvis .torrent fil)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." -msgstr "" +msgstr "aira2: torrent filen var korrupt eller saknade information." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." -msgstr "" +msgstr "aira2: Magnetlänk URI var felaktig." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" +msgstr "aira2: felaktig/oigenkännligt alternativ angavs eller oväntat alternativ argument angivet." -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." -msgstr "" +msgstr "aria2: fjärrservern kunde inte hantera förfrågan." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." -msgstr "" +msgstr "aria2: kunde inte tolka JSON-RPC förfrågan." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" -msgstr "" +msgstr "Inget svar. Är aria2 nedstängt?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2: gid togs bort." +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Misslyckade att hämta media-länk." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "Inget matchat media." + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Nedladdningshanterare" @@ -293,249 +311,266 @@ msgid "uGet Project Manager: " msgstr "uGet Projektledare:" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "uppgifter" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Ny från urklipp" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Ny nedladdning" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Urklipp" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Kommandorad" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Fel uppstod" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Fel uppstod under nedladdning." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Nedladdning startar" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Startar nedladdnings kö." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Nedladdning slutförd" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Alla nedladdningar i kön har slutförts." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Status" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Kategorier" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Skapa ny nedladdning" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Ny _nedladdning..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Ny _kategori..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Ny _sats från urklipp..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Ny _URL sekvenssats..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Ny torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Ny metalänk..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Spara alla inställningar" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Kör markerad nedladdning" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Pausa markerad nedladdning" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Ställ in den markerade nedladdningens egenskaper" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Flytta markerad nedladdning upp" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Flytta markerad nedladdning ner" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Flytta markerad nedladdning till toppen" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Flytta markerad nedladdning till botten" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Ny kategori" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Kopiera -" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Kategori egenskaper" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Nedladdnings egenskaper" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Ny torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Ny metalänk" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Öppna torrent-fil" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Torrent fil (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Öppna metalänk-fil" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "Det gick inte att spara kategori filen." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "Det gick inte att läsa in kategori filen." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "Spara kategori fil" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "Öppna kategori fil" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "JSON fil (*.json)" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Länk " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Bild " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Textfil" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Importera URL:er från HTML-fil" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "HTML fil (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Importera URL:er från textfil" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Vanlig textfil" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "Exportera URL:er till text fil" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "URL sekvenssats" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Inga URL:er hittades i urklipp." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." -msgstr "" +msgstr "Alla URL:er har existerat." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Urklippssats " -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Ny" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Fel" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Meddelande" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Markerade %d objekt" @@ -547,8 +582,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"vi har en donations insamling för uGets framtida utveckling, vänligen klicka" +msgstr "vi har en donations insamling för uGets framtida utveckling, vänligen klicka" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -566,14 +600,17 @@ msgid "Category _name:" msgstr "Kategori _namn:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Aktiva _nedladdningar:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Kapacitet för slutförda:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Kapacitet för borttagna:" @@ -582,19 +619,19 @@ #. URI Matching conditions #: ../../po/../ui-gtk/UgtkCategoryForm.c:111 msgid "URI Matching conditions" -msgstr "" +msgstr "URI matchande förhållanden" #: ../../po/../ui-gtk/UgtkCategoryForm.c:118 msgid "Matched _Hosts:" -msgstr "" +msgstr "Matchade _värdar:" #: ../../po/../ui-gtk/UgtkCategoryForm.c:129 msgid "Matched _Schemes:" -msgstr "" +msgstr "Matchade _scheman:" #: ../../po/../ui-gtk/UgtkCategoryForm.c:140 msgid "Matched _Types:" -msgstr "" +msgstr "Matchade _typer:" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 msgid "Really Quit?" @@ -626,7 +663,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -637,12 +674,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Fil:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Välj mapp" @@ -659,7 +696,7 @@ #. "Max Connections:" - title label #: ../../po/../ui-gtk/UgtkDownloadForm.c:212 msgid "_Max Connections:" -msgstr "" +msgstr "_Max anslutningar:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:230 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 @@ -696,7 +733,7 @@ msgstr "Cookie-fil:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Välj en Cookie-fil" @@ -706,7 +743,7 @@ msgstr "Post-fil:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Välj en post-fil" @@ -738,22 +775,22 @@ #. label - Max upload speed #: ../../po/../ui-gtk/UgtkDownloadForm.c:406 msgid "Max upload speed:" -msgstr "Max uppladdnings hastighet:" +msgstr "Max uppladdningshastighet:" #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" #. label - Max download speed #: ../../po/../ui-gtk/UgtkDownloadForm.c:424 msgid "Max download speed:" -msgstr "Max nedladdnings hastighet:" +msgstr "Max nedladdningshastighet:" #. Retrieve timestamp #: ../../po/../ui-gtk/UgtkDownloadForm.c:442 @@ -797,68 +834,69 @@ #. Open Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 msgid "_Open category..." -msgstr "" +msgstr "_Öppna kategori..." #. Save Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 msgid "_Save category as..." -msgstr "" +msgstr "_Spara kategori som..." #. Save All #: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 msgid "Save _all settings" -msgstr "" +msgstr "Spara _alla inställningar" #. Offline mode #: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 msgid "Offline Mode" -msgstr "" +msgstr "Offlineläge" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 msgid "_Edit" msgstr "_Redigera" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 msgid "Clipboard _Monitor" -msgstr "Urklipp _övervakare" +msgstr "Urklipps_övervakare" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 #: ../../po/../ui-gtk/UgtkTrayIcon.c:103 msgid "Clipboard works quietly" -msgstr "" +msgstr "Urklipp arbetar tyst" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:107 msgid "Command-line works quietly" -msgstr "" +msgstr "Kommandorad arbetar tyst" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 #: ../../po/../ui-gtk/UgtkTrayIcon.c:111 msgid "Skip existing URI" -msgstr "" +msgstr "Hoppa över befintlig URI" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Tillämpa senaste nedladdnings inställningar" #. --- Completion Auto-Actions --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 msgid "Completion _Auto-Actions" -msgstr "" +msgstr "Slutförande _auto-åtgärder" #. Completion Auto-Actions - Disable #: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 msgid "_Disable" -msgstr "" +msgstr "_Inaktivera" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 msgid "Hibernate" -msgstr "" +msgstr "Vila" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 msgid "Suspend" @@ -874,12 +912,12 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 msgid "Custom" -msgstr "" +msgstr "Anpassad" #. Completion Auto-Actions - Remember #: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 msgid "Remember setting" -msgstr "" +msgstr "Kom ihåg inställning" #. Completion Auto-Actions - Help #: ../../po/../ui-gtk/UgtkMenubar-ui.c:279 @@ -947,7 +985,7 @@ msgid "Download _Columns" msgstr "Nedladdnings _kolumner" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Slutförd" @@ -974,25 +1012,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Hastighet" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Upp hastighet" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Uppladdat" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Ratio" @@ -1003,13 +1041,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Lades till" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Slutförd den" @@ -1031,18 +1069,19 @@ msgid "_Download" msgstr "_Nedladdning" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" -msgstr "" +msgstr "_Ta bort inlägg" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 msgid "Delete Entry and _File" -msgstr "" +msgstr "Ta bort inlägg och _fil" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 msgid "Open _Containing folder" -msgstr "" +msgstr "Öppna _innehållande mapp" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 msgid "Force Start" @@ -1105,116 +1144,116 @@ msgid "Check for Updates" msgstr "Sök efter uppdateringar" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Inställningar" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Kan inte öppna standardprogram för fil '%s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - Den här mappen finns inte." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" -msgstr "" +msgstr "URI har existerat" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" -msgstr "" +msgstr "Denna URI hade existerat, är du säker på att fortsätta?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Allmänt" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Avancerat" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Kategori inställningar" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Standard för ny nedladdning 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Standard 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "namnlös" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Pausade" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Uppladdat" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Slutförda" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Borttagna" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "I kö" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Aktiva" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" -msgstr "" +msgstr "Alla status" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Namn" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Slutförd" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Storlek" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Förlopp" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Kvar" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Kvantitet" @@ -1241,67 +1280,67 @@ msgid "Port:" msgstr "Port:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Socket argument:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Element:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Mon" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Tis" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Ons" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Tor" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Fre" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Lör" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Sön" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "Aktivera _schemaläggare" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Stäng av" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- stoppa alla uppgifter" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" -msgstr "Normalt" +msgstr "Normal" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- kör uppgifter som vanligt" @@ -1360,271 +1399,306 @@ msgstr "_Markera efter filter..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "ex." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Från:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "Till:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "siffror:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "F_rån:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "Skillnad mellan små/större bokstäver" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Inga asterisk(*) tecken i URL:en." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL:en är inte giltig" -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Inga tecken i 'Från' eller 'Till' fälten." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Förhandsvisning" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" -msgstr "" +msgstr "Användargränssnitt" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" -msgstr "" +msgstr "Bandbredd" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Schemaläggare" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Insticksmodul" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "Media webbplats" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Övriga" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" -msgstr "" +msgstr "_Aktivera urklippsövervakare" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Tyst läge" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" -msgstr "" +msgstr "Standard kategori index" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." -msgstr "" +msgstr "Lägger till i Nth kategori om ingen matchade kategori." -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "_Övervaka URL till media webbplats" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" -msgstr "" +msgstr "Övervaka urklipp efter specificerade filtyper:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Separera typerna med '|' tecknet." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Du kan använda reguljära uttryck här." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" -msgstr "" +msgstr "Bekräftelse" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" -msgstr "" +msgstr "Visa bekräftelsedialog vid avslut" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Bekräfta när du tar bort filer" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" -msgstr "" +msgstr "Systemfältet" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Visa alltid en ikon i systemfältet" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Minimera till systemfält vid uppstart" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" -msgstr "" +msgstr "Stäng till systemfält vid stängning" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" -msgstr "" +msgstr "Använd Ubuntu's app indikator" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Aktivera offline läge vid uppstart" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Notifiera när en nedladdning påbörjas" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Spela en ton när nedladdning är slutförd" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Visa stor ikon" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." -msgstr "" +msgstr "Dessa kommer att påverka alla insticksmoduler." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" -msgstr "" +msgstr "Global hastighetsbegränsning" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" -msgstr "" +msgstr "Max uppladdningshastighet" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" -msgstr "" +msgstr "Max nedladdningshastighet" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" -msgstr "" +msgstr "Slutförande auto-åtgärder" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" -msgstr "" +msgstr "Anpassat kommando:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" -msgstr "" +msgstr "Anpassat kommando om fel inträffade:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" -msgstr "" +msgstr "_Auto-spara" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "minuter" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Intervall:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "minuter" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Kommandorad inställningar" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Använd '--quiet' som standard" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" -msgstr "" +msgstr "Insticksmoduler i matchande ordning:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" -msgstr "" +msgstr "Alternativ för aria2 insticksmodul" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" -msgstr "" +msgstr "RPC hemligt autentiserings token" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" -msgstr "" +msgstr "Endast global hastighetsbegränsning för aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" -msgstr "_Kör aria2 vid uppstart" +msgstr "_Starta aria2 vid uppstart" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" -msgstr "_Stäng aria2 vid avslut" +msgstr "_Stäng aria2 vid nedstängning" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" -msgstr "" +msgstr "Starta aria2 på lokal enhet" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Sökväg" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Argument" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." -msgstr "" +msgstr "Du måste starta om uGet efter att ha modifierat det." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "Media matchningsläge:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Match förhållanden:" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Kvalitet:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Typ:" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Fil" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Mapp" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Objekt" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Värde" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Kopiera _alla" diff -Nru uget-2.0.2/po/tr.po uget-2.2.2/po/tr.po --- uget-2.0.2/po/tr.po 2015-09-11 12:14:43.000000000 +0000 +++ uget-2.2.2/po/tr.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,20 +3,20 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Emin Tufan , 2013-2015 +# Emin Tufan , 2016-2017 # yakup , 2013 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-05-07 16:56+0000\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2017-10-29 17:15+0000\n" "Last-Translator: Emin Tufan \n" "Language-Team: Turkish (http://www.transifex.com/uget/uget/language/tr/)\n" -"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: tr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../../po/../uget/pwmd.c:32 @@ -24,15 +24,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "Parola Yönetici Artalanı: uget\n\n%s adresine SSH ile bağlanmaya çalışılıyorken, bilinen ve güvenilen ana makineler dosyasına karşılık hostkey doğrulamasında sorun oluştu çünkü hostkey bulunamadı.\n\n%s'in hostkey'ini bilinen ana makineler dosyasına ekleyerek, bu ve gelecek bağlantılar için, bu bağlantının güvenli olarak görülmesini ister misiniz?" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Tüm Kategoriler" @@ -47,9 +44,9 @@ msgstr "Gönderiliyor..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" -msgstr "Yeniden Dene" +msgstr "Yeniden dene" #. UGET_EVENT_NORMAL_RETRY, #: ../../po/../uget/UgetEvent.c:61 @@ -57,7 +54,7 @@ msgstr "İndirme tamamlandı" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Bitti" @@ -68,12 +65,12 @@ msgstr "Devam Edebilir" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Devam Edemez" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Çıktı dosyası yeniden adlandırılamadı." @@ -83,7 +80,7 @@ msgstr "ana makineye bağlanamadı." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Dizin oluşturulamadı." @@ -140,140 +137,164 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "gönderme dosyası bulunamadı." #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "çerez dosyası bulunamadı." + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "Bu video silinmiş." + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "Video bilgisi alınırken hata oluştu." + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "Video web sayfası alınırken hata oluştu." + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "YouTube adresinde video_id bulunamadı." #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: bilinmeyen hata meydana geldi." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: zaman aşımı meydana geldi." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: kaynak bulunamadı." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" +msgstr "aria2 'kaynak bulunamadı' hatasının numarasını gördü. --max-file-not-found seçeneğine bak" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: hız çok yavaş." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: ağ sorunu meydana geldi." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: tamamlanmamış indirmeler." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Kaynak yetersiz" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." -msgstr "" +msgstr "aria2: parça genişliği .aria2 denetim dosyasındakinden farklı." #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 aynı dosyayı indiriyor." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." -msgstr "" +msgstr "aria2 aynı hash bilgisine sahip torrenti indiriyor." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." -msgstr "" +msgstr "aria2: dosya zaten mevcut. --allow-overwrite seçeneğine bakın." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: mevcut dosya açılamıyor." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." -msgstr "" +msgstr "aria2: yeni dosya oluşturulamıyor ya da var olan dosya kırpılamıyor." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: dosya G/Ç hatası meydana geldi." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." -msgstr "" +msgstr "aria2: isim çözümleme başarısız." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: Metalink belgesi ayrıştırılamadı." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: FTP komutu başarısız." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." -msgstr "" +msgstr "aria2: HTTP yanıt başlığı kötü ya da beklenmedik." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Çok fazla yönlendirme." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: HTTP yetkilendirmesi başarısız." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." -msgstr "" +msgstr "aria2: bencode'lenmiş dosya ayrıştırılamıyor (çoğunlukla .torrent dosyası)." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: torrent dosyası bozuk ya da eksik bilgi içeriyor." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." -msgstr "" +msgstr "aria2: Magnet adresi kötü." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" +msgstr "aria2: kötü/tanınmayan seçenek ya da beklenmeyen seçenek değeri verildi." -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." -msgstr "" +msgstr "aria2: uzak sunucu isteği işleyemiyor." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: JSON-RPC isteği ayrıştırılamıyor." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" -msgstr "" +msgstr "Yanıt yok. aria2 kapalı mı?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." -msgstr "" +msgstr "aria2: gid kaldırıldı." + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "Ortam bağlantısı alınamadı." + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "Ortam eşleşmedi." #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" @@ -281,264 +302,279 @@ #: ../../po/../ui-gtk/UgtkAboutDialog.c:48 msgid "translator-credits" -msgstr "" -"Yiğit Ateş\n" -"Emin Tufan Çetin " +msgstr "Yiğit Ateş\nEmin Tufan Çetin " #: ../../po/../ui-gtk/UgtkAboutDialog.c:80 msgid "uGet Founder: " -msgstr "" +msgstr "uGet Kurucusu:" #: ../../po/../ui-gtk/UgtkAboutDialog.c:81 msgid "uGet Project Manager: " -msgstr "uGet Proje Yöneticisi:" +msgstr "uGet Tasarı Yöneticisi:" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "görevler" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Panodan Yeni" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Yeni İndirme" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Pano" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Komut satırı" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Hata Oluştu" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "İndirilirken hata oluştu." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "İndirme Başlatılıyor" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "İndirme kuyruğu başlatılıyor." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "İndirme Tamamlandı" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." -msgstr "Kuyruktaki bütün indirmeler tamamlandı." +msgstr "Kuyruktaki tüm indirmeler tamamlandı." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Durum" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Bölüm" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Yeni indirme oluştur" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Yeni İn_dirme..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Yeni _Bölüm..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Yeni _çoklu pano..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Yeni _URL Dizin yığını..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Yeni Torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Yeni Metalink..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Tüm ayarları kaydet" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" -msgstr "Seçili indirmeyi çalıştır" +msgstr "Seçili indirmeyi çalıştırılabilir olarak belirle" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Seçili indirmeyi duraklat" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Seçili indirmenin özellikleri" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Seçili indirmeyi yukarı taşı" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Seçili indirmeyi aşağı taşı" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Seçili indirmeyi en üste taşı" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Seçili indirmeyi en alta taşı" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Yeni Bölüm" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Kopyala -" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Bölüm Özellikleri" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "İndirme Özellikleri" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Yeni Torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Yeni Metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Torrent dosyası aç" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "Torrent dosyası (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Metalink dosyası aç" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." -msgstr "" +msgstr "Kategori dosyası kaydetme başarısız." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." -msgstr "" +msgstr "Kategori dosyası yüklemesi başarısız." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" -msgstr "" +msgstr "Kategori dosyası kaydet" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" -msgstr "" +msgstr "Kategori dosyası aç" + +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "JSON dosyası (*.json)" #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Bağlantı " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " -msgstr "Görüntü " +msgstr "Resim " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Metin Dosyası" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "HTML dosyasından URL aktar" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "HTML dosyası (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Metin dosyasından URL aktar" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "Düz metin dosyası" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "URL'leri metin dosyasına aktar" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "URL Dizin Yığını" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Panoda URL bulunamadı." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." -msgstr "" +msgstr "Tüm URL'ler mevcut." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Panodan çoklu" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Yeni" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Hata" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "İleti" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" -msgstr "%d öğe seçildi" +msgstr "%d öge seçildi" #: ../../po/../ui-gtk/UgtkBanner.c:145 ../../po/../ui-gtk/UgtkBanner.c:165 msgid "Attention uGetters:" @@ -547,9 +583,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"uGet'in gelecekteki geliştirmeleri için Donation Drive kullanıyoruz, lütfen " -"tıklayın" +msgstr "uGet'in gelecekteki geliştirmeleri için Donation Drive kullanıyoruz, lütfen tıklayın" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -567,14 +601,17 @@ msgid "Category _name:" msgstr "Bölüm _adı:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Etkin _indirmeler:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Bitenlerin Kapasitesi:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Geri Dönüşüm Kapasitesi:" @@ -583,7 +620,7 @@ #. URI Matching conditions #: ../../po/../ui-gtk/UgtkCategoryForm.c:111 msgid "URI Matching conditions" -msgstr "" +msgstr "URI Eşleşme koşulları" #: ../../po/../ui-gtk/UgtkCategoryForm.c:118 msgid "Matched _Hosts:" @@ -603,7 +640,7 @@ #: ../../po/../ui-gtk/UgtkConfirmDialog.c:65 msgid "Are you sure you want to quit?" -msgstr "Çıkmak istediğinizden emin misiniz?" +msgstr "Çıkmak istediğinize emin misiniz?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:69 msgid "Really delete files?" @@ -623,13 +660,13 @@ #: ../../po/../ui-gtk/UgtkConfirmDialog.c:109 msgid "Don't ask me again" -msgstr "Bana tekrar sorma" +msgstr "Bana yeniden sorma" #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" -msgstr "" +msgstr "_URI:" #. Mirrors - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:130 @@ -638,12 +675,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Dosya:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Dizin Seç" @@ -675,7 +712,7 @@ #. frame for login #: ../../po/../ui-gtk/UgtkDownloadForm.c:238 msgid "Login" -msgstr "Oturum Aç" +msgstr "Oturum aç" #. User - label #. user label & entry @@ -697,7 +734,7 @@ msgstr "Çerez dosyası:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Çerez Dosyası Seç" @@ -707,14 +744,14 @@ msgstr "Gönderme dosyası:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Gönderme Dosyası Seç" #. label - user agent #: ../../po/../ui-gtk/UgtkDownloadForm.c:346 msgid "User Agent:" -msgstr "Tarayıcı Bilgileri:" +msgstr "Kullanıcı Etmeni:" #. Retry limit - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:362 @@ -744,10 +781,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -798,28 +835,29 @@ #. Open Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 msgid "_Open category..." -msgstr "" +msgstr "Kateg_ori Aç..." #. Save Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 msgid "_Save category as..." -msgstr "" +msgstr "Kategoriyi farklı _kaydet..." #. Save All #: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 msgid "Save _all settings" -msgstr "" +msgstr "Tüm _ayarları kaydet" #. Offline mode #: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 msgid "Offline Mode" -msgstr "Çevrimdışı Kip" +msgstr "Çevrim Dışı Kip" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 msgid "_Edit" msgstr "Düz_enle" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -829,41 +867,41 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 #: ../../po/../ui-gtk/UgtkTrayIcon.c:103 msgid "Clipboard works quietly" -msgstr "" +msgstr "Pano usulca çalışıyor" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:107 msgid "Command-line works quietly" -msgstr "" +msgstr "Komut satırı usulca çalışıyor" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 #: ../../po/../ui-gtk/UgtkTrayIcon.c:111 msgid "Skip existing URI" -msgstr "" +msgstr "Var olan URI'yi atla" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" -msgstr "Yeni indirme ayarlarını uygula" +msgid "Apply recent download settings" +msgstr "Son indirme ayarlarını uygula" #. --- Completion Auto-Actions --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 msgid "Completion _Auto-Actions" -msgstr "" +msgstr "Tamamlanış _Kendiliğinden Eylemleri" #. Completion Auto-Actions - Disable #: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 msgid "_Disable" -msgstr "" +msgstr "_Devre dışı bırak" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 msgid "Hibernate" -msgstr "" +msgstr "Uyut" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 msgid "Suspend" -msgstr "" +msgstr "Beklet" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 msgid "Shutdown" @@ -871,16 +909,16 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 msgid "Reboot" -msgstr "Yeniden Başlat" +msgstr "Yeniden başlat" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 msgid "Custom" -msgstr "" +msgstr "Özel" #. Completion Auto-Actions - Remember #: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 msgid "Remember setting" -msgstr "Ayarı hatırla" +msgstr "Ayarı anımsa" #. Completion Auto-Actions - Help #: ../../po/../ui-gtk/UgtkMenubar-ui.c:279 @@ -902,11 +940,11 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:308 msgid "_Toolbar" -msgstr "_Araç Çubuğu" +msgstr "_Araç çubuğu" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:313 msgid "Statusbar" -msgstr "Durum Çubuğu" +msgstr "Durum çubuğu" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:323 msgid "_Summary" @@ -915,7 +953,7 @@ #. Summary Items --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:331 msgid "Summary _Items" -msgstr "Özet _Öğeleri" +msgstr "Özet _Ögeleri" #. Summary Items - Name #: ../../po/../ui-gtk/UgtkMenubar-ui.c:336 @@ -946,12 +984,12 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:376 msgid "Download _Columns" -msgstr "_Sütunları İndir" +msgstr "İndirme _Sütunları" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" -msgstr "_Tamamlandı" +msgstr "_Tamamlanma" #. Download Columns - Total #: ../../po/../ui-gtk/UgtkMenubar-ui.c:386 @@ -975,25 +1013,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Hız" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Yükleme Hızı" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Yüklendi" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Oran" @@ -1004,13 +1042,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Eklendi" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Tamamlandı" @@ -1032,18 +1070,19 @@ msgid "_Download" msgstr "_İndirme" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" -msgstr "" +msgstr "Gir_diyi Sil" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 msgid "Delete Entry and _File" -msgstr "" +msgstr "Girdiyi ve _Dosyayı Sil" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 msgid "Open _Containing folder" -msgstr "" +msgstr "Depolama _konumunu aç" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 msgid "Force Start" @@ -1065,7 +1104,7 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:659 msgid "_Normal" -msgstr "_Normal" +msgstr "_Olağan" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:664 msgid "_Low" @@ -1074,7 +1113,7 @@ #. Get Help Online #: ../../po/../ui-gtk/UgtkMenubar-ui.c:687 msgid "Get Help Online" -msgstr "Çevrimiçi Yardım Alın" +msgstr "Çevrim İçi Yardım Alın" #. Documentation #: ../../po/../ui-gtk/UgtkMenubar-ui.c:698 @@ -1089,7 +1128,7 @@ #. Submit Feedback #: ../../po/../ui-gtk/UgtkMenubar-ui.c:720 msgid "Submit Feedback" -msgstr "Geribildirim Gönder" +msgstr "Geri Bildirim Gönder" #. Report a Bug #: ../../po/../ui-gtk/UgtkMenubar-ui.c:731 @@ -1106,116 +1145,116 @@ msgid "Check for Updates" msgstr "Güncellemeler için denetle" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Ayarlar" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "'%s' dosyası için varsayılan uygulama başlatılamıyor." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - Bu dizin mevcut değil." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" -msgstr "" +msgstr "URI mevcut" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" -msgstr "" +msgstr "Bu URI zaten var, devam etmek istediğine emin misin?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Genel" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Gelişmiş" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Bölüm ayarları" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Yeni indirme 1 için varsayılan" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Varsayılan 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "adlandırılmamış" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Duraklatıldı" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Yükleniyor" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Tamamlandı" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Geri dönüştürüldü" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Kuyrukta" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Etkin" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" -msgstr "" +msgstr "Tüm Durumlar" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Ad" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" -msgstr "Tamamlanmış" +msgstr "Tamamlanma" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Boyut" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Geçen süre" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Kalan" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" -msgstr "" +msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Miktar" @@ -1242,69 +1281,69 @@ msgid "Port:" msgstr "Port:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Soket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" -msgstr "Soket argümanları:" +msgstr "Soket değerleri:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Nesne:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Pzt" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Sal" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Çar" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Per" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "Cum" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Cmt" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Paz" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "Zamanlayıcıyı _Etkinleştir" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Kapat" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- tüm görevi durdur" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" -msgstr "Normal" +msgstr "Olağan" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" -msgstr "- görevi normal olarak yürüt" +msgstr "- görevi olağan biçimde yürüt" #: ../../po/../ui-gtk/UgtkSelector.c:254 msgid "All" @@ -1316,15 +1355,15 @@ #: ../../po/../ui-gtk/UgtkSelector.c:276 msgid "Mark by filter" -msgstr "Süzgece göre işaretle" +msgstr "Süzgece göre imle" #: ../../po/../ui-gtk/UgtkSelector.c:294 msgid "Mark URLs by host AND filename extension." -msgstr "URL'leri ana makine VE dosya uzantısına göre işaretle" +msgstr "URL'leri ana makine VE dosya uzantısına göre imle" #: ../../po/../ui-gtk/UgtkSelector.c:297 msgid "This will reset all marks of URLs." -msgstr "Bu, tüm işaretli URL'leri sıfırlayacak." +msgstr "Bu, tüm imli URL'leri sıfırlayacak." #. filter view ----------------------- #. left side @@ -1348,284 +1387,319 @@ #. select all #: ../../po/../ui-gtk/UgtkSelector.c:797 msgid "Mark _All" -msgstr "Tümünü İş_aretle" +msgstr "_Tümünü İmle" #. select none #: ../../po/../ui-gtk/UgtkSelector.c:801 msgid "Mark _None" -msgstr "İşaretlemeyi _Kaldır" +msgstr "İmi _Kaldır" #. select by filter #: ../../po/../ui-gtk/UgtkSelector.c:805 msgid "_Mark by filter..." -msgstr "Süzgece göre _işaretle..." +msgstr "Süzgece göre _imle..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "örn." #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "Kaynak:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "Alıcı:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "basamak:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "K_aynak:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" -msgstr "büyük-küçük harf hassas" +msgstr "büyük-küçük harfe hassas" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "URL girişinde özel karakter(*) yok." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "Geçersiz URL." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "'Kaynak' veya 'Alıcı' girişi boş." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" -msgstr "Önizleme" +msgstr "Ön izleme" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Kullanıcı Arayüzü" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" -msgstr "Bant Genişliği" +msgstr "Bant genişliği" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Zamanlayıcı" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Eklenti" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "Ortam web sitesi" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Diğerleri" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "Pano izleyiciyi _etkinleştir" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Sessiz kip" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" -msgstr "" +msgstr "Öntanımlı kategori dizini" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." -msgstr "" +msgstr "Eşleşen kategori yoksa N. kategoriye ekleniyor." + +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "Ortam websitesinin URL'sini _izle" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" -msgstr "" +msgstr "Belirtilen dosya türleri için panoyu izle:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Türleri '|' karakteri ile ayır." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Burada düzenli ifadeleri kullanabilirsiniz." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" -msgstr "" +msgstr "Onay" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "Kapatırken onay kutusu göster" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Dosyalar silinirken onayla" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" -msgstr "" +msgstr "Sistem Tepsisi" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Küçük simgeyi her zaman göster" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Tepsiye küçültülmüş olarak başlat" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" -msgstr "" +msgstr "Pencere kapatıldığında sistem tepsisine küçült" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" -msgstr "" +msgstr "Ubuntu App Indicator'u kullan" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" -msgstr "Başlangıçta çevrimdışı kipini etkinleştir" +msgstr "Başlangıçta çevrim dışı kipi etkinleştir" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" -msgstr "İndirmeye başlanıyor bilgilendirmesi" +msgstr "İndirme başlıyor bildirimi" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" -msgstr "İndirme tamamlandıktan sonra ses çıkar" +msgstr "İndirme bittikten sonra ses çıkar" + +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "Geniş simge göster" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." -msgstr "" +msgstr "Bu tüm eklentileri etkileyecek." #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" -msgstr "" +msgstr "Genel hız sınırı" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Azami yükleme hızı" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Azami indirme hızı" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" -msgstr "" +msgstr "Tamamlanış Kendiliğinden Eylemleri" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "Özel komut:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "Hata oluşursa özel komut:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" -msgstr "" - -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "dakika" +msgstr "Kendiliğinden k_aydet" -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Aralık:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "dakika" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Komut Satırı Ayarları" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Varsayılan olarak \"--quiet\" kullan" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" -msgstr "" +msgstr "Eklenti eşleşme düzeni:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" -msgstr "" +msgstr "Aria2 eklenti seçenekleri" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" -msgstr "" +msgstr "RPC yetkilendirme gizli belirteci" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" -msgstr "" +msgstr "Yalnızca aria2 için genel hız sınırı" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "Başlangıçta aria2'yi ça_lıştır" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "Çıkışta aria2'yi _kapat" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" -msgstr "" +msgstr "aria2'yi yerel aygıtta çalıştır" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Yol" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" -msgstr "Argümanlar" +msgstr "Değerler" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Değiştirdikten sonra uGet'i yeniden başlatmalısınız." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "Ortam eşleşme kipi:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "Eşleşme koşulları" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "Nitelik:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "Tür:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Dosya" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Dizin" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" -msgstr "Öğe" +msgstr "Öge" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Değer" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Tümünü Kopy_ala" @@ -1637,4 +1711,4 @@ #. Offline mode #: ../../po/../ui-gtk/UgtkTrayIcon.c:147 msgid "_Offline Mode" -msgstr "_Çevrimdışı Kip" +msgstr "_Çevrim Dışı Kip" diff -Nru uget-2.0.2/po/uk.po uget-2.2.2/po/uk.po --- uget-2.0.2/po/uk.po 2015-09-11 12:14:43.000000000 +0000 +++ uget-2.2.2/po/uk.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,40 +3,36 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Oleh , 2014 +# Oleh, 2014 # Serhij Dubyk , 2011 +# Микола Ткач , 2016 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2014-11-27 06:57+0000\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" "Last-Translator: Michael Tunnell \n" -"Language-Team: Ukrainian (http://www.transifex.com/projects/p/uget/language/" -"uk/)\n" -"Language: uk\n" +"Language-Team: Ukrainian (http://www.transifex.com/uget/uget/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Language: uk\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../../po/../uget/pwmd.c:32 #, c-format msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" -msgstr "" +msgstr "Усі категорії" #. UGET_EVENT_NORMAL_CUSTOM #: ../../po/../uget/UgetEvent.c:58 @@ -49,7 +45,7 @@ msgstr "Передача…" #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Спроби" @@ -59,7 +55,7 @@ msgstr "Завантаження завершено" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Завершено" @@ -70,12 +66,12 @@ msgstr "Можливе продовження" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Продовження неможливе" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Вихідний файл неможливо перейменувати." @@ -85,7 +81,7 @@ msgstr "не вдається під'єднатися до вузла." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Неможливо створити теку." @@ -102,17 +98,17 @@ #. UGET_EVENT_ERROR_FILE_OPEN_FAILED #: ../../po/../uget/UgetEvent.c:85 msgid "Unable to create thread." -msgstr "" +msgstr "Не вдається створити потік." #. UGET_EVENT_ERROR_THREAD_CREATE_FAILED, #: ../../po/../uget/UgetEvent.c:86 msgid "Incorrect source (different file size)." -msgstr "" +msgstr "Невірне джерело (різний розмір файлу)." #. UGET_EVENT_ERROR_INCORRECT_SOURCE, #: ../../po/../uget/UgetEvent.c:87 msgid "Out of resource (disk full or run out of memory)." -msgstr "Недостатно ресурсів (диск заповнений чи недостатньо пам’яті)." +msgstr "Бракує ресурсів (диск заповнений чи брак пам’яті)." #. UGET_EVENT_ERROR_OUT_OF_RESOURCE #: ../../po/../uget/UgetEvent.c:88 @@ -127,7 +123,7 @@ #. UGET_EVENT_ERROR_NO_OUTPUT_SETTING #: ../../po/../uget/UgetEvent.c:90 msgid "Too many retries." -msgstr "Занадто багато спроб." +msgstr "Забагато спроб." #. UGET_EVENT_ERROR_TOO_MANY_RETRIES #: ../../po/../uget/UgetEvent.c:91 @@ -149,395 +145,434 @@ msgid "cookie file not found." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." -msgstr "" +msgstr "aria2: сталася невідома помилка." -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." -msgstr "" +msgstr "aria2: час сплив." -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." -msgstr "" +msgstr "aria2: ресурс не знайдено." -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" -msgstr "" +msgstr "aria2 отримала певне число помилок \"ресурс не знайдено\". Дивіться параметр --max-file-not-found" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." -msgstr "" +msgstr "aria2: швидкість була замалою." -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." -msgstr "" +msgstr "aria2: виникла проблема з мережею." -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." -msgstr "" +msgstr "aria2: незавершені завантаження." #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" -msgstr "" +msgstr "Немає ресурсів" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." -msgstr "" +msgstr "aria2: розмір блоку відрізнявся від вказаного у контрольному .aria2-файлі" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." -msgstr "" +msgstr "aria2 був завантажений один і той самий файл." -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." -msgstr "" +msgstr "aria2 був завантажений один і той самий хеш торенту." -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." -msgstr "" +msgstr "aria2: файл вже існує. Дивіться параметр --allow-overwrite." #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." -msgstr "" +msgstr "aria2: не вдалося відкрити існуючий файл." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." -msgstr "" +msgstr "aria2: не вдалося створити новий файл або обнулити існуючий файл." -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." -msgstr "" +msgstr "aria2: сталася помилка читання/запису файлу." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." -msgstr "" +msgstr "aria2: дозвіл імен не вдався." -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." -msgstr "" +msgstr "aria2: не вдалося проаналізувати Metalink-документ." #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." -msgstr "" +msgstr "aria2: FTP команда не вдалася." -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." -msgstr "" +msgstr "aria2: HTTP-заголовок відповіді був зіпсованим або неочікуваним." -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." -msgstr "Занадто багато перенаправлень." +msgstr "Забагато переспрямувань." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." -msgstr "" +msgstr "ria2: HTTP-авторизація не вдалася." -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." -msgstr "" +msgstr "aria2: не вдалося проаналізувати закодований файл (зазвичай файл \".torrent\")." -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." -msgstr "" +msgstr "aria2: торент-файл пошкоджений або бракує інформації." -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." -msgstr "" +msgstr "aria2: поганий Magnet URI." -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." -msgstr "" +msgstr "aria2: задано поганий/нерозпізнаний параметр або неочкуваний аргумент до нього" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." -msgstr "" +msgstr "aria2: віддалений сервер не зміг опрацювати запит." -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." -msgstr "" +msgstr "aria2: не вдалося проаналізувати JSON-RPC запит." -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" -msgstr "" +msgstr "Немає відповіді. Можливо aria2 відімкнена?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." +msgstr "aria2: gid був вилучений." + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." msgstr "" #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" -msgstr "Менеджер звантажень" +msgstr "Керівник звантажень" #: ../../po/../ui-gtk/UgtkAboutDialog.c:48 msgid "translator-credits" -msgstr "" -"Сергій Дубик \n" -"Макс Ляшук " +msgstr "Сергій Дубик \nМакс Ляшук \nМикола Ткач " #: ../../po/../ui-gtk/UgtkAboutDialog.c:80 msgid "uGet Founder: " -msgstr "" +msgstr "Засновник uGet: " #: ../../po/../ui-gtk/UgtkAboutDialog.c:81 msgid "uGet Project Manager: " -msgstr "" +msgstr "Керівник проєкту uGet: " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "завдання" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" -msgstr "Нове звантаження з буфера обміну" +msgstr "Нове звантаження з буферу обміну" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Нове звантаження" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Буфер обміну" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Командний рядок" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" -msgstr "" +msgstr "Сталася помилка" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." -msgstr "" +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." +msgstr "Сталася помилка при завантаженні." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "звантаження запущено" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "запущена черга звантажень." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Звантаження завершено" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "Усі файли з черги успішно звантажено." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Статус" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Категорія" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Створити нове звантаження" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Нове _звантаження…" #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Нова _категорія…" #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." -msgstr "Нове завантаження з _буфера обміну…" +msgstr "Нове завантаження з _буферу обміну…" #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." -msgstr "Новий список посилань" +msgstr "Новий перелік посилань" #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." -msgstr "Новий torrent..." +msgstr "Новий торент..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Нове метапосилання..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" -msgstr "" +msgstr "Зберегти усі налаштування" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Почати звантаження для вибраних записів" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Призупинити вибрані звантаження" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" -msgstr "Встановити властивості вибраних звантажень" +msgstr "Встановити ціхи вибраних звантажень" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" -msgstr "Перемістити обрану звантаження вище" +msgstr "Перемістити обране звантаження вище" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Перемістити обране звантаження нижче" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Перемістити обране звантаження до початку" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Перемістити обране звантаження у кінець" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Нова категорія" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Копіювати -" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Властивості категорії" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Властивості звантаження" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" -msgstr "Новий torrent" +msgstr "Новий торент" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Нове метапосилання" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Відкрити torrent-файл" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Відкрити файл метапосилань" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." -msgstr "" +msgstr "Не вдалося зберегти файл категорії." -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." -msgstr "" +msgstr "Не вдалося завантажити файл категорії." -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" -msgstr "" +msgstr "Зберегти файл категорії" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" +msgstr "Відкрити файл категорії" + +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" msgstr "" #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Посилання " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Зображення " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Текстовий файл" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Імпортувати URL-адреси з HTML-файлу" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Імпортувати URL-адреси з текстового файлу" -#: ../../po/../ui-gtk/UgtkApp.c:1363 -msgid "Export URLs to text file" +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1612 +msgid "Export URLs to text file" +msgstr "Експорт URL-адрес у текстовий файл" + +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" -msgstr "Список посилань" +msgstr "Перелік посилань" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "У буфері обміну не знайдено URL-адрес." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." -msgstr "" +msgstr "Усі URL-адреси вже існують." -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" -msgstr "З буфера обміну" +msgstr "З буферу обміну" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" -msgstr "" +msgstr "Нова" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Помилка" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Повідомлення" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Обрано записів: %d" @@ -549,8 +584,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"ми запустили Donation Drive для подальшої розробки uGet, будь ласка, клацніть" +msgstr "ми запустили Donation Drive для подальшої розробки uGet, будь ласка, клацніть" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -568,14 +602,17 @@ msgid "Category _name:" msgstr "Назва категорії:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Активні з_вантаження:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Кількість завершених:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Кількість вилучених:" @@ -584,53 +621,53 @@ #. URI Matching conditions #: ../../po/../ui-gtk/UgtkCategoryForm.c:111 msgid "URI Matching conditions" -msgstr "" +msgstr "Умови розпізнавання URI" #: ../../po/../ui-gtk/UgtkCategoryForm.c:118 msgid "Matched _Hosts:" -msgstr "" +msgstr "Розпізнавати _хости:" #: ../../po/../ui-gtk/UgtkCategoryForm.c:129 msgid "Matched _Schemes:" -msgstr "" +msgstr "Розпізнавати _схеми:" #: ../../po/../ui-gtk/UgtkCategoryForm.c:140 msgid "Matched _Types:" -msgstr "" +msgstr "Розпізнавати _типи:" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 msgid "Really Quit?" -msgstr "Дійсно вийти?" +msgstr "Справді вийти?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:65 msgid "Are you sure you want to quit?" -msgstr "Ви дійсно хочете вийти?" +msgstr "Ви справді бажаєте вийти?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:69 msgid "Really delete files?" -msgstr "Дійсно хочете вилучити файли?" +msgstr "Справді волієте вилучити файли?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:70 msgid "Are you sure you want to delete files?" -msgstr "Ви впевнені, що хочете вилучити файли?" +msgstr "Ви впевнені, що бажаєте вилучити файли?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:74 msgid "Really delete category?" -msgstr "" +msgstr "Справді вилучити категорію?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:75 msgid "Are you sure you want to delete category?" -msgstr "" +msgstr "Ви впевнені, що волієте вилучити категорію?" #: ../../po/../ui-gtk/UgtkConfirmDialog.c:109 msgid "Don't ask me again" -msgstr "" +msgstr "Не питати знову" #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" -msgstr "" +msgstr "_URI:" #. Mirrors - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:130 @@ -639,12 +676,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Файл:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Виберіть теку" @@ -661,7 +698,7 @@ #. "Max Connections:" - title label #: ../../po/../ui-gtk/UgtkDownloadForm.c:212 msgid "_Max Connections:" -msgstr "" +msgstr "_Максимальне число з’єднань:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:230 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 @@ -698,7 +735,7 @@ msgstr "Файл-куки:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Виберіть файл з куками" @@ -708,7 +745,7 @@ msgstr "Відвантажуваний файл:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Виберіть Post-файл" @@ -720,7 +757,7 @@ #. Retry limit - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:362 msgid "Retry _limit:" -msgstr "Гранична кількість спроб:" +msgstr "Межа кількости спроб:" #. counts - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:377 @@ -745,10 +782,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/с" @@ -769,17 +806,17 @@ #. Batch Downloads --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:94 msgid "_Batch Downloads" -msgstr "_Пакетне завантаження" +msgstr "_Пакункове завантаження" #. Batch downloads - Clipboard batch #: ../../po/../ui-gtk/UgtkMenubar-ui.c:100 msgid "_Clipboard batch..." -msgstr "_З буфера обміну" +msgstr "_З буферу обміну" #. Batch downloads - URL Sequence batch #: ../../po/../ui-gtk/UgtkMenubar-ui.c:110 msgid "_URL Sequence batch..." -msgstr "_Список посилань" +msgstr "_Перелік посилань" #. Batch downloads - Text file import (.txt) #: ../../po/../ui-gtk/UgtkMenubar-ui.c:120 @@ -799,89 +836,90 @@ #. Open Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 msgid "_Open category..." -msgstr "" +msgstr "_Відкрити категорію..." #. Save Category #: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 msgid "_Save category as..." -msgstr "" +msgstr "_Зберегти категорію як..." #. Save All #: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 msgid "Save _all settings" -msgstr "" +msgstr "Зберегти _усі налаштування" #. Offline mode #: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 msgid "Offline Mode" -msgstr "" +msgstr "Режим офлайн" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 msgid "_Edit" msgstr "_Редагування" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 msgid "Clipboard _Monitor" -msgstr "Слідкувати за _буфером обміну" +msgstr "Стежити за _буфером обміну" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 #: ../../po/../ui-gtk/UgtkTrayIcon.c:103 msgid "Clipboard works quietly" -msgstr "" +msgstr "Буфер обміну у автоматичному режимі" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:107 msgid "Command-line works quietly" -msgstr "" +msgstr "Командний рядок у автоматичному режимі" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 #: ../../po/../ui-gtk/UgtkTrayIcon.c:111 msgid "Skip existing URI" -msgstr "" +msgstr "Пропускати існуючі URI" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" -msgstr "Встановити налаштування останнього завантаження" +msgid "Apply recent download settings" +msgstr "" #. --- Completion Auto-Actions --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 msgid "Completion _Auto-Actions" -msgstr "" +msgstr "_Дії після завершення" #. Completion Auto-Actions - Disable #: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 msgid "_Disable" -msgstr "" +msgstr "_Відімкнено" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 msgid "Hibernate" -msgstr "" +msgstr "Гібернація" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 msgid "Suspend" -msgstr "" +msgstr "Режим очікування" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 msgid "Shutdown" -msgstr "" +msgstr "Завершення роботи" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 msgid "Reboot" -msgstr "" +msgstr "Перезавантаження" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 msgid "Custom" -msgstr "" +msgstr "Користувацьке" #. Completion Auto-Actions - Remember #: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 msgid "Remember setting" -msgstr "" +msgstr "Запам’ятати налаштування" #. Completion Auto-Actions - Help #: ../../po/../ui-gtk/UgtkMenubar-ui.c:279 @@ -903,7 +941,7 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:308 msgid "_Toolbar" -msgstr "_Панель інструментів" +msgstr "_Панель знарядь" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:313 msgid "Statusbar" @@ -947,9 +985,9 @@ #: ../../po/../ui-gtk/UgtkMenubar-ui.c:376 msgid "Download _Columns" -msgstr "_Стовпці списку звантажень" +msgstr "_Стовпці переліку звантажень" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Завершено" @@ -976,25 +1014,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Швидкість" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Швидкість завантаження" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Відвантажено" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Відношення" @@ -1005,13 +1043,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "Додано в" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "Завершено в" @@ -1033,18 +1071,19 @@ msgid "_Download" msgstr "_Звантаження" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" -msgstr "" +msgstr "_Вилучити запис" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 msgid "Delete Entry and _File" -msgstr "" +msgstr "Вилучити запис і _файл" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 msgid "Open _Containing folder" -msgstr "" +msgstr "Відкрити _каталог, що містить" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 msgid "Force Start" @@ -1058,19 +1097,19 @@ #. Priority --- start --- #: ../../po/../ui-gtk/UgtkMenubar-ui.c:645 msgid "Priority" -msgstr "" +msgstr "Пріоритет" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:654 msgid "_High" -msgstr "" +msgstr "_Високий" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:659 msgid "_Normal" -msgstr "" +msgstr "_Звичайний" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:664 msgid "_Low" -msgstr "" +msgstr "_Низький" #. Get Help Online #: ../../po/../ui-gtk/UgtkMenubar-ui.c:687 @@ -1100,123 +1139,123 @@ #. Keyboard Shortcuts #: ../../po/../ui-gtk/UgtkMenubar-ui.c:742 msgid "Keyboard Shortcuts" -msgstr "" +msgstr "Скорочення клавіш" #. Check for Updates #: ../../po/../ui-gtk/UgtkMenubar-ui.c:749 msgid "Check for Updates" msgstr "Перевірити наявність оновлень" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Налаштування" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." -msgstr "Не вдається запустити програму за умовчанням для файлу „%s“" +msgstr "Не вдається запустити типову проґраму для файлу „%s“" -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." -msgstr "'%s' – ця тека не існує." +msgstr "'%s' – цієї теки не існує." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" -msgstr "" +msgstr "URI вже існує" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" -msgstr "" +msgstr "Цей URI вже існує, Ви впевнені, що бажаєте продовжити?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Загальні" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Додаткові" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Налаштування категорії" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Типово для нового завантаження 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Типове 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "неназване" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" -msgstr "" +msgstr "Призупинено" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" -msgstr "" +msgstr "Вивантаження" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" -msgstr "" +msgstr "Завершено" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Вилучені" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "У черзі" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Активно" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" -msgstr "" +msgstr "Усі стани" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Назва" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Завершено" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Розмір" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Минуло" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Залишилося" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" -msgstr "" +msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Кількість" @@ -1231,7 +1270,7 @@ #: ../../po/../ui-gtk/UgtkProxyForm.c:69 msgid "Default" -msgstr "За умовчанням" +msgstr "Типово" #. host label & entry #: ../../po/../ui-gtk/UgtkProxyForm.c:121 @@ -1243,69 +1282,69 @@ msgid "Port:" msgstr "Порт:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Сокет:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Аргументи сокета:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Елемент:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "Пон" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "Вів" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "Сер" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "Чет" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "П’ят" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "Суб" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "Нед" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Увімкнути планувальник" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Вимкнути" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" -msgstr "- зупинити всі завдання" +msgstr "- зупинити усі завдання" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Нормальний" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" -msgstr "- запустити завдання в звичайному режимі" +msgstr "- запустити завдання у звичайному режимі" #: ../../po/../ui-gtk/UgtkSelector.c:254 msgid "All" @@ -1362,273 +1401,306 @@ msgstr "Від_фільтрувати…" #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "Наприклад:" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Від:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "До:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "цифри:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "_Від:" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "з урахуванням регістру" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Не використовувати символ підстановки (*) в URL-адресі." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." -msgstr "Невірний URL." +msgstr "Невірна URL." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Немає символів у входженні „Від“ чи „До“." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Попередній перегляд" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" -msgstr "" +msgstr "Користувацький інтерфейс" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" -msgstr "" +msgstr "Пропускна здатність" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Планувальник" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Доповнення" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Інше" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" -msgstr "" +msgstr "_Увімкнути моніторинг буферу обміну" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" -msgstr "" -"_Тихий\n" -" режим" +msgstr "_У автоматичному режимі" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" -msgstr "" +msgstr "Індекс типової категорії" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." +msgstr "Долучення до N-ої категорії, якщо категорія не розпізнана." + +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" -msgstr "" +msgstr "Стежити за ціма типами файлів у буфері обміну:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Відокремлювати типи символом „|“." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Тут Ви можете використовувати регулярні вирази." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" -msgstr "" +msgstr "Підтвердження" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" -msgstr "" +msgstr "Показувати вікно підтвердження при виході" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" -msgstr "Питати підтвердження при вилученні файлів" +msgstr "Питати схвалення при вилученні файлів" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" -msgstr "" +msgstr "Системна таця" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" -msgstr "Завжди показувати іконку в треї" +msgstr "Завжди показувати піктограму у треї" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Ховати до системної таці при запуску" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" -msgstr "" +msgstr "Приховувати у тацю при закриванні вікна" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" -msgstr "" +msgstr "Використовувати індикатор застосунків Ubuntu" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Задіяти автономний режим при запуску" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Повідомлення при запуску звантаження" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Звук при завершенні звантаження" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 -msgid "These will affect all plug-ins." +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" msgstr "" +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 +msgid "These will affect all plug-ins." +msgstr "Вони впливають на усі втулки." + #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" -msgstr "" +msgstr "Глобальні обмеження швидкості" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" -msgstr "" +msgstr "Максимальна швидкість вивантаження" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" -msgstr "" +msgstr "Максимальна швидкість завантаження" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" -msgstr "" +msgstr "Дії після завершення" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" -msgstr "" +msgstr "Користувацька команда:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" -msgstr "" +msgstr "Користувацька команда при виникненні помилки:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" -msgstr "" - -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "хвилини" +msgstr "_Автозбереження" -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Інтервал:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "хвилини" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Налаштування командного рядка" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" -msgstr "Використовувати '--quiet' за замовченням" +msgstr "Типово використовувати '--quiet'" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" -msgstr "" +msgstr "Порядок розпізнавання втулок:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" -msgstr "" +msgstr "Параметри втулки aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" -msgstr "" +msgstr "Секретний токен RPC-авторизації" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" -msgstr "" +msgstr "Глобальні обмеження швидкості лише для aria2" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Запускати aria2 під час завантаження" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Закривати aria2 при виході" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" -msgstr "" +msgstr "Запускати aria2 на локальному пристрої" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" -msgstr "Шляш" +msgstr "Шлях" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Аргументи" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." +msgstr "Ви повинні перезавантажити uGet після внесення змін." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" msgstr "" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Файл" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Тека" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Запис" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Значення" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Копіювати _усі" diff -Nru uget-2.0.2/po/uz@Latn.po uget-2.2.2/po/uz@Latn.po --- uget-2.0.2/po/uz@Latn.po 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/po/uz@Latn.po 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,1713 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Akmal , 2015 +msgid "" +msgstr "" +"Project-Id-Version: uGet\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: Michael Tunnell \n" +"Language-Team: Uzbek (Latin) (http://www.transifex.com/uget/uget/language/uz@Latn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uz@Latn\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ../../po/../uget/pwmd.c:32 +#, c-format +msgid "" +"Password Manager Daemon: uget\n" +"\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" +"\n" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "" + +#: ../../po/../uget/UgetApp.c:103 +msgid "All Category" +msgstr "Barcha turkum" + +#. UGET_EVENT_NORMAL_CUSTOM +#: ../../po/../uget/UgetEvent.c:58 +msgid "Connecting..." +msgstr "Ulanmoqda..." + +#. UGET_EVENT_NORMAL_CONNECT +#: ../../po/../uget/UgetEvent.c:59 +msgid "Transmitting..." +msgstr "Uzatilmoqda..." + +#. UGET_EVENT_NORMAL_TRANSMIT, +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 +msgid "Retry" +msgstr "Qayta urinish" + +#. UGET_EVENT_NORMAL_RETRY, +#: ../../po/../uget/UgetEvent.c:61 +msgid "Download completed" +msgstr "Yuklab olish jarayoni tugadi!" + +#. UGET_EVENT_NORMAL_COMPLETE, +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 +msgid "Finished" +msgstr "Tugadi" + +#. UGET_EVENT_NORMAL_FINISH, +#. resumable +#: ../../po/../uget/UgetEvent.c:64 +msgid "Resumable" +msgstr "Davom ettirsa bo‘ladi" + +#. UGET_EVENT_NORMAL_RESUMABLE, +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 +msgid "Not Resumable" +msgstr "Davom ettirib bo‘lmaydi" + +#. UGET_EVENT_WARNING_CUSTOM +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 +msgid "Output file can't be renamed." +msgstr "Chiquvchi fayl nomini o‘zgartirib bo‘lmaydi" + +#. UGET_EVENT_ERROR_CUSTOM +#: ../../po/../uget/UgetEvent.c:81 +msgid "couldn't connect to host." +msgstr "hostga ulana olmadi." + +#. UGET_EVENT_ERROR_CONNECT_FAILED +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 +msgid "Folder can't be created." +msgstr "Jild yaratilmadi." + +#. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED +#: ../../po/../uget/UgetEvent.c:83 +msgid "File can't be created (bad filename or file exist)." +msgstr "Fayl yaratilmadi (fayl nomi to‘g‘ri kelmaydi yoki shu nomdagi fayl mavjud)." + +#. UGET_EVENT_ERROR_FILE_CREATE_FAILED +#: ../../po/../uget/UgetEvent.c:84 +msgid "File can't be opened." +msgstr "Faylni ochib bo‘lmaydi." + +#. UGET_EVENT_ERROR_FILE_OPEN_FAILED +#: ../../po/../uget/UgetEvent.c:85 +msgid "Unable to create thread." +msgstr "Mavzu yaratilmadi." + +#. UGET_EVENT_ERROR_THREAD_CREATE_FAILED, +#: ../../po/../uget/UgetEvent.c:86 +msgid "Incorrect source (different file size)." +msgstr "Noto‘g‘ri manba (boshqa fayl hajmi)." + +#. UGET_EVENT_ERROR_INCORRECT_SOURCE, +#: ../../po/../uget/UgetEvent.c:87 +msgid "Out of resource (disk full or run out of memory)." +msgstr "Manbadan tashqari (disk to‘la yoki xotira yetishmayapti)." + +#. UGET_EVENT_ERROR_OUT_OF_RESOURCE +#: ../../po/../uget/UgetEvent.c:88 +msgid "No output file." +msgstr "Chiquvchi fayl yo‘q." + +#. UGET_EVENT_ERROR_NO_OUTPUT_FILE +#: ../../po/../uget/UgetEvent.c:89 +msgid "No output setting." +msgstr "Chiqish sozlamasi o‘rnatilmagan." + +#. UGET_EVENT_ERROR_NO_OUTPUT_SETTING +#: ../../po/../uget/UgetEvent.c:90 +msgid "Too many retries." +msgstr "Juda ko‘p urinildi." + +#. UGET_EVENT_ERROR_TOO_MANY_RETRIES +#: ../../po/../uget/UgetEvent.c:91 +msgid "Unsupported scheme (protocol)." +msgstr "Mos kelmaydigan sxema (protokol)" + +#. UGET_EVENT_ERROR_UNSUPPORTED_SCHEME +#: ../../po/../uget/UgetEvent.c:92 +msgid "Unsupported file." +msgstr "Mos kelmaydigan fayl." + +#. UGET_EVENT_ERROR_UNSUPPORTED_FILE +#: ../../po/../uget/UgetEvent.c:93 +msgid "post file not found." +msgstr "" + +#. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND +#: ../../po/../uget/UgetEvent.c:94 +msgid "cookie file not found." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + +#. 1 - 10 +#: ../../po/../uget/UgetPluginAria2.c:280 +msgid "aria2: an unknown error occurred." +msgstr "aria2: noma’lum xatolik yuz berdi." + +#: ../../po/../uget/UgetPluginAria2.c:281 +msgid "aria2: time out occurred." +msgstr "aria2: tanaffus yuz berdi." + +#: ../../po/../uget/UgetPluginAria2.c:282 +msgid "aria2: resource was not found." +msgstr "aria2: manba topilmadi." + +#: ../../po/../uget/UgetPluginAria2.c:283 +msgid "" +"aria2 saw the specfied number of 'resource not found' error. See --max-file-" +"not-found option" +msgstr "aria2 'resource not found' xatosining ko‘rsatilgan raqamini ko‘ring. --max-file-not-found tanlamasini ko‘ring" + +#: ../../po/../uget/UgetPluginAria2.c:284 +msgid "aria2: speed was too slow." +msgstr "aria2: tezlik juda past." + +#: ../../po/../uget/UgetPluginAria2.c:285 +msgid "aria2: network problem occurred." +msgstr "aria2: tarmoqda muammo yuz berdi." + +#: ../../po/../uget/UgetPluginAria2.c:286 +msgid "aria2: unfinished downloads." +msgstr "aria2: tugallanmagan yuklab olishlar." + +#. _("Not Resumable"), +#: ../../po/../uget/UgetPluginAria2.c:288 +msgid "Out of resource" +msgstr "Manbadan tashqari" + +#. _(), +#: ../../po/../uget/UgetPluginAria2.c:289 +msgid "aria2: piece length was different from one in .aria2 control file." +msgstr "" + +#. 11 - 20 +#: ../../po/../uget/UgetPluginAria2.c:291 +msgid "aria2 was downloading same file." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:292 +msgid "aria2 was downloading same info hash torrent." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:293 +msgid "aria2: file already existed. See --allow-overwrite option." +msgstr "aria2: fayl allaqachon mavjud. Ko‘ring: --allow-overwrite." + +#. _("Output file can't be renamed."), +#: ../../po/../uget/UgetPluginAria2.c:295 +msgid "aria2: could not open existing file." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:296 +msgid "aria2: could not create new file or truncate existing file." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:297 +msgid "aria2: file I/O error occurred." +msgstr "" + +#. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED +#: ../../po/../uget/UgetPluginAria2.c:299 +msgid "aria2: name resolution failed." +msgstr "aria2: o‘lcham nomi amalga oshmadi." + +#: ../../po/../uget/UgetPluginAria2.c:300 +msgid "aria2: could not parse Metalink document." +msgstr "aria2: ma’lumot havolasi hujjatini ajratib bo‘lmadi." + +#. 21 - 30 +#: ../../po/../uget/UgetPluginAria2.c:302 +msgid "aria2: FTP command failed." +msgstr "aria2: FTP buyrug‘i amalga oshmadi." + +#: ../../po/../uget/UgetPluginAria2.c:303 +msgid "aria2: HTTP response header was bad or unexpected." +msgstr "aria2: HTTP javob bosh qatori juda yomon yoki kutilmaganda yuz berdi." + +#: ../../po/../uget/UgetPluginAria2.c:304 +msgid "Too many redirections." +msgstr "Juda ko‘p qayta yo‘naltirildi." + +#: ../../po/../uget/UgetPluginAria2.c:305 +msgid "aria2: HTTP authorization failed." +msgstr "aria2: HTTP tasdiqdan o‘tish amalga oshmadi." + +#: ../../po/../uget/UgetPluginAria2.c:306 +msgid "aria2: could not parse bencoded file(usually .torrent file)." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:307 +msgid "aria2: torrent file was corrupted or missing information." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:308 +msgid "aria2: Magnet URI was bad." +msgstr "aria2: Magnet URI manzili yomon edi." + +#: ../../po/../uget/UgetPluginAria2.c:309 +msgid "" +"aria2: bad/unrecognized option was given or unexpected option argument was " +"given." +msgstr "" + +#: ../../po/../uget/UgetPluginAria2.c:310 +msgid "aria2: remote server was unable to handle the request." +msgstr "aria2: masofaddagi server so‘rovni ishlay olmadi." + +#: ../../po/../uget/UgetPluginAria2.c:311 +msgid "aria2: could not parse JSON-RPC request." +msgstr "aria2: JSON-RPC so‘rovi tahlil qilinmadi." + +#: ../../po/../uget/UgetPluginAria2.c:314 +msgid "No response. Is aria2 shutdown?" +msgstr "Javob bo‘lmadi. aria2 o‘chirilganmi?" + +#. debug +#: ../../po/../uget/UgetPluginAria2.c:641 +msgid "aria2: gid was removed." +msgstr "aria2: gid o‘chirilgan edi." + +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:46 +msgid "Download Manager" +msgstr "Yuklab olish menejeri" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:48 +msgid "translator-credits" +msgstr "tarjima mualliflari" + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:80 +msgid "uGet Founder: " +msgstr "uGet asoschisi: " + +#: ../../po/../ui-gtk/UgtkAboutDialog.c:81 +msgid "uGet Project Manager: " +msgstr "uGet loyihasi menejeri: " + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:239 +msgid "tasks" +msgstr "ta vazifa" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 +msgid "New from Clipboard" +msgstr "Almashish buferidan yangi" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 +msgid "New Download" +msgstr "Yangi yuklab olish" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 +msgid "Clipboard" +msgstr "Almashish buferi" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 +msgid "Command line" +msgstr "Buyruq qatori" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 +msgid "Error Occurred" +msgstr "Xatolik yuz berdi" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." +msgstr "Yuklab olinayotganda xatolik yuz berdi." + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 +msgid "Download Starting" +msgstr "Yuklab olish boshlanmoqda" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 +msgid "Starting download queue." +msgstr "Yuklash navbati boshlanmoqda" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 +msgid "Download Completed" +msgstr "Yuklab olish tugadi" + +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 +msgid "All queuing downloads have been completed." +msgstr "Barcha navbatga qo‘shilgan yuklab olishlar tugadi." + +#. ---------------------------------------------------- +#. frame for Status (start mode) +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:224 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 +msgid "Status" +msgstr "Holati" + +#. Summary Items - Category +#. Download Columns - Category +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 +msgid "Category" +msgstr "Turkum" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 +msgid "Create new download" +msgstr "Yangi yuklab olish yaratish" + +#. New Download (accelerators) +#. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. New Download +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:59 +msgid "New _Download..." +msgstr "Yangi _yuklanish..." + +#. New Category +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +msgid "New _Category..." +msgstr "Yangi _turkum..." + +#. New Clipboard batch +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +msgid "New Clipboard _batch..." +msgstr "Yangi almashish buferi _paketi..." + +#. New URL Sequence batch +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 +msgid "New _URL Sequence batch..." +msgstr "Yangi _URL davomiylik paketi..." + +#. New Torrent +#. separator +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); +#. New Torrent +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:83 +msgid "New Torrent..." +msgstr "Yangi torrent..." + +#. New Metalink +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:90 +msgid "New Metalink..." +msgstr "Yangi metahavola..." + +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 +msgid "Save all settings" +msgstr "Barcha sozlamalarni saqlash" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 +msgid "Set selected download runnable" +msgstr "Tanlangan yuklab olishni vaqtincha davom etadigan qilish" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 +msgid "Set selected download to pause" +msgstr "Tanlangan yuklab olishni vaqtincha to‘xatsa bo‘ladigan qilish" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 +msgid "Set selected download properties" +msgstr "Tanlangan yuklab olish xossalarini o‘rnatish" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 +msgid "Move selected download up" +msgstr "Tanlangan yuklab olishni yuqoriga o‘tkazish" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 +msgid "Move selected download down" +msgstr "Tanlangan yuklab olishni pastga o‘tkazish" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 +msgid "Move selected download to top" +msgstr "Tanlangan yuklab olishni eng yuqoriga o‘tkazish" + +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 +msgid "Move selected download to bottom" +msgstr "Tanlangan yuklab olishni eng pastga o‘tkazish" + +#: ../../po/../ui-gtk/UgtkApp.c:883 +msgid "New Category" +msgstr "Yangi turkum" + +#: ../../po/../ui-gtk/UgtkApp.c:894 +msgid "Copy - " +msgstr "Nusxa olish - " + +#: ../../po/../ui-gtk/UgtkApp.c:1049 +msgid "Category Properties" +msgstr "Turkum xossalari" + +#: ../../po/../ui-gtk/UgtkApp.c:1063 +msgid "Download Properties" +msgstr "Yuklab olish xossalari" + +#: ../../po/../ui-gtk/UgtkApp.c:1296 +msgid "New Torrent" +msgstr "Yangi Torrent" + +#: ../../po/../ui-gtk/UgtkApp.c:1312 +msgid "New Metalink" +msgstr "Yangi metahavola" + +#: ../../po/../ui-gtk/UgtkApp.c:1321 +msgid "Open Torrent file" +msgstr "Torrent faylini ochish" + +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 +msgid "Open Metalink file" +msgstr "Metahavola faylini ochish" + +#: ../../po/../ui-gtk/UgtkApp.c:1377 +msgid "Failed to save category file." +msgstr "Turkum faylini saqlab bo‘lmadi." + +#: ../../po/../ui-gtk/UgtkApp.c:1397 +msgid "Failed to load category file." +msgstr "Turkum faylini yuklash amalga oshmadi." + +#: ../../po/../ui-gtk/UgtkApp.c:1408 +msgid "Save Category file" +msgstr "Turkum faylini saqlash" + +#: ../../po/../ui-gtk/UgtkApp.c:1426 +msgid "Open Category file" +msgstr "Turkum faylini ochish" + +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + +#. add link +#: ../../po/../ui-gtk/UgtkApp.c:1485 +msgid "Link " +msgstr "Havola: " + +#. add image +#: ../../po/../ui-gtk/UgtkApp.c:1490 +msgid "Image " +msgstr "Rasm: " + +#: ../../po/../ui-gtk/UgtkApp.c:1535 +msgid "Text File" +msgstr "Matn fayli" + +#: ../../po/../ui-gtk/UgtkApp.c:1582 +msgid "Import URLs from HTML file" +msgstr "URL manzillarni HTML faylidan import qilish" + +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 +msgid "Import URLs from text file" +msgstr "URL manzillarni matn faylidan import qilish" + +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 +msgid "Export URLs to text file" +msgstr "URL manzillarni matn fayliga eksport qilish" + +#: ../../po/../ui-gtk/UgtkApp.c:1631 +msgid "URL Sequence batch" +msgstr "URL davomiyligi to‘plami" + +#: ../../po/../ui-gtk/UgtkApp.c:1658 +msgid "No URLs found in clipboard." +msgstr "Vaqtinchalik xotirada URL manzillar topilmadi." + +#: ../../po/../ui-gtk/UgtkApp.c:1667 +msgid "All URLs had existed." +msgstr "Barcha URL manzillar mavjud." + +#: ../../po/../ui-gtk/UgtkApp.c:1672 +msgid "Clipboard batch" +msgstr "Almashish buferi paketi" + +#: ../../po/../ui-gtk/UgtkApp.c:1762 +msgid "New" +msgstr "Yangi" + +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 +msgid "Error" +msgstr "Xato" + +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 +msgid "Message" +msgstr "Xabar" + +#: ../../po/../ui-gtk/UgtkApp.c:1927 +#, c-format +msgid "Selected %d items" +msgstr "%d ta element tanlandi" + +#: ../../po/../ui-gtk/UgtkBanner.c:145 ../../po/../ui-gtk/UgtkBanner.c:165 +msgid "Attention uGetters:" +msgstr "uGetters’ga diqqat qiling:" + +#: ../../po/../ui-gtk/UgtkBanner.c:148 +msgid "" +"we are running a Donation Drive for uGet's Future Development, please click " +msgstr "uGet dasturini kelajakda rivojlantirish uchun xayriya loyihasini ishga tushirdik. Yordam berish uchun " + +#: ../../po/../ui-gtk/UgtkBanner.c:151 +msgid "HERE" +msgstr "BU YERGA BOSING!" + +#: ../../po/../ui-gtk/UgtkBanner.c:168 +msgid "please fill out this quick User Survey for uGet." +msgstr "uGet uchun tezkor foydalanuvchi so‘rovnomasini to‘ldirib bering, iltimos." + +#: ../../po/../ui-gtk/UgtkBanner.c:171 +msgid "click here to take survey" +msgstr "" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:62 +msgid "Category _name:" +msgstr "" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:82 +msgid "Active _downloads:" +msgstr "" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:92 +msgid "Capacity of Finished:" +msgstr "" + +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); +#: ../../po/../ui-gtk/UgtkCategoryForm.c:102 +msgid "Capacity of Recycled:" +msgstr "" + +#. ------------------------------------------------------------------------ +#. URI Matching conditions +#: ../../po/../ui-gtk/UgtkCategoryForm.c:111 +msgid "URI Matching conditions" +msgstr "" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:118 +msgid "Matched _Hosts:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:129 +msgid "Matched _Schemes:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkCategoryForm.c:140 +msgid "Matched _Types:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 +msgid "Really Quit?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:65 +msgid "Are you sure you want to quit?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:69 +msgid "Really delete files?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:70 +msgid "Are you sure you want to delete files?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:74 +msgid "Really delete category?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:75 +msgid "Are you sure you want to delete category?" +msgstr "" + +#: ../../po/../ui-gtk/UgtkConfirmDialog.c:109 +msgid "Don't ask me again" +msgstr "Yana soʻralmasin" + +#. URL - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:111 +#: ../../po/../ui-gtk/UgtkSequence.c:63 +msgid "_URI:" +msgstr "_URI:" + +#. Mirrors - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:130 +msgid "Mirrors:" +msgstr "Oynalar:" + +#. File - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:146 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 +msgid "File:" +msgstr "Fayl:" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:166 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 +msgid "Select Folder" +msgstr "Jildni tanlash" + +#. Folder - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:174 +msgid "_Folder:" +msgstr "_Jild:" + +#. Referrer - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:189 +msgid "Referrer:" +msgstr "" + +#. "Max Connections:" - title label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:212 +msgid "_Max Connections:" +msgstr "_Maksimal ulanishlar:" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:230 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 +msgid "_Runnable" +msgstr "_Yangilanadigan" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:232 +msgid "P_ause" +msgstr "P_auza" + +#. ---------------------------------------------------- +#. frame for login +#: ../../po/../ui-gtk/UgtkDownloadForm.c:238 +msgid "Login" +msgstr "Kirish" + +#. User - label +#. user label & entry +#: ../../po/../ui-gtk/UgtkDownloadForm.c:252 +#: ../../po/../ui-gtk/UgtkProxyForm.c:149 +msgid "User:" +msgstr "Foydalanuvchi:" + +#. Password - label +#. password label & entry +#: ../../po/../ui-gtk/UgtkDownloadForm.c:268 +#: ../../po/../ui-gtk/UgtkProxyForm.c:160 +msgid "Password:" +msgstr "Parol:" + +#. label - cookie file +#: ../../po/../ui-gtk/UgtkDownloadForm.c:293 +msgid "Cookie file:" +msgstr "Kuki fayli:" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:310 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 +msgid "Select Cookie File" +msgstr "Kuki faylini tanlash" + +#. label - post file +#: ../../po/../ui-gtk/UgtkDownloadForm.c:319 +msgid "Post file:" +msgstr "Post fayli" + +#: ../../po/../ui-gtk/UgtkDownloadForm.c:336 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 +msgid "Select Post File" +msgstr "Post faylini tanlash" + +#. label - user agent +#: ../../po/../ui-gtk/UgtkDownloadForm.c:346 +msgid "User Agent:" +msgstr "Foydalanuvchi agent" + +#. Retry limit - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:362 +msgid "Retry _limit:" +msgstr "_Qayta urinish cheklovi:" + +#. counts - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:377 +msgid "counts" +msgstr "miqdori" + +#. Retry delay - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:384 +msgid "Retry _delay:" +msgstr "Qayta urinish _orasi:" + +#. seconds - label +#: ../../po/../ui-gtk/UgtkDownloadForm.c:399 +msgid "seconds" +msgstr "soniya" + +#. label - Max upload speed +#: ../../po/../ui-gtk/UgtkDownloadForm.c:406 +msgid "Max upload speed:" +msgstr "Maksimal yuklash tezligi:" + +#. label - "KiB/s" +#: ../../po/../ui-gtk/UgtkDownloadForm.c:418 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:436 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 +msgid "KiB/s" +msgstr "KiB/s" + +#. label - Max download speed +#: ../../po/../ui-gtk/UgtkDownloadForm.c:424 +msgid "Max download speed:" +msgstr "Maksimal yuklab olish tezligi:" + +#. Retrieve timestamp +#: ../../po/../ui-gtk/UgtkDownloadForm.c:442 +msgid "Retrieve timestamp" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:51 +msgid "_File" +msgstr "_Fayl" + +#. Batch Downloads --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:94 +msgid "_Batch Downloads" +msgstr "" + +#. Batch downloads - Clipboard batch +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:100 +msgid "_Clipboard batch..." +msgstr "" + +#. Batch downloads - URL Sequence batch +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:110 +msgid "_URL Sequence batch..." +msgstr "" + +#. Batch downloads - Text file import (.txt) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:120 +msgid "_Text file import (.txt)..." +msgstr "" + +#. Batch downloads - HTML file import (.html) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:130 +msgid "_HTML file import (.html)..." +msgstr "_HTML faylni (.html) import qilish..." + +#. Batch downloads - Export to Text file (.txt) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:142 +msgid "_Export to Text file (.txt)..." +msgstr "Matn fayilga (.txt) eksport qilish..." + +#. Open Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 +msgid "_Open category..." +msgstr "Turkumni _ochish..." + +#. Save Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 +msgid "_Save category as..." +msgstr "Turkumni _saqlash..." + +#. Save All +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 +msgid "Save _all settings" +msgstr "_Barcha sozlamalarni saqlash" + +#. Offline mode +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 +msgid "Offline Mode" +msgstr "Oflayn rejimi" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 +msgid "_Edit" +msgstr "&Tahrirlash" + +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); +#. Settings shortcut +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:99 +msgid "Clipboard _Monitor" +msgstr "Vaqtinchqlik xotirani _nazorat qilish" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:103 +msgid "Clipboard works quietly" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:107 +msgid "Command-line works quietly" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:111 +msgid "Skip existing URI" +msgstr "" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:115 +msgid "Apply recent download settings" +msgstr "" + +#. --- Completion Auto-Actions --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 +msgid "Completion _Auto-Actions" +msgstr "Tugaganda keyingi amallar" + +#. Completion Auto-Actions - Disable +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 +msgid "_Disable" +msgstr "_O‘chirib qo‘yish" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 +msgid "Hibernate" +msgstr "Uyquga ketish" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 +msgid "Suspend" +msgstr "To‘xtatib turish" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 +msgid "Shutdown" +msgstr "Tizimni o‘chirish" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 +msgid "Reboot" +msgstr "Qayta ishga tushirish" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 +msgid "Custom" +msgstr "Boshqa" + +#. Completion Auto-Actions - Remember +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 +msgid "Remember setting" +msgstr "Sozlamasi eslab qolish" + +#. Completion Auto-Actions - Help +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:279 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:682 +msgid "_Help" +msgstr "_Yordam" + +#. --- Completion Auto-Actions --- end --- +#. menu_item = gtk_menu_item_new_with_mnemonic (_("_Settings...")); +#. Settings +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:285 +#: ../../po/../ui-gtk/UgtkTrayIcon.c:122 +msgid "_Settings..." +msgstr "_Sozlamalar..." + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:304 +msgid "_View" +msgstr "_Ko‘rinishi" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:308 +msgid "_Toolbar" +msgstr "_Asboblar paneli" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:313 +msgid "Statusbar" +msgstr "Holat paneli" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:323 +msgid "_Summary" +msgstr "_Natija" + +#. Summary Items --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:331 +msgid "Summary _Items" +msgstr "_Elementlar natijasi" + +#. Summary Items - Name +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:336 +msgid "_Name" +msgstr "_Nomi" + +#. Summary Items - Folder +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:341 +msgid "_Folder" +msgstr "_Jild" + +#. Summary Items - Elapsed +#. menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Elapsed")); +#. gtk_check_menu_item_set_active ((GtkCheckMenuItem*) menu_item, TRUE); +#. gtk_menu_shell_append ((GtkMenuShell*) submenu, menu_item); +#. menubar->view.summary_items.elapsed = menu_item; +#. Summary Items - URL +#. Download Columns - URL +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:356 +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:436 +msgid "_URL" +msgstr "_URL" + +#. Summary Items - Message +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:361 +msgid "_Message" +msgstr "_Xabar" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:376 +msgid "Download _Columns" +msgstr "Yuklab olish _ustunlari" + +#. Download Columns - Complete +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 +msgid "_Complete" +msgstr "_Tugatish" + +#. Download Columns - Total +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:386 +msgid "_Size" +msgstr "_Hajmi" + +#. Download Columns - Percent (%) +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:391 +msgid "_Percent '%'" +msgstr "_Foiz '%'" + +#. Download Columns - Elapsed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:396 +msgid "_Elapsed" +msgstr "_Sarflangan vaqt" + +#. Download Columns - Left +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:401 +msgid "_Left" +msgstr "_Qolgan vaqt" + +#. Download Columns - Speed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 +msgid "Speed" +msgstr "Tezlik" + +#. Download Columns - Up Speed +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 +msgid "Up Speed" +msgstr "Tezlikni oshirish" + +#. Download Columns - Uploaded +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 +msgid "Uploaded" +msgstr "Yuklandi" + +#. Download Columns - Ratio +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 +msgid "Ratio" +msgstr "Nisbat" + +#. Download Columns - Retry +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:426 +msgid "_Retry" +msgstr "_Qayta urinish" + +#. Download Columns - Added On +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 +msgid "Added On" +msgstr "Qo‘shilgan" + +#. Download Columns - Completed On +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 +msgid "Completed On" +msgstr "Tugallangan" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:461 +msgid "_Category" +msgstr "_Turkum" + +#. New Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:466 +msgid "_New Category..." +msgstr "_Yangi turkum..." + +#. Delete Category +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:476 +msgid "_Delete Category" +msgstr "_Turkumni o‘chirish" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:517 +msgid "_Download" +msgstr "_Yuklab olish" + +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 +msgid "_Delete Entry" +msgstr "_Kiritilganni o‘chirish" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 +msgid "Delete Entry and _File" +msgstr "Kiritilgan va _Faylni o‘chirish" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 +msgid "Open _Containing folder" +msgstr "_Saqlangan jildni ochish" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 +msgid "Force Start" +msgstr "Majburiy boshlash" + +#. Move to --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:596 +msgid "_Move To" +msgstr "_Ko‘chirish" + +#. Priority --- start --- +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:645 +msgid "Priority" +msgstr "Muhimligi" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:654 +msgid "_High" +msgstr "_Yuqori" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:659 +msgid "_Normal" +msgstr "_O‘rtacha" + +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:664 +msgid "_Low" +msgstr "_Past" + +#. Get Help Online +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:687 +msgid "Get Help Online" +msgstr "Onlayn yordam olish" + +#. Documentation +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:698 +msgid "Documentation" +msgstr "Qo‘llanma" + +#. Support Forum +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:709 +msgid "Support Forum" +msgstr "Yordam forumi" + +#. Submit Feedback +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:720 +msgid "Submit Feedback" +msgstr "Fikr bildirish" + +#. Report a Bug +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:731 +msgid "Report a Bug" +msgstr "Nosozlik haqida xabar berish" + +#. Keyboard Shortcuts +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:742 +msgid "Keyboard Shortcuts" +msgstr "Tugmalar birikmasi" + +#. Check for Updates +#: ../../po/../ui-gtk/UgtkMenubar-ui.c:749 +msgid "Check for Updates" +msgstr "Yangilanishlar uchun tekshirish" + +#: ../../po/../ui-gtk/UgtkMenubar.c:187 +msgid "Settings" +msgstr "Sozlamalar" + +#: ../../po/../ui-gtk/UgtkMenubar.c:454 +#, c-format +msgid "Can't launch default application for file '%s'." +msgstr "'%s' fayli uchun standart ilova dastur ishga tushmadi." + +#: ../../po/../ui-gtk/UgtkMenubar.c:486 +#, c-format +msgid "'%s' - This folder does not exist." +msgstr "'%s' - Ushbu jild mavjud emas." + +#. title +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 +msgid "URI had existed" +msgstr "Bunday URI mavjud" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 +msgid "This URI had existed, are you sure to continue?" +msgstr "Ushbu URI mavjud. Davom etishni xohlaysizmi?" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +msgid "General" +msgstr "Umumiy" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +msgid "Advanced" +msgstr "Qo‘shimcha" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 +msgid "Category settings" +msgstr "Turkum sozlamalari" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 +msgid "Default for new download 1" +msgstr "1-yangi yuklab olish uchun standart" + +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 +msgid "Default 2" +msgstr "Standart 2" + +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 +msgid "unnamed" +msgstr "nomsiz" + +#: ../../po/../ui-gtk/UgtkNodeView.c:641 +msgid "Paused" +msgstr "Vaqtincha to‘xtatildi" + +#: ../../po/../ui-gtk/UgtkNodeView.c:642 +msgid "Uploading" +msgstr "Saytga yuklanmoqda" + +#: ../../po/../ui-gtk/UgtkNodeView.c:643 +msgid "Completed" +msgstr "Tugadi" + +#: ../../po/../ui-gtk/UgtkNodeView.c:645 +msgid "Recycled" +msgstr "Chiqindiga tashlangan" + +#: ../../po/../ui-gtk/UgtkNodeView.c:646 +msgid "Queuing" +msgstr "Navbatda" + +#: ../../po/../ui-gtk/UgtkNodeView.c:647 +msgid "Active" +msgstr "Faol" + +#: ../../po/../ui-gtk/UgtkNodeView.c:668 +msgid "All Status" +msgstr "Barcha holat" + +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 +msgid "Name" +msgstr "Nomi" + +#: ../../po/../ui-gtk/UgtkNodeView.c:790 +msgid "Complete" +msgstr "Tugatish" + +#: ../../po/../ui-gtk/UgtkNodeView.c:804 +msgid "Size" +msgstr "Hajmi" + +#: ../../po/../ui-gtk/UgtkNodeView.c:819 +msgid "%" +msgstr "%" + +#: ../../po/../ui-gtk/UgtkNodeView.c:833 +msgid "Elapsed" +msgstr "O‘tgan vaqt" + +#: ../../po/../ui-gtk/UgtkNodeView.c:847 +msgid "Left" +msgstr "Qolgan vaqt" + +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 +msgid "URI" +msgstr "URI" + +#: ../../po/../ui-gtk/UgtkNodeView.c:997 +msgid "Quantity" +msgstr "Miqdori" + +#. proxy type label & combo box +#: ../../po/../ui-gtk/UgtkProxyForm.c:64 +msgid "Proxy:" +msgstr "Proksi:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:67 +msgid "Don't use" +msgstr "Foydalanmang" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:69 +msgid "Default" +msgstr "Standart" + +#. host label & entry +#: ../../po/../ui-gtk/UgtkProxyForm.c:121 +msgid "Host:" +msgstr "Host:" + +#. port label & entry +#: ../../po/../ui-gtk/UgtkProxyForm.c:132 +msgid "Port:" +msgstr "Port:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 +msgid "Socket:" +msgstr "Sokket:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 +msgid "Socket args:" +msgstr "Sokket argumentlari:" + +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 +msgid "Element:" +msgstr "Element:" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 +msgid "Mon" +msgstr "Dush" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 +msgid "Tue" +msgstr "Sesh" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 +msgid "Wed" +msgstr "Chor" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 +msgid "Thu" +msgstr "Pay" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 +msgid "Fri" +msgstr "Jum" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 +msgid "Sat" +msgstr "Shan" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 +msgid "Sun" +msgstr "Yak" + +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 +msgid "_Enable Scheduler" +msgstr "Rejalashtirgichni _yoqish" + +#. Turn off - label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 +msgid "Turn off" +msgstr "O‘chirish" + +#. Turn off - help label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 +msgid "- stop all task" +msgstr "- barcha vazifalarni to‘xtatish" + +#. Normal - label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 +msgid "Normal" +msgstr "O‘rtacha" + +#. Normal - help label +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 +msgid "- run task normally" +msgstr "- vazifani o‘rtacha bajarish" + +#: ../../po/../ui-gtk/UgtkSelector.c:254 +msgid "All" +msgstr "Barchasi" + +#: ../../po/../ui-gtk/UgtkSelector.c:259 +msgid "None" +msgstr "Yo‘q" + +#: ../../po/../ui-gtk/UgtkSelector.c:276 +msgid "Mark by filter" +msgstr "Filter bo‘yicha belgilash" + +#: ../../po/../ui-gtk/UgtkSelector.c:294 +msgid "Mark URLs by host AND filename extension." +msgstr "URL manzillarni host va fayl nomi kengaytmasi bo‘yicha belgilash" + +#: ../../po/../ui-gtk/UgtkSelector.c:297 +msgid "This will reset all marks of URLs." +msgstr "U barcha URL belgilashlarni tiklaydi." + +#. filter view ----------------------- +#. left side +#: ../../po/../ui-gtk/UgtkSelector.c:305 +msgid "Host" +msgstr "Host" + +#. right side (filename extension) +#: ../../po/../ui-gtk/UgtkSelector.c:309 +msgid "File Ext." +msgstr "Fayl keng." + +#: ../../po/../ui-gtk/UgtkSelector.c:449 +msgid "URL" +msgstr "URL" + +#: ../../po/../ui-gtk/UgtkSelector.c:781 +msgid "Base hypertext reference" +msgstr "" + +#. select all +#: ../../po/../ui-gtk/UgtkSelector.c:797 +msgid "Mark _All" +msgstr "_Barchasini belgilash" + +#. select none +#: ../../po/../ui-gtk/UgtkSelector.c:801 +msgid "Mark _None" +msgstr "_Yo‘q deb belgilash" + +#. select by filter +#: ../../po/../ui-gtk/UgtkSelector.c:805 +msgid "_Mark by filter..." +msgstr "" + +#. e.g. +#: ../../po/../ui-gtk/UgtkSequence.c:74 +msgid "e.g." +msgstr "mas-n:" + +#. ------------------------------------------------------- +#. radio "From" +#: ../../po/../ui-gtk/UgtkSequence.c:85 +msgid "_From:" +msgstr "" + +#. label "To" +#: ../../po/../ui-gtk/UgtkSequence.c:108 +msgid "To:" +msgstr "" + +#. label "digits" +#: ../../po/../ui-gtk/UgtkSequence.c:123 +msgid "digits:" +msgstr "raqamlar:" + +#: ../../po/../ui-gtk/UgtkSequence.c:132 +msgid "F_rom:" +msgstr "" + +#. label case-sensitive +#: ../../po/../ui-gtk/UgtkSequence.c:162 +msgid "case-sensitive" +msgstr "katta-kichik harflarni farqlash" + +#: ../../po/../ui-gtk/UgtkSequence.c:188 +msgid "No wildcard(*) character in URL entry." +msgstr "" + +#: ../../po/../ui-gtk/UgtkSequence.c:192 +msgid "URL is not valid." +msgstr "URL noto‘g‘ri." + +#: ../../po/../ui-gtk/UgtkSequence.c:196 +msgid "No character in 'From' or 'To' entry." +msgstr "" + +#: ../../po/../ui-gtk/UgtkSequence.c:311 +msgid "Preview" +msgstr "Ko‘rinishi" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 +msgid "User Interface" +msgstr "Foydalanish interfeysi" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 +msgid "Bandwidth" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 +msgid "Scheduler" +msgstr "Rejalashtirgich" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 +msgid "Plug-in" +msgstr "Plagin" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 +msgid "Others" +msgstr "Boshqalar" + +#. Monitor button +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 +msgid "_Enable clipboard monitor" +msgstr "" + +#. quiet mode +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 +msgid "_Quiet mode" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 +msgid "Default category index" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 +msgid "Adding to Nth category if no matched category." +msgstr "" + +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 +msgid "Monitor clipboard for specified file types:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 +msgid "Separate the types with character '|'." +msgstr "Fayl turlarini ajratish uchun '|' belgisidan foydalaning." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 +msgid "You can use regular expressions here." +msgstr "Siz muntazam ifodalardan bu yerda foydalanishingiz mumkin." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 +msgid "Confirmation" +msgstr "Tasdiqlash" + +#. Confirmation check buttons +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 +msgid "Show confirmation dialog on exit" +msgstr "Chiqishda tasdiqlash oynasini ko‘rsatish" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 +msgid "Confirm when deleting files" +msgstr "Fayllar o‘chirilayotganda tasdiqlash" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 +msgid "System Tray" +msgstr "Tizim nishonchasi" + +#. System Tray check buttons +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 +msgid "Always show tray icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 +msgid "Minimize to tray on startup" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 +msgid "Close to tray on window close" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 +msgid "Use Ubuntu's App Indicator" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 +msgid "Enable offline mode on startup" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 +msgid "Download starting notification" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 +msgid "Sound when download is finished" +msgstr "" + +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 +msgid "These will affect all plug-ins." +msgstr "" + +#. Global speed limit +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 +msgid "Global speed limit" +msgstr "Global tezlik cheklovi" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 +msgid "Max upload speed" +msgstr "Maksimal yuklash tezligi" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +msgid "Max download speed" +msgstr "Maksimal yuklab olish tezligi" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 +msgid "Completion Auto-Actions" +msgstr "Tugaganda keyingi amallar" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 +msgid "Custom command:" +msgstr "Boshqa buyruq:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 +msgid "Custom command if error occured:" +msgstr "Boshqa xato yuz bersa, boshqa buyruq:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 +msgid "_Autosave" +msgstr "_Autosaqlash" + +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 +msgid "_Interval:" +msgstr "_Interval:" + +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "daqiqa" + +#. Commandline Settings +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 +msgid "Commandline Settings" +msgstr "Buyruqlar qatori sozlamalari" + +#. --quiet +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 +msgid "Use '--quiet' by default" +msgstr "Joriy holat bo‘yicha '--quiet' buyrug‘ida foydalaning" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 +msgid "Plug-in matching order:" +msgstr "Plagin mosligi tartibi:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 +msgid "Aria2 plug-in options" +msgstr "Aria2 plug-in moslamalari" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 +msgid "RPC authorization secret token" +msgstr "" + +#. ------------------------------------------------------------------------ +#. Speed Limits +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 +msgid "Global speed limit for aria2 only" +msgstr "Faqat aria2 uchun global tezlik cheklov" + +#. ------------------------------------------------------------------------ +#. aria2 works on local device +#. launch +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 +msgid "_Launch aria2 on startup" +msgstr "aria2’ni tizim bilan birga ishga tushirish" + +#. shutdown +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 +msgid "_Shutdown aria2 on exit" +msgstr "aria2’dan chiqishda _o‘chirish" + +#. ------------------------------------------------------------------------ +#. Local options +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 +msgid "Launch aria2 on local device" +msgstr "aria2’ni kompyuterda ishga tushirish" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 +msgid "Path" +msgstr "Yo‘l" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 +msgid "Arguments" +msgstr "Argumentlar" + +#. Arguments - hint +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 +msgid "You must restart uGet after modifying it." +msgstr "uGet moslangandan so‘ng qayta ishga tushirish kerak." + +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 +msgid "File" +msgstr "Fayl" + +#: ../../po/../ui-gtk/UgtkSummary.c:119 +msgid "Folder" +msgstr "Jild" + +#: ../../po/../ui-gtk/UgtkSummary.c:262 +msgid "Item" +msgstr "Element" + +#: ../../po/../ui-gtk/UgtkSummary.c:267 +msgid "Value" +msgstr "Qiymat" + +#. Copy All +#: ../../po/../ui-gtk/UgtkSummary.c:299 +msgid "Copy _All" +msgstr "_Barchasidan nusxa olish" + +#. Show window +#: ../../po/../ui-gtk/UgtkTrayIcon.c:141 +msgid "Show window" +msgstr "Oynani ko‘rsatish" + +#. Offline mode +#: ../../po/../ui-gtk/UgtkTrayIcon.c:147 +msgid "_Offline Mode" +msgstr "Oflayn rejimi" diff -Nru uget-2.0.2/po/vi.po uget-2.2.2/po/vi.po --- uget-2.0.2/po/vi.po 2015-09-11 12:14:43.000000000 +0000 +++ uget-2.2.2/po/vi.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,20 +3,19 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Anh Phan , 2013-2014 # Tran Thai Hoa , 2015 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-07-21 07:01+0000\n" -"Last-Translator: Tran Thai Hoa \n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: Michael Tunnell \n" "Language-Team: Vietnamese (http://www.transifex.com/uget/uget/language/vi/)\n" -"Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../po/../uget/pwmd.c:32 @@ -24,15 +23,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" msgstr "" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "Danh mục" @@ -47,7 +43,7 @@ msgstr "Đang truyền dữ liệu..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "Thử lại" @@ -57,7 +53,7 @@ msgstr "Tải về hoàn tất" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "Đã xong" @@ -68,12 +64,12 @@ msgstr "Có thể phục hồi lại" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "Không thể phục hồi lại" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "Không thể đổi tên tập tin đầu ra." @@ -83,15 +79,14 @@ msgstr "không thể kết nối đến máy chủ." #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "Không thể tạo thư mục." #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:83 msgid "File can't be created (bad filename or file exist)." -msgstr "" -"Không thể tạo thư mục (tên tập tin không hợp lệ hoặc tập tin không tồn tại)." +msgstr "Không thể tạo thư mục (tên tập tin không hợp lệ hoặc tập tin không tồn tại)." #. UGET_EVENT_ERROR_FILE_CREATE_FAILED #: ../../po/../uget/UgetEvent.c:84 @@ -111,9 +106,7 @@ #. UGET_EVENT_ERROR_INCORRECT_SOURCE, #: ../../po/../uget/UgetEvent.c:87 msgid "Out of resource (disk full or run out of memory)." -msgstr "" -"Nguồn tài nguyên bị giới hạn (ổ đĩa không đủ dung lượng hoặc không đủ bộ " -"nhớ)." +msgstr "Nguồn tài nguyên bị giới hạn (ổ đĩa không đủ dung lượng hoặc không đủ bộ nhớ)." #. UGET_EVENT_ERROR_OUT_OF_RESOURCE #: ../../po/../uget/UgetEvent.c:88 @@ -150,134 +143,158 @@ msgid "cookie file not found." msgstr "" +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: Lỗi không xác định" -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: Qúa thời gian" -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: Nguồn không tồn tại" -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: Tốc độ qúa chậm" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: Mạng có vấn đề" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: Không hoàn thành tải" #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "Vượt qúa tài nguyên" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 đang tải tệp tương tự" -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "" #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "" #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "Quá nhiều lần chuyển hướng." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: HTTP xác thực thất bại" -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: tệp torrent bị lỗi hoặc thiếu thông tin" -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: Magnet URI qúa tệ" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "Không có phản hồi. Aria2 sẽ tắt?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "" +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "Trình quản lý" @@ -294,251 +311,266 @@ msgid "uGet Project Manager: " msgstr "" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "các tác vụ" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "Tạo phần tải về mới từ bộ nhớ ảo" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "Tạo một phần tải về mới" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "Bộ nhớ ảo" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "Chế độ dòng lệnh" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "Xảy ra lỗi" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "Lỗi trong khi tải" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "Đang bắt đầu tải về" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "Đang bắt đầu tải về đối tượng trong danh sách đợi." -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "Tiến Trình Tải Về Đã Hoàn Tất" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." -msgstr "" -"Tiến trình tải về của toàn bộ các đối tượng trong danh sách đợi đã được hoàn " -"tất." +msgstr "Tiến trình tải về của toàn bộ các đối tượng trong danh sách đợi đã được hoàn tất." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "Trạng thái" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "Phân loại" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "Tạo một phần tải về mới" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "Tạo phần tải _về mới..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "Tạo _phân loại mới..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "Truyền dữ liệu mới _từ bộ nhớ ảo..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "Tạo chuỗi đường dẫn liên tiếp _mới..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "Tạo torrent mới..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "Tạo mới metalink..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "Lưu toàn bộ thiết lập" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "Chỉnh các các phần tải về đã chọn có thể chạy được" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "Chỉnh các các phần tải về đã chọn có thể tạm dừng được" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "Chỉnh thuộc tính các các phần tải về đã chọn" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "Di chuyển các phần tải về đã chọn lên trên" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "Di chuyển các phần tải về đã chọn xuống dưới" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "Di chuyển các phần tải về đã chọn lên trên cùng" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "Di chuyển các phần tải về đã chọn xuống dưới cùng" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "Phân loại mới" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "Sao chép -" -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "Thuộc tính của phân loại" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "Thuộc tính tải về" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "Tạo torrent mới" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "Tạo mới metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "Mở tập tin torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "Mở tập tin metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " msgstr "Liên kết" #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "Hình ảnh" -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "Tập tin Văn bản" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "Nhập đường dẫn liên kết từ tập tin HTML" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "Nhập đường dẫn liên kết từ tập tin văn bản" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "Chuỗi đường dẫn liên tiếp" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "Không tìm thấy chuỗi đường dẫn liên tiếp trong bộ nhớ ảo." -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "" -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "Chuyển dữ liệu từ bộ nhớ ảo sang" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "Mới" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "Xảy ra lỗi" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "Thông báo" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "Đã chọn %d đối tượng" @@ -550,9 +582,7 @@ #: ../../po/../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " -msgstr "" -"chúng tôi hiện đang nhận sự ủng hộ tài chính để có thể phát triển dự án hơn " -"nữa, hãy click vào" +msgstr "chúng tôi hiện đang nhận sự ủng hộ tài chính để có thể phát triển dự án hơn nữa, hãy click vào" #: ../../po/../ui-gtk/UgtkBanner.c:151 msgid "HERE" @@ -570,14 +600,17 @@ msgid "Category _name:" msgstr "Tên _phân loại:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "Các _phần tải về đang được thực thi:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "Mức độ hoàn thành:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "Công suất tái chế:" @@ -630,7 +663,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "_URI:" @@ -641,12 +674,12 @@ #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "Tập tin:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "Chọn thư mục" @@ -700,7 +733,7 @@ msgstr "Các tập tin cookie:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "Chọn tập tin Cookie" @@ -710,7 +743,7 @@ msgstr "Tập tin post:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "Chọn tập tin post" @@ -747,10 +780,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/giây" @@ -822,7 +855,8 @@ msgid "_Edit" msgstr "_Chỉnh sửa" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -845,9 +879,9 @@ msgstr "" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "Áp dụng các thiết lập tải về gần đây" #. --- Completion Auto-Actions --- start --- @@ -951,7 +985,7 @@ msgid "Download _Columns" msgstr "Cột hiển thị tải _về" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "_Hoàn tất" @@ -978,25 +1012,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "Tốc độ" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "Tốc độ tải lên" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "Đã tải lên" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "Tỉ lệ" @@ -1007,13 +1041,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "_Được thêm vào" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "_Đã hoàn tất vào" @@ -1035,7 +1069,8 @@ msgid "_Download" msgstr "_Tải về" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "" @@ -1109,116 +1144,116 @@ msgid "Check for Updates" msgstr "Kiểm tra cập nhật" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "Thiết lập" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "Không thể khởi chạy ứng dụng mặc định dành cho việc mở tập tin '%s'." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - Thư mục này không tồn tại." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "URI đã tồn tại" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "URI này đã tồn tại, bạn có muốn tiếp tục?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "Tổng quan" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "Nâng cao" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "Thiết lập phân loại" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "Mặc định cho phần tải về 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "Mặc định 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "Chưa đặt tên" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "Tạm dừng" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "Đang gửi" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "Đã xong" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "Thùng rác" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "Đang đợi" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "Đang hoạt động" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "Mọi trạng thái" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "Tên" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "Hoàn tất" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "Kích thước" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "Đã trôi qua" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "Còn lại" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "Số lượng" @@ -1245,67 +1280,67 @@ msgid "Port:" msgstr "Cổng kết nối:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Socket :" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Đối số mã mạng:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Phần tử :" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "T2" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "T3" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "T4" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "T5" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "T6" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "T7" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "CN" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "_Bật phần thời khóa biểu tải" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "Tắt" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- dừng lại tất cả các tác vụ" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "Bình thường" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "-chạy tác vụ bình thường" @@ -1327,8 +1362,7 @@ #: ../../po/../ui-gtk/UgtkSelector.c:297 msgid "This will reset all marks of URLs." -msgstr "" -"Phần này sẽ cài đặt lại toàn bộ phần đánh dấu của các đường dẫn liên kết." +msgstr "Phần này sẽ cài đặt lại toàn bộ phần đánh dấu của các đường dẫn liên kết." #. filter view ----------------------- #. left side @@ -1365,271 +1399,306 @@ msgstr "_Đánh dấu dựa vào phần lọc dữ liệu..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "Ví dụ:" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" msgstr "_Từ:" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "_Đến:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "chữ số:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "T_ừ :" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "phân biệt chữ hoa-thường" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "Không có ký tự (*) trong mục nhập URL." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "Đường dẫn liên kết không hợp lệ." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." msgstr "Không có ký tự trong mục 'Từ' hoặc 'Đến'." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "Xem sơ lược" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "Giao diện người dùng" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "Thời khóa biểu" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "Tiện ích" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "Các phần khác" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "_Có thể dùng clipboard" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "_Chế độ im lặng" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "Ngăn cách các loại bằng ký tự '|'." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "Bạn có thể sử dụng biểu thức thông thường ở đây." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "Xác nhận khi xóa các tập tin" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "Khay hệ thống" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "Luôn hiển thị biểu tượng ở khay hệ thống" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "Thu nhỏ xuống khay hệ thống" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "Ẩn tới khay hệ thống khi đóng" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "Bật chế độ offline khi khởi động" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "Thông báo khi bắt đầu tải" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "Phát âm thanh thông báo khi phần tải về đã được hoàn tất" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "" #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "Gửi đi tối đa" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "Tải về tối đa" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "_Tự động lưu" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "phút" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "_Khoảng thời gian:" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "phút" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "Thiết lập chế độ dòng lệnh" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "Sử dụng dòng lệnh '--quiet' theo mặc định" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Cài đặt Aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "_Chạy aria3 khi khởi động" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "_Tắt aria2 khi thoát" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "Chạy aria2 mặc định" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "Đường dẫn" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "Đối số" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "Bạn phải khởi động lại Uget sau khi cài đặt lại nó." -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "Tập tin" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "Thư mục" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "Đối tượng" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "Giá trị" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "Sao chép _tất cả" diff -Nru uget-2.0.2/po/zh_CN.po uget-2.2.2/po/zh_CN.po --- uget-2.0.2/po/zh_CN.po 2015-09-11 12:14:43.000000000 +0000 +++ uget-2.2.2/po/zh_CN.po 2019-05-19 16:49:06.000000000 +0000 @@ -3,22 +3,22 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Dean Chen , 2015 +# Demon Smith , 2018 +# Dz Chen , 2015-2017 # jiajinming , 2014 # Tommy He , 2014 msgid "" msgstr "" "Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: 2015-07-31 06:40+0000\n" -"Last-Translator: Dean Chen \n" -"Language-Team: Chinese (China) (http://www.transifex.com/uget/uget/language/" -"zh_CN/)\n" -"Language: zh_CN\n" +"POT-Creation-Date: 2016-06-03 03:10+0800\n" +"PO-Revision-Date: 2018-02-24 10:55+0000\n" +"Last-Translator: Demon Smith \n" +"Language-Team: Chinese (China) (http://www.transifex.com/uget/uget/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../po/../uget/pwmd.c:32 @@ -26,15 +26,12 @@ msgid "" "Password Manager Daemon: uget\n" "\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" +"While attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n" "\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" +"Would you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?" +msgstr "密码管理器守护程序:uget\n\n当尝试 SSH 连接到 %s 时验证它的 hostkey 到已知和受信任的 hosts 文件出现问题,因为它的 hostkey 并未找到。\n\n您想要将此连接此连接和将来的连接视为受信任的吗?添加 %s's hostkey 到已知的 hosts 文件来完成此操作。" -#: ../../po/../uget/UgetApp.c:96 +#: ../../po/../uget/UgetApp.c:103 msgid "All Category" msgstr "全部分类" @@ -49,7 +46,7 @@ msgstr "传送中..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "重试" @@ -59,7 +56,7 @@ msgstr "下载完成" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "完成" @@ -67,15 +64,15 @@ #. resumable #: ../../po/../uget/UgetEvent.c:64 msgid "Resumable" -msgstr "可恢复" +msgstr "可续传" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:287 msgid "Not Resumable" -msgstr "不可恢复" +msgstr "不可续传" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "无法重命名输出文件。" @@ -85,7 +82,7 @@ msgstr "无法连接到主机。" #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "无法创建文件夹。" @@ -142,150 +139,172 @@ #. UGET_EVENT_ERROR_UNSUPPORTED_FILE #: ../../po/../uget/UgetEvent.c:93 msgid "post file not found." -msgstr "" +msgstr "未找到后处理文件。" #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND #: ../../po/../uget/UgetEvent.c:94 msgid "cookie file not found." -msgstr "" +msgstr "未找到 cookie 文件。" + +#: ../../po/../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "该视频已被移除。" + +#: ../../po/../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "获取视频信息时发生错误。" + +#: ../../po/../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "获取视频网页时发生错误。" + +#: ../../po/../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "未在 YouTube 的 URL 上找到视频 ID" #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../../po/../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: 发生未知的错误。" -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../../po/../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: 发生超时。" -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../../po/../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: 资源未找到。" -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../../po/../uget/UgetPluginAria2.c:283 msgid "" "aria2 saw the specfied number of 'resource not found' error. See --max-file-" "not-found option" msgstr "aria2 遇到指定数量的“资源无法找到”错误。查看 --max-file-not-found 选项" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../../po/../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: 速度过慢。" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../../po/../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: 发生网络问题。" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../../po/../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: 未完成的下载。" #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../../po/../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "资源不可用" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../../po/../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "aria2: 分块长度与 .aria2 配置文件中不同。" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../../po/../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 正在下载相同的文件。" -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../../po/../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 正在下载信息哈希值相同的种子。" -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../../po/../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2: 文件已存在。查看 --allow-overwrite 选项。" #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../../po/../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: 无法打开已存在文件。" -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../../po/../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "aria2: 无法创建新文件或分割已有文件。" -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../../po/../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: 发生文件 I/O 错误。" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../../po/../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: 名称解析失败。" -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../../po/../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: 无法解析 Metalink 文档。" #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../../po/../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: FTP 命令失败。" -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../../po/../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: HTTP 响应头错误或不符预期。" -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../../po/../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "重定向已达上限。" -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../../po/../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: HTTP 认证失败。" -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../../po/../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "aria2: 无法解析 bencoded 文件(通常是 .torrent 文件)。" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../../po/../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: 种子文件损坏或缺少信息。" -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../../po/../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: 磁链 URI 错误。" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../../po/../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "aria2: 配置或者配置参数错误/无法识别。" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../../po/../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2: 远程服务器无法处理请求。" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../../po/../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: 无法解析 JSON-RPC 请求。" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../../po/../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "无响应。aria2 是否已被停止?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../../po/../uget/UgetPluginAria2.c:641 msgid "aria2: gid was removed." msgstr "aria2: gid 已被移除。" +#: ../../po/../uget/UgetPluginMedia.c:489 +msgid "Failed to get media link." +msgstr "获取媒体链接失败。" + +#: ../../po/../uget/UgetPluginMedia.c:505 +msgid "No matched media." +msgstr "没有匹配的媒体。" + #: ../../po/../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "下载管理器" #: ../../po/../ui-gtk/UgtkAboutDialog.c:48 msgid "translator-credits" -msgstr "" -"lh \n" -"Tommy He " +msgstr "lh \nTommy He " #: ../../po/../ui-gtk/UgtkAboutDialog.c:80 msgid "uGet Founder: " @@ -293,251 +312,268 @@ #: ../../po/../ui-gtk/UgtkAboutDialog.c:81 msgid "uGet Project Manager: " -msgstr "uGet 项目经理:" +msgstr "uGet 项目管理员:" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:263 #: ../../po/../ui-gtk/UgtkTrayIcon.c:239 msgid "tasks" msgstr "任务" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:399 msgid "New from Clipboard" msgstr "从剪切板中新建" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:401 ../../po/../ui-gtk/UgtkApp.c:915 msgid "New Download" msgstr "新建下载" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:425 ../../po/../ui-gtk/UgtkApp.c:1679 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "剪切板" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:427 msgid "Command line" msgstr "命令行" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:780 msgid "Error Occurred" msgstr "发生错误" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." +#: ../../po/../ui-gtk/UgtkApp-timeout.c:781 +msgid "Error Occurred during downloading." msgstr "下载时发生错误。" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:782 msgid "Download Starting" msgstr "下载开始" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:783 msgid "Starting download queue." msgstr "开始下载队列。" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:784 msgid "Download Completed" msgstr "下载完成" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../../po/../ui-gtk/UgtkApp-timeout.c:785 msgid "All queuing downloads have been completed." msgstr "队列里所有下载都已完成。" #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 +#: ../../po/../ui-gtk/UgtkApp-ui.c:193 #: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../../po/../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "状态" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 +#: ../../po/../ui-gtk/UgtkApp-ui.c:195 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 #: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:418 +#: ../../po/../ui-gtk/UgtkNodeView.c:932 +#: ../../po/../ui-gtk/UgtkNodeView.c:1020 ../../po/../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "分类" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../../po/../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "创建新下载" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 +#: ../../po/../ui-gtk/UgtkApp-ui.c:289 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 #: ../../po/../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "新建下载(_D)..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../../po/../ui-gtk/UgtkApp-ui.c:300 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "新建分类(_C)..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../../po/../ui-gtk/UgtkApp-ui.c:310 ../../po/../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "剪切板批量下载(_B)..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../../po/../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "新建 URL 序列下载(_U)..." #. New Torrent #. separator -#. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); +#. gtk_menu_shell_append ((GtkMenuShell*)submenu, +#. gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 +#: ../../po/../ui-gtk/UgtkApp-ui.c:335 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 #: ../../po/../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "新建种子..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 +#: ../../po/../ui-gtk/UgtkApp-ui.c:342 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 #: ../../po/../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "新建磁链..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../../po/../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "保存全部设置" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../../po/../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "运行选中的下载" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../../po/../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "暂停选中的下载" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../../po/../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "设置选中的下载的属性" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../../po/../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "上移选中的下载" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../../po/../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "下移选中的下载" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../../po/../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "移动选中的下载到顶部" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../../po/../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "移动选中的下载到底部" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../../po/../ui-gtk/UgtkApp.c:883 msgid "New Category" msgstr "新建分类" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../../po/../ui-gtk/UgtkApp.c:894 msgid "Copy - " msgstr "复制 - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../../po/../ui-gtk/UgtkApp.c:1049 msgid "Category Properties" msgstr "分类属性" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../../po/../ui-gtk/UgtkApp.c:1063 msgid "Download Properties" msgstr "下载属性" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../../po/../ui-gtk/UgtkApp.c:1296 msgid "New Torrent" msgstr "新建种子" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../../po/../ui-gtk/UgtkApp.c:1312 msgid "New Metalink" msgstr "新建磁链" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../../po/../ui-gtk/UgtkApp.c:1321 msgid "Open Torrent file" msgstr "打开种子文件" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../../po/../ui-gtk/UgtkApp.c:1324 +msgid "Torrent file (*.torrent)" +msgstr "种子文件 (*.torrent)" + +#: ../../po/../ui-gtk/UgtkApp.c:1337 msgid "Open Metalink file" msgstr "打开磁链文件" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../../po/../ui-gtk/UgtkApp.c:1377 msgid "Failed to save category file." msgstr "保存分类文件失败。" -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../../po/../ui-gtk/UgtkApp.c:1397 msgid "Failed to load category file." msgstr "载入分类文件失败。" -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../../po/../ui-gtk/UgtkApp.c:1408 msgid "Save Category file" msgstr "保存分类文件" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../../po/../ui-gtk/UgtkApp.c:1426 msgid "Open Category file" msgstr "打开分类文件" +#: ../../po/../ui-gtk/UgtkApp.c:1429 +msgid "JSON file (*.json)" +msgstr "JSON 文件 (*.json)" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../../po/../ui-gtk/UgtkApp.c:1485 msgid "Link " -msgstr "连结 " +msgstr "链接 " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../../po/../ui-gtk/UgtkApp.c:1490 msgid "Image " msgstr "图像 " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../../po/../ui-gtk/UgtkApp.c:1535 msgid "Text File" msgstr "文本文件" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../../po/../ui-gtk/UgtkApp.c:1582 msgid "Import URLs from HTML file" msgstr "从 HTML 文件中导入 URL 地址" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../../po/../ui-gtk/UgtkApp.c:1585 +msgid "HTML file (*.htm, *.html)" +msgstr "HTML 文件 (*.htm, *.html)" + +#: ../../po/../ui-gtk/UgtkApp.c:1597 msgid "Import URLs from text file" msgstr "从文本文件中导入 URL 地址" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../../po/../ui-gtk/UgtkApp.c:1600 +msgid "Plain text file" +msgstr "纯文本文件" + +#: ../../po/../ui-gtk/UgtkApp.c:1612 msgid "Export URLs to text file" msgstr "导出 URL 至文本文件" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../../po/../ui-gtk/UgtkApp.c:1631 msgid "URL Sequence batch" msgstr "URL 序列下载" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../../po/../ui-gtk/UgtkApp.c:1658 msgid "No URLs found in clipboard." msgstr "剪切板中没有找到 URL 地址。" -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../../po/../ui-gtk/UgtkApp.c:1667 msgid "All URLs had existed." msgstr "所有的 URL 已存在。" -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../../po/../ui-gtk/UgtkApp.c:1672 msgid "Clipboard batch" msgstr "剪切板批量下载" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../../po/../ui-gtk/UgtkApp.c:1762 msgid "New" msgstr "新建" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../../po/../ui-gtk/UgtkApp.c:1803 ../../po/../ui-gtk/UgtkMenubar.c:460 +#: ../../po/../ui-gtk/UgtkMenubar.c:492 ../../po/../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "错误" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../../po/../ui-gtk/UgtkApp.c:1811 ../../po/../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "信息" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../../po/../ui-gtk/UgtkApp.c:1927 #, c-format msgid "Selected %d items" msgstr "已选中 %d 个项目" @@ -567,14 +603,17 @@ msgid "Category _name:" msgstr "分类名称(_N):" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "同时进行下载数(_D):" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "\"已完成\"分类的容量:" +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); #: ../../po/../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "\"回收站\"分类的容量:" @@ -627,7 +666,7 @@ #. URL - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../../po/../ui-gtk/UgtkSequence.c:63 msgid "_URI:" msgstr "URI(_U):" @@ -636,14 +675,18 @@ msgid "Mirrors:" msgstr "镜像:" +#: ../ui-gtk/UgtkDownloadForm.c:141 +msgid "Leave blank to use default filename ..." +msgstr "留空以使用默认文件名 ..." + #. File - label #: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../../po/../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "文件:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "选择文件夹" @@ -697,7 +740,7 @@ msgstr "Cookie 文件" #: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "选择 Cookie 文件" @@ -707,7 +750,7 @@ msgstr "发送文件:" #: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../../po/../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "选择发送文件" @@ -744,10 +787,10 @@ #. label - "KiB/s" #: ../../po/../ui-gtk/UgtkDownloadForm.c:418 #: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../../po/../ui-gtk/UgtkSettingForm.c:311 +#: ../../po/../ui-gtk/UgtkSettingForm.c:323 +#: ../../po/../ui-gtk/UgtkSettingForm.c:612 +#: ../../po/../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" @@ -819,7 +862,8 @@ msgid "_Edit" msgstr "编辑(_E)" -#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); +#. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() +#. ); #. Settings shortcut #: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 #: ../../po/../ui-gtk/UgtkTrayIcon.c:99 @@ -842,9 +886,9 @@ msgstr "跳过已存在 URI" #: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 +#: ../../po/../ui-gtk/UgtkSettingForm.c:223 #: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +msgid "Apply recent download settings" msgstr "使用上一次的下载设置" #. --- Completion Auto-Actions --- start --- @@ -948,7 +992,7 @@ msgid "Download _Columns" msgstr "下载列(_C)" -#. Download Columns - Completed +#. Download Columns - Complete #: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "完成(_C)" @@ -966,7 +1010,7 @@ #. Download Columns - Elapsed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:396 msgid "_Elapsed" -msgstr "已完成(_E)" +msgstr "已用时间(_E)" #. Download Columns - Left #: ../../po/../ui-gtk/UgtkMenubar-ui.c:401 @@ -975,25 +1019,25 @@ #. Download Columns - Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../../po/../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "速度" #. Download Columns - Up Speed #: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../../po/../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "上传速度" #. Download Columns - Uploaded #: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../../po/../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "已上传" #. Download Columns - Ratio #: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../../po/../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "分享率" @@ -1004,13 +1048,13 @@ #. Download Columns - Added On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../../po/../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "添加时间" #. Download Columns - Completed On #: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../../po/../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "完成时间" @@ -1032,7 +1076,8 @@ msgid "_Download" msgstr "下载(_D)" -#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); +#. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, +#. accel_group); #: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "删除条目(_D)" @@ -1106,116 +1151,116 @@ msgid "Check for Updates" msgstr "检查更新" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../../po/../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "设置" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../../po/../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "无法使用默认程序打开文件 '%s'。" -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../../po/../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - 文件夹不存在。" #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:219 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "URI 已存在" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "该 URI 已存在,您确定要继续?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "一般" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "高级" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "分类设置" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "默认一般设置" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../../po/../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "默认高级设置" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:608 +#: ../../po/../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "未命名" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../../po/../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "已暂停" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../../po/../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "正上传" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../../po/../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "已完成" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../../po/../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "回收站" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../../po/../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "队列" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../../po/../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "活跃的" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../../po/../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "全部状态" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../../po/../ui-gtk/UgtkNodeView.c:773 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:101 +#: ../../po/../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "名称" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../../po/../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "完成" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../../po/../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "大小" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../../po/../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../../po/../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "已完成" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../../po/../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "剩余" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../../po/../ui-gtk/UgtkNodeView.c:946 +#: ../../po/../ui-gtk/UgtkSettingForm.c:584 +#: ../../po/../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "URI" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../../po/../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "数量" @@ -1242,67 +1287,67 @@ msgid "Port:" msgstr "端口:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../../po/../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../../po/../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "端口参数:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../../po/../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "对象:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "一" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "二" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "三" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "四" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "五" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "六" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "日" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" -msgstr "启用计划下载(_E)" +msgstr "启用下载计划(_E)" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "关闭" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- 停止所有的任务" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "正常" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../../po/../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- 正常运行任务" @@ -1361,271 +1406,306 @@ msgstr "根据过滤规则选择(_M)..." #. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 +#: ../../po/../ui-gtk/UgtkSequence.c:74 msgid "e.g." msgstr "例如" #. ------------------------------------------------------- #. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 +#: ../../po/../ui-gtk/UgtkSequence.c:85 msgid "_From:" -msgstr "从(_F):" +msgstr "来源(_F):" #. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#: ../../po/../ui-gtk/UgtkSequence.c:108 msgid "To:" msgstr "到:" #. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#: ../../po/../ui-gtk/UgtkSequence.c:123 msgid "digits:" msgstr "数字:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 +#: ../../po/../ui-gtk/UgtkSequence.c:132 msgid "F_rom:" msgstr "从(_R):" #. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#: ../../po/../ui-gtk/UgtkSequence.c:162 msgid "case-sensitive" msgstr "区分大小写" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 +#: ../../po/../ui-gtk/UgtkSequence.c:188 msgid "No wildcard(*) character in URL entry." msgstr "URL 输入框中没有通配符(*)." -#: ../../po/../ui-gtk/UgtkSequencer.c:192 +#: ../../po/../ui-gtk/UgtkSequence.c:192 msgid "URL is not valid." msgstr "URL 无效。" -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../../po/../ui-gtk/UgtkSequence.c:196 msgid "No character in 'From' or 'To' entry." -msgstr "'从'和'到'输入框为空。" +msgstr "'来源'和'到'输入框为空。" -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../../po/../ui-gtk/UgtkSequence.c:311 msgid "Preview" msgstr "预览" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "用户界面" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "带宽" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" -msgstr "计划下载" +msgstr "下载计划" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" msgstr "插件" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../../po/../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "媒体网站" + +#: ../../po/../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "其他" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../../po/../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "启用剪贴板监控(_E)" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../../po/../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "静默模式(_Q)" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../../po/../ui-gtk/UgtkSettingForm.c:72 +#: ../../po/../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "默认分类索引" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../../po/../ui-gtk/UgtkSettingForm.c:84 +#: ../../po/../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "如果没有匹配分类则添加至第 N 个分类。" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media website +#: ../../po/../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of media website" +msgstr "监控媒体网站的 URL(_M)" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "监控剪贴板中的指定文件类型:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../../po/../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "使用符号'|'来分隔文件类型。" -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../../po/../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "您可以在这里使用正则表达式。" -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../../po/../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "确认" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../../po/../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "退出时显示确认对话框" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../../po/../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "删除文件时需要确认" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../../po/../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "系统托盘" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../../po/../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "始终显示托盘图标" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../../po/../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "程序启动自动最小化到系统托盘" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../../po/../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "窗口关闭时缩小至托盘" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../../po/../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "使用 Ubuntu 的 App Indicator" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../../po/../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "程序启动使用离线模式" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../../po/../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "下载开始提示" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../../po/../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "完成下载时发出声音" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from +#. clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../../po/../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "显示大图标" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." msgstr "这将影响所有插件。" #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../../po/../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "全局速度限制" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../../po/../ui-gtk/UgtkSettingForm.c:309 +#: ../../po/../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "最大上传速度" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../../po/../ui-gtk/UgtkSettingForm.c:321 +#: ../../po/../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "最大下载速度" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../../po/../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "完成时的自动操作" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../../po/../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "自定义命令:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 +#: ../../po/../ui-gtk/UgtkSettingForm.c:374 msgid "Custom command if error occured:" msgstr "错误发生时的自定义命令:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../../po/../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "自动保存(_A)" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "分钟" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../../po/../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "间隔(_I):" +#. auto save interval unit label +#: ../../po/../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "分钟" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../../po/../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "命令行设置" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../../po/../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "默认使用 '--quiet'" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../../po/../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" msgstr "插件匹配顺序:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../../po/../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" msgstr "Aria2 插件选项" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../../po/../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "RPC 认证密钥" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../../po/../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "针对 aria2 的全局速度限制" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../../po/../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "启动时运行 aria2" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../../po/../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "退出时关闭 aria2" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../../po/../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "启动本地设备上的 aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../../po/../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "路径:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../../po/../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "参数" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../../po/../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "您在修改它之后必须重启 uGet。" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../../po/../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "媒体匹配模式:" + +#: ../../po/../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "匹配条件" + +#. Quality +#: ../../po/../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "质量:" + +#. Type +#: ../../po/../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "类型:" + +#: ../../po/../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "文件" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../../po/../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "文件夹" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../../po/../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "项目" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../../po/../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "值" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../../po/../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "全部复制(_A)" diff -Nru uget-2.0.2/po/zh_TW.po uget-2.2.2/po/zh_TW.po --- uget-2.0.2/po/zh_TW.po 2015-09-11 12:14:44.000000000 +0000 +++ uget-2.2.2/po/zh_TW.po 2019-05-19 16:49:06.000000000 +0000 @@ -1,380 +1,411 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# chhuang , 2014 msgid "" msgstr "" -"Project-Id-Version: \n" +"Project-Id-Version: uGet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-11 20:14+0800\n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: \n" +"POT-Creation-Date: 2018-01-06 15:22+0800\n" +"PO-Revision-Date: 2016-11-09 16:16+0000\n" +"Last-Translator: chhuang \n" +"Language-Team: Chinese (Taiwan) (http://www.transifex.com/uget/uget/language/" +"zh_TW/)\n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Chinese\n" -"X-Poedit-Country: TAIWAN\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: ../../po/../uget/pwmd.c:32 -#, c-format -msgid "" -"Password Manager Daemon: uget\n" -"\n" -"While attempting an SSH connection to %s there was a problem verifying it's " -"hostkey against the known and trusted hosts file because it's hostkey was " -"not found.\n" -"\n" -"Would you like to treat this connection as trusted for this and future " -"connections by adding %s's hostkey to the known hosts file?" -msgstr "" - -#: ../../po/../uget/UgetApp.c:96 +#: ../uget/UgetApp.c:109 msgid "All Category" msgstr "全分類" #. UGET_EVENT_NORMAL_CUSTOM -#: ../../po/../uget/UgetEvent.c:58 +#: ../uget/UgetEvent.c:58 msgid "Connecting..." msgstr "連線中..." #. UGET_EVENT_NORMAL_CONNECT -#: ../../po/../uget/UgetEvent.c:59 +#: ../uget/UgetEvent.c:59 msgid "Transmitting..." msgstr "傳輸中..." #. UGET_EVENT_NORMAL_TRANSMIT, -#: ../../po/../uget/UgetEvent.c:60 ../../po/../ui-gtk/UgtkNodeView.c:911 +#: ../uget/UgetEvent.c:60 ../ui-gtk/UgtkNodeView.c:917 msgid "Retry" msgstr "重試" #. UGET_EVENT_NORMAL_RETRY, -#: ../../po/../uget/UgetEvent.c:61 +#: ../uget/UgetEvent.c:61 msgid "Download completed" msgstr "下載完成" #. UGET_EVENT_NORMAL_COMPLETE, -#: ../../po/../uget/UgetEvent.c:62 ../../po/../ui-gtk/UgtkNodeView.c:642 +#: ../uget/UgetEvent.c:62 ../ui-gtk/UgtkNodeView.c:644 msgid "Finished" msgstr "已結束" #. UGET_EVENT_NORMAL_FINISH, #. resumable -#: ../../po/../uget/UgetEvent.c:64 +#: ../uget/UgetEvent.c:64 msgid "Resumable" msgstr "可續傳" #. UGET_EVENT_NORMAL_RESUMABLE, -#: ../../po/../uget/UgetEvent.c:65 ../../po/../uget/UgetPluginAria2.c:280 +#: ../uget/UgetEvent.c:65 ../uget/UgetPluginAria2.c:287 msgid "Not Resumable" msgstr "無法續傳" #. UGET_EVENT_WARNING_CUSTOM -#: ../../po/../uget/UgetEvent.c:73 ../../po/../uget/UgetPluginAria2.c:287 +#: ../uget/UgetEvent.c:73 ../uget/UgetPluginAria2.c:294 msgid "Output file can't be renamed." msgstr "輸出檔無法改名。" #. UGET_EVENT_ERROR_CUSTOM -#: ../../po/../uget/UgetEvent.c:81 +#: ../uget/UgetEvent.c:81 msgid "couldn't connect to host." msgstr "無法連接到主機。" #. UGET_EVENT_ERROR_CONNECT_FAILED -#: ../../po/../uget/UgetEvent.c:82 ../../po/../uget/UgetPluginAria2.c:291 +#: ../uget/UgetEvent.c:82 ../uget/UgetPluginAria2.c:298 msgid "Folder can't be created." msgstr "資料夾無法建立" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetEvent.c:83 +#: ../uget/UgetEvent.c:83 msgid "File can't be created (bad filename or file exist)." msgstr "檔案無法建立 (檔名錯誤或檔案已經存在)。" #. UGET_EVENT_ERROR_FILE_CREATE_FAILED -#: ../../po/../uget/UgetEvent.c:84 +#: ../uget/UgetEvent.c:84 msgid "File can't be opened." msgstr "檔案無法開啟。" #. UGET_EVENT_ERROR_FILE_OPEN_FAILED -#: ../../po/../uget/UgetEvent.c:85 +#: ../uget/UgetEvent.c:85 msgid "Unable to create thread." msgstr "無法建立執行緒。" #. UGET_EVENT_ERROR_THREAD_CREATE_FAILED, -#: ../../po/../uget/UgetEvent.c:86 +#: ../uget/UgetEvent.c:86 msgid "Incorrect source (different file size)." msgstr "不正確的來源 (檔案大小不同)" #. UGET_EVENT_ERROR_INCORRECT_SOURCE, -#: ../../po/../uget/UgetEvent.c:87 +#: ../uget/UgetEvent.c:87 msgid "Out of resource (disk full or run out of memory)." msgstr "系統資源不足 (儲存空間或記憶體不足)" #. UGET_EVENT_ERROR_OUT_OF_RESOURCE -#: ../../po/../uget/UgetEvent.c:88 +#: ../uget/UgetEvent.c:88 msgid "No output file." msgstr "沒有指定輸出檔案。" #. UGET_EVENT_ERROR_NO_OUTPUT_FILE -#: ../../po/../uget/UgetEvent.c:89 +#: ../uget/UgetEvent.c:89 msgid "No output setting." msgstr "沒有輸出的設定。" #. UGET_EVENT_ERROR_NO_OUTPUT_SETTING -#: ../../po/../uget/UgetEvent.c:90 +#: ../uget/UgetEvent.c:90 msgid "Too many retries." msgstr "重試太多次。" #. UGET_EVENT_ERROR_TOO_MANY_RETRIES -#: ../../po/../uget/UgetEvent.c:91 +#: ../uget/UgetEvent.c:91 msgid "Unsupported scheme (protocol)." msgstr "不支援的通訊協定。" #. UGET_EVENT_ERROR_UNSUPPORTED_SCHEME -#: ../../po/../uget/UgetEvent.c:92 +#: ../uget/UgetEvent.c:92 msgid "Unsupported file." msgstr "不支援的檔案。" #. UGET_EVENT_ERROR_UNSUPPORTED_FILE -#: ../../po/../uget/UgetEvent.c:93 +#: ../uget/UgetEvent.c:93 msgid "post file not found." msgstr "" #. UGET_EVENT_ERROR_POST_FILE_NOT_FOUND -#: ../../po/../uget/UgetEvent.c:94 +#: ../uget/UgetEvent.c:94 msgid "cookie file not found." msgstr "" +#: ../uget/UgetMedia-youtube.c:275 +msgid "This video has been removed." +msgstr "" + +#: ../uget/UgetMedia-youtube.c:288 +msgid "Error occurred during getting video info." +msgstr "" + +#: ../uget/UgetMedia-youtube.c:534 +msgid "Error occurred during getting video web page." +msgstr "" + +#: ../uget/UgetMedia-youtube.c:606 +msgid "No video_id found in URL of YouTube." +msgstr "" + #. 1 - 10 -#: ../../po/../uget/UgetPluginAria2.c:273 +#: ../uget/UgetPluginAria2.c:280 msgid "aria2: an unknown error occurred." msgstr "aria2: 發生未知的錯誤。" -#: ../../po/../uget/UgetPluginAria2.c:274 +#: ../uget/UgetPluginAria2.c:281 msgid "aria2: time out occurred." msgstr "aria2: 發生超時。" -#: ../../po/../uget/UgetPluginAria2.c:275 +#: ../uget/UgetPluginAria2.c:282 msgid "aria2: resource was not found." msgstr "aria2: 找不到資源。" -#: ../../po/../uget/UgetPluginAria2.c:276 +#: ../uget/UgetPluginAria2.c:283 msgid "" -"aria2 saw the specfied number of 'resource not found' error. See --max-file-" +"aria2 saw the specified number of 'resource not found' error. See --max-file-" "not-found option" msgstr "" "aria2 發現'找不到資源'的錯誤達到指定的數量。請看參數 --max-file-not-found" -#: ../../po/../uget/UgetPluginAria2.c:277 +#: ../uget/UgetPluginAria2.c:284 msgid "aria2: speed was too slow." msgstr "aria2: 數度太慢。" -#: ../../po/../uget/UgetPluginAria2.c:278 +#: ../uget/UgetPluginAria2.c:285 msgid "aria2: network problem occurred." msgstr "aria2: 發生網絡問題。" -#: ../../po/../uget/UgetPluginAria2.c:279 +#: ../uget/UgetPluginAria2.c:286 msgid "aria2: unfinished downloads." msgstr "aria2: 未結束的下載。" #. _("Not Resumable"), -#: ../../po/../uget/UgetPluginAria2.c:281 +#: ../uget/UgetPluginAria2.c:288 msgid "Out of resource" msgstr "資源用盡" #. _(), -#: ../../po/../uget/UgetPluginAria2.c:282 +#: ../uget/UgetPluginAria2.c:289 msgid "aria2: piece length was different from one in .aria2 control file." msgstr "aria2: 片段長度和 .aria2 控制文件所紀錄的不同。" #. 11 - 20 -#: ../../po/../uget/UgetPluginAria2.c:284 +#: ../uget/UgetPluginAria2.c:291 msgid "aria2 was downloading same file." msgstr "aria2 已經下載過相同的檔案。" -#: ../../po/../uget/UgetPluginAria2.c:285 +#: ../uget/UgetPluginAria2.c:292 msgid "aria2 was downloading same info hash torrent." msgstr "aria2 正在下載相同的 Torrent。" -#: ../../po/../uget/UgetPluginAria2.c:286 +#: ../uget/UgetPluginAria2.c:293 msgid "aria2: file already existed. See --allow-overwrite option." msgstr "aria2 文件已經存在。請看參數 --allow-overwrite" #. _("Output file can't be renamed."), -#: ../../po/../uget/UgetPluginAria2.c:288 +#: ../uget/UgetPluginAria2.c:295 msgid "aria2: could not open existing file." msgstr "aria2: 無法開啟已經存在的檔案." -#: ../../po/../uget/UgetPluginAria2.c:289 +#: ../uget/UgetPluginAria2.c:296 msgid "aria2: could not create new file or truncate existing file." msgstr "aria2: 無法創建新的文件或截斷現有文件。" -#: ../../po/../uget/UgetPluginAria2.c:290 +#: ../uget/UgetPluginAria2.c:297 msgid "aria2: file I/O error occurred." msgstr "aria2: 發生文件讀寫錯誤。" #. UGET_EVENT_ERROR_FOLDER_CREATE_FAILED -#: ../../po/../uget/UgetPluginAria2.c:292 +#: ../uget/UgetPluginAria2.c:299 msgid "aria2: name resolution failed." msgstr "aria2: 名稱解析失敗。" -#: ../../po/../uget/UgetPluginAria2.c:293 +#: ../uget/UgetPluginAria2.c:300 msgid "aria2: could not parse Metalink document." msgstr "aria2: 無法解析的 Metalink 檔案。" #. 21 - 30 -#: ../../po/../uget/UgetPluginAria2.c:295 +#: ../uget/UgetPluginAria2.c:302 msgid "aria2: FTP command failed." msgstr "aria2: FTP 命令失敗。" -#: ../../po/../uget/UgetPluginAria2.c:296 +#: ../uget/UgetPluginAria2.c:303 msgid "aria2: HTTP response header was bad or unexpected." msgstr "aria2: HTTP 回應開頭部分損壞或預期以外的。" -#: ../../po/../uget/UgetPluginAria2.c:297 +#: ../uget/UgetPluginAria2.c:304 msgid "Too many redirections." msgstr "重新導向太多次." -#: ../../po/../uget/UgetPluginAria2.c:298 +#: ../uget/UgetPluginAria2.c:305 msgid "aria2: HTTP authorization failed." msgstr "aria2: HTTP 授權失敗。" -#: ../../po/../uget/UgetPluginAria2.c:299 +#: ../uget/UgetPluginAria2.c:306 msgid "aria2: could not parse bencoded file(usually .torrent file)." msgstr "aria2: 無法解析編碼文件(通常是 .torrent 文件)" -#: ../../po/../uget/UgetPluginAria2.c:300 +#: ../uget/UgetPluginAria2.c:307 msgid "aria2: torrent file was corrupted or missing information." msgstr "aria2: torrent文件被損壞或丟失信息。" -#: ../../po/../uget/UgetPluginAria2.c:301 +#: ../uget/UgetPluginAria2.c:308 msgid "aria2: Magnet URI was bad." msgstr "aria2: Magnet 的 URI 已損壞。" -#: ../../po/../uget/UgetPluginAria2.c:302 +#: ../uget/UgetPluginAria2.c:309 msgid "" "aria2: bad/unrecognized option was given or unexpected option argument was " "given." msgstr "aria2: 收到損壞/無法識別的選項或意外的選項參數。" -#: ../../po/../uget/UgetPluginAria2.c:303 +#: ../uget/UgetPluginAria2.c:310 msgid "aria2: remote server was unable to handle the request." msgstr "aria2: 遠程服務器無法處理請求。" -#: ../../po/../uget/UgetPluginAria2.c:304 +#: ../uget/UgetPluginAria2.c:311 msgid "aria2: could not parse JSON-RPC request." msgstr "aria2: 無發分析 JSON-RPC 請求。" -#: ../../po/../uget/UgetPluginAria2.c:307 +#: ../uget/UgetPluginAria2.c:314 msgid "No response. Is aria2 shutdown?" msgstr "沒有回應。 aria2 是否關閉?" #. debug -#: ../../po/../uget/UgetPluginAria2.c:626 +#: ../uget/UgetPluginAria2.c:650 msgid "aria2: gid was removed." msgstr "aria2: gid 已被删除。" -#: ../../po/../ui-gtk/UgtkAboutDialog.c:46 +#: ../uget/UgetPluginMedia.c:498 +msgid "Failed to get media link." +msgstr "" + +#: ../uget/UgetPluginMedia.c:514 +msgid "No matched media." +msgstr "" + +#: ../uget/UgetPluginMega.c:176 +msgid "Can't handle this MEGA URL." +msgstr "" + +#: ../uget/UgetPluginMega.c:203 +msgid "Can't get download URL." +msgstr "" + +#: ../uget/UgetPluginMega.c:653 +msgid "decrypting file..." +msgstr "" + +#: ../uget/UgetPluginMega.c:745 +msgid "decryption completed" +msgstr "" + +#: ../ui-gtk/UgtkAboutDialog.c:46 msgid "Download Manager" msgstr "下載管理程式" -#: ../../po/../ui-gtk/UgtkAboutDialog.c:48 +#: ../ui-gtk/UgtkAboutDialog.c:48 msgid "translator-credits" msgstr "繁體中文 (zh_TW) - 黃正雄" -#: ../../po/../ui-gtk/UgtkAboutDialog.c:80 +#: ../ui-gtk/UgtkAboutDialog.c:80 msgid "uGet Founder: " msgstr "uGet 創立者: " -#: ../../po/../ui-gtk/UgtkAboutDialog.c:81 +#: ../ui-gtk/UgtkAboutDialog.c:81 msgid "uGet Project Manager: " msgstr "uGet 項目經理: " -#: ../../po/../ui-gtk/UgtkApp-timeout.c:259 -#: ../../po/../ui-gtk/UgtkTrayIcon.c:239 +#. "↓" +#. "↑" +#: ../ui-gtk/UgtkApp-timeout.c:262 ../ui-gtk/UgtkTrayIcon.c:240 msgid "tasks" msgstr "任務" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:393 +#: ../ui-gtk/UgtkApp-timeout.c:398 msgid "New from Clipboard" msgstr "從剪貼簿新增" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:395 ../../po/../ui-gtk/UgtkApp.c:681 +#: ../ui-gtk/UgtkApp-timeout.c:400 ../ui-gtk/UgtkApp.c:912 msgid "New Download" msgstr "新增下載" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:419 ../../po/../ui-gtk/UgtkApp.c:1430 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:106 +#: ../ui-gtk/UgtkApp-timeout.c:424 ../ui-gtk/UgtkApp.c:1684 +#: ../ui-gtk/UgtkSettingDialog.c:119 msgid "Clipboard" msgstr "剪貼簿" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:421 +#: ../ui-gtk/UgtkApp-timeout.c:426 msgid "Command line" msgstr "命令列" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:773 +#: ../ui-gtk/UgtkApp-timeout.c:779 msgid "Error Occurred" msgstr "發生錯誤" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:774 -msgid "Error Occurred when downloading." -msgstr "下載時發生錯誤。" +#: ../ui-gtk/UgtkApp-timeout.c:780 +msgid "Error Occurred during downloading." +msgstr "下載期間發生錯誤。" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:775 +#: ../ui-gtk/UgtkApp-timeout.c:781 msgid "Download Starting" msgstr "開始下載" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:776 +#: ../ui-gtk/UgtkApp-timeout.c:782 msgid "Starting download queue." msgstr "開始下載佇列" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:777 +#: ../ui-gtk/UgtkApp-timeout.c:783 msgid "Download Completed" msgstr "下載完成" -#: ../../po/../ui-gtk/UgtkApp-timeout.c:778 +#: ../ui-gtk/UgtkApp-timeout.c:784 msgid "All queuing downloads have been completed." msgstr "所有排隊中的檔案下載完成." #. ---------------------------------------------------- #. frame for Status (start mode) -#: ../../po/../ui-gtk/UgtkApp-ui.c:164 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:224 -#: ../../po/../ui-gtk/UgtkNodeView.c:1034 +#: ../ui-gtk/UgtkApp-ui.c:193 ../ui-gtk/UgtkDownloadForm.c:224 +#: ../ui-gtk/UgtkNodeView.c:1040 msgid "Status" msgstr "狀態" #. Summary Items - Category #. Download Columns - Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:166 ../../po/../ui-gtk/UgtkMenubar-ui.c:318 -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:346 -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:431 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:402 -#: ../../po/../ui-gtk/UgtkNodeView.c:926 -#: ../../po/../ui-gtk/UgtkNodeView.c:1014 ../../po/../ui-gtk/UgtkSummary.c:139 +#: ../ui-gtk/UgtkApp-ui.c:195 ../ui-gtk/UgtkMenubar-ui.c:318 +#: ../ui-gtk/UgtkMenubar-ui.c:346 ../ui-gtk/UgtkMenubar-ui.c:431 +#: ../ui-gtk/UgtkNodeDialog.c:418 ../ui-gtk/UgtkNodeView.c:932 +#: ../ui-gtk/UgtkNodeView.c:1020 ../ui-gtk/UgtkSummary.c:131 msgid "Category" msgstr "分類" -#: ../../po/../ui-gtk/UgtkApp-ui.c:238 +#: ../ui-gtk/UgtkApp-ui.c:279 msgid "Create new download" msgstr "建立新的下載" #. New Download (accelerators) #. gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. New Download -#: ../../po/../ui-gtk/UgtkApp-ui.c:248 ../../po/../ui-gtk/UgtkMenubar-ui.c:58 -#: ../../po/../ui-gtk/UgtkTrayIcon.c:59 +#: ../ui-gtk/UgtkApp-ui.c:289 ../ui-gtk/UgtkMenubar-ui.c:58 +#: ../ui-gtk/UgtkTrayIcon.c:59 msgid "New _Download..." msgstr "新增下載(_D)..." #. New Category -#: ../../po/../ui-gtk/UgtkApp-ui.c:259 ../../po/../ui-gtk/UgtkMenubar-ui.c:69 +#: ../ui-gtk/UgtkApp-ui.c:300 ../ui-gtk/UgtkMenubar-ui.c:69 msgid "New _Category..." msgstr "新增分類(_C)..." #. New Clipboard batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:269 ../../po/../ui-gtk/UgtkTrayIcon.c:70 +#: ../ui-gtk/UgtkApp-ui.c:310 ../ui-gtk/UgtkTrayIcon.c:70 msgid "New Clipboard _batch..." msgstr "新增剪貼簿批次下載(_B)..." #. New URL Sequence batch -#: ../../po/../ui-gtk/UgtkApp-ui.c:280 +#: ../ui-gtk/UgtkApp-ui.c:321 msgid "New _URL Sequence batch..." msgstr "新增 _URL 序列下載..." @@ -382,539 +413,544 @@ #. separator #. gtk_menu_shell_append ((GtkMenuShell*)submenu, gtk_separator_menu_item_new() ); #. New Torrent -#: ../../po/../ui-gtk/UgtkApp-ui.c:294 ../../po/../ui-gtk/UgtkMenubar-ui.c:81 -#: ../../po/../ui-gtk/UgtkTrayIcon.c:83 +#: ../ui-gtk/UgtkApp-ui.c:335 ../ui-gtk/UgtkMenubar-ui.c:81 +#: ../ui-gtk/UgtkTrayIcon.c:83 msgid "New Torrent..." msgstr "新增 Torrent..." #. New Metalink -#: ../../po/../ui-gtk/UgtkApp-ui.c:301 ../../po/../ui-gtk/UgtkMenubar-ui.c:87 -#: ../../po/../ui-gtk/UgtkTrayIcon.c:90 +#: ../ui-gtk/UgtkApp-ui.c:342 ../ui-gtk/UgtkMenubar-ui.c:87 +#: ../ui-gtk/UgtkTrayIcon.c:90 msgid "New Metalink..." msgstr "新增 Metalink..." -#: ../../po/../ui-gtk/UgtkApp-ui.c:315 +#: ../ui-gtk/UgtkApp-ui.c:356 msgid "Save all settings" msgstr "儲存全部設定" -#: ../../po/../ui-gtk/UgtkApp-ui.c:328 +#: ../ui-gtk/UgtkApp-ui.c:369 msgid "Set selected download runnable" msgstr "選擇的項目設定為可運行的" -#: ../../po/../ui-gtk/UgtkApp-ui.c:338 +#: ../ui-gtk/UgtkApp-ui.c:379 msgid "Set selected download to pause" msgstr "選擇的項目設定為暫停" -#: ../../po/../ui-gtk/UgtkApp-ui.c:348 +#: ../ui-gtk/UgtkApp-ui.c:389 msgid "Set selected download properties" msgstr "設定選擇的項目的內容" -#: ../../po/../ui-gtk/UgtkApp-ui.c:361 +#: ../ui-gtk/UgtkApp-ui.c:402 msgid "Move selected download up" msgstr "選擇的項目向上移" -#: ../../po/../ui-gtk/UgtkApp-ui.c:371 +#: ../ui-gtk/UgtkApp-ui.c:412 msgid "Move selected download down" msgstr "選擇的項目向下移" -#: ../../po/../ui-gtk/UgtkApp-ui.c:381 +#: ../ui-gtk/UgtkApp-ui.c:422 msgid "Move selected download to top" msgstr "選擇的項目向上移到頂" -#: ../../po/../ui-gtk/UgtkApp-ui.c:391 +#: ../ui-gtk/UgtkApp-ui.c:432 msgid "Move selected download to bottom" msgstr "選擇的項目向下移到底" -#: ../../po/../ui-gtk/UgtkApp.c:653 +#: ../ui-gtk/UgtkApp.c:881 msgid "New Category" msgstr "新增分類" -#: ../../po/../ui-gtk/UgtkApp.c:664 +#: ../ui-gtk/UgtkApp.c:891 msgid "Copy - " msgstr "複製 - " -#: ../../po/../ui-gtk/UgtkApp.c:802 +#: ../ui-gtk/UgtkApp.c:1047 msgid "Category Properties" msgstr "分類內容" -#: ../../po/../ui-gtk/UgtkApp.c:816 +#: ../ui-gtk/UgtkApp.c:1061 msgid "Download Properties" msgstr "下載內容" -#: ../../po/../ui-gtk/UgtkApp.c:1047 +#: ../ui-gtk/UgtkApp.c:1302 msgid "New Torrent" msgstr "新增 Torrent" -#: ../../po/../ui-gtk/UgtkApp.c:1063 +#: ../ui-gtk/UgtkApp.c:1318 msgid "New Metalink" msgstr "新增 Metalink" -#: ../../po/../ui-gtk/UgtkApp.c:1072 +#: ../ui-gtk/UgtkApp.c:1327 msgid "Open Torrent file" msgstr "開啟 Torrent 檔案" -#: ../../po/../ui-gtk/UgtkApp.c:1088 +#: ../ui-gtk/UgtkApp.c:1330 +msgid "Torrent file (*.torrent)" +msgstr "" + +#: ../ui-gtk/UgtkApp.c:1343 msgid "Open Metalink file" msgstr "開啟 Metalink 檔案" -#: ../../po/../ui-gtk/UgtkApp.c:1128 +#: ../ui-gtk/UgtkApp.c:1383 msgid "Failed to save category file." msgstr "分類檔案儲存失敗。" -#: ../../po/../ui-gtk/UgtkApp.c:1148 +#: ../ui-gtk/UgtkApp.c:1403 msgid "Failed to load category file." msgstr "分類檔案載入失敗。" -#: ../../po/../ui-gtk/UgtkApp.c:1159 +#: ../ui-gtk/UgtkApp.c:1414 msgid "Save Category file" msgstr "儲存分類檔案" -#: ../../po/../ui-gtk/UgtkApp.c:1177 +#: ../ui-gtk/UgtkApp.c:1432 msgid "Open Category file" msgstr "開啟分類檔案" +#: ../ui-gtk/UgtkApp.c:1435 +msgid "JSON file (*.json)" +msgstr "" + #. add link -#: ../../po/../ui-gtk/UgtkApp.c:1236 +#: ../ui-gtk/UgtkApp.c:1491 msgid "Link " msgstr "連結 " #. add image -#: ../../po/../ui-gtk/UgtkApp.c:1241 +#: ../ui-gtk/UgtkApp.c:1496 msgid "Image " msgstr "影像 " -#: ../../po/../ui-gtk/UgtkApp.c:1286 +#: ../ui-gtk/UgtkApp.c:1541 msgid "Text File" msgstr "文字檔案" -#: ../../po/../ui-gtk/UgtkApp.c:1333 +#: ../ui-gtk/UgtkApp.c:1588 msgid "Import URLs from HTML file" msgstr "從 HTML 檔案匯入網址" -#: ../../po/../ui-gtk/UgtkApp.c:1348 +#: ../ui-gtk/UgtkApp.c:1591 +msgid "HTML file (*.htm, *.html)" +msgstr "" + +#: ../ui-gtk/UgtkApp.c:1603 msgid "Import URLs from text file" msgstr "從文字檔案匯入網址" -#: ../../po/../ui-gtk/UgtkApp.c:1363 +#: ../ui-gtk/UgtkApp.c:1606 +msgid "Plain text file" +msgstr "" + +#: ../ui-gtk/UgtkApp.c:1618 msgid "Export URLs to text file" msgstr "匯出網址到文字檔案" -#: ../../po/../ui-gtk/UgtkApp.c:1382 +#: ../ui-gtk/UgtkApp.c:1637 msgid "URL Sequence batch" msgstr "URL 序列下載" -#: ../../po/../ui-gtk/UgtkApp.c:1409 +#: ../ui-gtk/UgtkApp.c:1663 msgid "No URLs found in clipboard." msgstr "剪貼簿裡面沒有網址。" -#: ../../po/../ui-gtk/UgtkApp.c:1418 +#: ../ui-gtk/UgtkApp.c:1672 msgid "All URLs had existed." msgstr "全部的 URL 都已經存在。" -#: ../../po/../ui-gtk/UgtkApp.c:1423 +#: ../ui-gtk/UgtkApp.c:1677 msgid "Clipboard batch" msgstr "剪貼簿批次下載" -#: ../../po/../ui-gtk/UgtkApp.c:1513 +#: ../ui-gtk/UgtkApp.c:1766 msgid "New" msgstr "新增" -#: ../../po/../ui-gtk/UgtkApp.c:1554 ../../po/../ui-gtk/UgtkMenubar.c:459 -#: ../../po/../ui-gtk/UgtkMenubar.c:491 ../../po/../ui-gtk/UgtkNodeView.c:638 +#: ../ui-gtk/UgtkApp.c:1807 ../ui-gtk/UgtkMenubar.c:460 +#: ../ui-gtk/UgtkMenubar.c:492 ../ui-gtk/UgtkNodeView.c:640 msgid "Error" msgstr "錯誤" -#: ../../po/../ui-gtk/UgtkApp.c:1562 ../../po/../ui-gtk/UgtkSummary.c:184 +#: ../ui-gtk/UgtkApp.c:1815 ../ui-gtk/UgtkSummary.c:176 msgid "Message" msgstr "訊息" -#: ../../po/../ui-gtk/UgtkApp.c:1672 +#: ../ui-gtk/UgtkApp.c:1931 #, c-format msgid "Selected %d items" msgstr "已選擇 %d 個項目" -#: ../../po/../ui-gtk/UgtkBanner.c:145 ../../po/../ui-gtk/UgtkBanner.c:165 +#: ../ui-gtk/UgtkBanner.c:145 ../ui-gtk/UgtkBanner.c:165 msgid "Attention uGetters:" msgstr "關注 uGetters:" -#: ../../po/../ui-gtk/UgtkBanner.c:148 +#: ../ui-gtk/UgtkBanner.c:148 msgid "" "we are running a Donation Drive for uGet's Future Development, please click " msgstr "我們正在進行uGet未來發展的募捐,請按" -#: ../../po/../ui-gtk/UgtkBanner.c:151 +#: ../ui-gtk/UgtkBanner.c:151 msgid "HERE" msgstr "這裡" -#: ../../po/../ui-gtk/UgtkBanner.c:168 +#: ../ui-gtk/UgtkBanner.c:168 msgid "please fill out this quick User Survey for uGet." msgstr "請填寫快速用戶調查。" -#: ../../po/../ui-gtk/UgtkBanner.c:171 +#: ../ui-gtk/UgtkBanner.c:171 msgid "click here to take survey" msgstr "按這裡參加調查" -#: ../../po/../ui-gtk/UgtkCategoryForm.c:62 +#: ../ui-gtk/UgtkCategoryForm.c:62 msgid "Category _name:" msgstr "分類名稱(_N):" -#: ../../po/../ui-gtk/UgtkCategoryForm.c:82 +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); +#: ../ui-gtk/UgtkCategoryForm.c:82 msgid "Active _downloads:" msgstr "啟動下載數量(_D):" -#: ../../po/../ui-gtk/UgtkCategoryForm.c:92 +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); +#: ../ui-gtk/UgtkCategoryForm.c:92 msgid "Capacity of Finished:" msgstr "'已結束'的容量:" -#: ../../po/../ui-gtk/UgtkCategoryForm.c:102 +#. gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); +#: ../ui-gtk/UgtkCategoryForm.c:102 msgid "Capacity of Recycled:" msgstr "'回收區'的容量:" #. ------------------------------------------------------------------------ #. URI Matching conditions -#: ../../po/../ui-gtk/UgtkCategoryForm.c:111 +#: ../ui-gtk/UgtkCategoryForm.c:111 msgid "URI Matching conditions" msgstr "URI 配對條件" -#: ../../po/../ui-gtk/UgtkCategoryForm.c:118 +#: ../ui-gtk/UgtkCategoryForm.c:118 msgid "Matched _Hosts:" msgstr "配對主機(_H):" -#: ../../po/../ui-gtk/UgtkCategoryForm.c:129 +#: ../ui-gtk/UgtkCategoryForm.c:129 msgid "Matched _Schemes:" msgstr "配對協議(_S):" -#: ../../po/../ui-gtk/UgtkCategoryForm.c:140 +#: ../ui-gtk/UgtkCategoryForm.c:140 msgid "Matched _Types:" msgstr "配對檔案類型(_T):" -#: ../../po/../ui-gtk/UgtkConfirmDialog.c:64 +#: ../ui-gtk/UgtkConfirmDialog.c:64 msgid "Really Quit?" msgstr "真的要離開?" -#: ../../po/../ui-gtk/UgtkConfirmDialog.c:65 +#: ../ui-gtk/UgtkConfirmDialog.c:65 msgid "Are you sure you want to quit?" msgstr "你確定要離開?" -#: ../../po/../ui-gtk/UgtkConfirmDialog.c:69 +#: ../ui-gtk/UgtkConfirmDialog.c:69 msgid "Really delete files?" msgstr "真的要刪除文件?" -#: ../../po/../ui-gtk/UgtkConfirmDialog.c:70 +#: ../ui-gtk/UgtkConfirmDialog.c:70 msgid "Are you sure you want to delete files?" msgstr "你確定要刪除檔案?" -#: ../../po/../ui-gtk/UgtkConfirmDialog.c:74 +#: ../ui-gtk/UgtkConfirmDialog.c:74 msgid "Really delete category?" msgstr "真的要刪除分類?" -#: ../../po/../ui-gtk/UgtkConfirmDialog.c:75 +#: ../ui-gtk/UgtkConfirmDialog.c:75 msgid "Are you sure you want to delete category?" msgstr "你確定要刪除分類?" -#: ../../po/../ui-gtk/UgtkConfirmDialog.c:109 +#: ../ui-gtk/UgtkConfirmDialog.c:109 msgid "Don't ask me again" msgstr "下次別問我" #. URL - label -#: ../../po/../ui-gtk/UgtkDownloadForm.c:111 -#: ../../po/../ui-gtk/UgtkSequencer.c:63 +#: ../ui-gtk/UgtkDownloadForm.c:111 ../ui-gtk/UgtkSequence.c:235 msgid "_URI:" msgstr "網址(_U)" #. Mirrors - label -#: ../../po/../ui-gtk/UgtkDownloadForm.c:130 +#: ../ui-gtk/UgtkDownloadForm.c:130 msgid "Mirrors:" msgstr "鏡像:" +#: ../ui-gtk/UgtkDownloadForm.c:141 +msgid "Leave blank to use default filename ..." +msgstr "保持空白以使用預設檔名 ..." + #. File - label -#: ../../po/../ui-gtk/UgtkDownloadForm.c:146 -#: ../../po/../ui-gtk/UgtkProxyForm.c:385 +#: ../ui-gtk/UgtkDownloadForm.c:146 ../ui-gtk/UgtkProxyForm.c:393 msgid "File:" msgstr "檔案:" -#: ../../po/../ui-gtk/UgtkDownloadForm.c:166 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:896 +#: ../ui-gtk/UgtkDownloadForm.c:166 ../ui-gtk/UgtkDownloadForm.c:897 msgid "Select Folder" msgstr "選擇資料夾" #. Folder - label -#: ../../po/../ui-gtk/UgtkDownloadForm.c:174 +#: ../ui-gtk/UgtkDownloadForm.c:174 msgid "_Folder:" msgstr "資料夾(_F):" #. Referrer - label -#: ../../po/../ui-gtk/UgtkDownloadForm.c:189 +#: ../ui-gtk/UgtkDownloadForm.c:189 msgid "Referrer:" msgstr "參照位址:" #. "Max Connections:" - title label -#: ../../po/../ui-gtk/UgtkDownloadForm.c:212 +#: ../ui-gtk/UgtkDownloadForm.c:212 msgid "_Max Connections:" msgstr "最大連線數(_M)" -#: ../../po/../ui-gtk/UgtkDownloadForm.c:230 -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:574 +#: ../ui-gtk/UgtkDownloadForm.c:230 ../ui-gtk/UgtkMenubar-ui.c:574 msgid "_Runnable" msgstr "可運行(_R)" -#: ../../po/../ui-gtk/UgtkDownloadForm.c:232 +#: ../ui-gtk/UgtkDownloadForm.c:232 msgid "P_ause" msgstr "暫停(_A)" #. ---------------------------------------------------- #. frame for login -#: ../../po/../ui-gtk/UgtkDownloadForm.c:238 +#: ../ui-gtk/UgtkDownloadForm.c:238 msgid "Login" msgstr "登入" #. User - label #. user label & entry -#: ../../po/../ui-gtk/UgtkDownloadForm.c:252 -#: ../../po/../ui-gtk/UgtkProxyForm.c:149 +#: ../ui-gtk/UgtkDownloadForm.c:252 ../ui-gtk/UgtkProxyForm.c:149 msgid "User:" msgstr "使用者:" #. Password - label #. password label & entry -#: ../../po/../ui-gtk/UgtkDownloadForm.c:268 -#: ../../po/../ui-gtk/UgtkProxyForm.c:160 +#: ../ui-gtk/UgtkDownloadForm.c:268 ../ui-gtk/UgtkProxyForm.c:160 msgid "Password:" msgstr "密碼:" #. label - cookie file -#: ../../po/../ui-gtk/UgtkDownloadForm.c:293 +#: ../ui-gtk/UgtkDownloadForm.c:293 msgid "Cookie file:" msgstr "cookie 資料檔" -#: ../../po/../ui-gtk/UgtkDownloadForm.c:310 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:952 +#: ../ui-gtk/UgtkDownloadForm.c:310 ../ui-gtk/UgtkDownloadForm.c:953 msgid "Select Cookie File" msgstr "選擇 cookie 資料檔" #. label - post file -#: ../../po/../ui-gtk/UgtkDownloadForm.c:319 +#: ../ui-gtk/UgtkDownloadForm.c:319 msgid "Post file:" msgstr "Post 檔案:" -#: ../../po/../ui-gtk/UgtkDownloadForm.c:336 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:1008 +#: ../ui-gtk/UgtkDownloadForm.c:336 ../ui-gtk/UgtkDownloadForm.c:1009 msgid "Select Post File" msgstr "選檡 Post 檔案" #. label - user agent -#: ../../po/../ui-gtk/UgtkDownloadForm.c:346 +#: ../ui-gtk/UgtkDownloadForm.c:346 msgid "User Agent:" msgstr "用戶代理:" #. Retry limit - label -#: ../../po/../ui-gtk/UgtkDownloadForm.c:362 +#: ../ui-gtk/UgtkDownloadForm.c:362 msgid "Retry _limit:" msgstr "重試限制(_L):" #. counts - label -#: ../../po/../ui-gtk/UgtkDownloadForm.c:377 +#: ../ui-gtk/UgtkDownloadForm.c:377 msgid "counts" msgstr "次" #. Retry delay - label -#: ../../po/../ui-gtk/UgtkDownloadForm.c:384 +#: ../ui-gtk/UgtkDownloadForm.c:384 msgid "Retry _delay:" msgstr "重試延遲(_D):" #. seconds - label -#: ../../po/../ui-gtk/UgtkDownloadForm.c:399 +#: ../ui-gtk/UgtkDownloadForm.c:399 msgid "seconds" msgstr "秒" #. label - Max upload speed -#: ../../po/../ui-gtk/UgtkDownloadForm.c:406 +#: ../ui-gtk/UgtkDownloadForm.c:406 msgid "Max upload speed:" msgstr "最大上傳速度" #. label - "KiB/s" -#: ../../po/../ui-gtk/UgtkDownloadForm.c:418 -#: ../../po/../ui-gtk/UgtkDownloadForm.c:436 -#: ../../po/../ui-gtk/UgtkSettingForm.c:286 -#: ../../po/../ui-gtk/UgtkSettingForm.c:298 -#: ../../po/../ui-gtk/UgtkSettingForm.c:578 -#: ../../po/../ui-gtk/UgtkSettingForm.c:590 +#: ../ui-gtk/UgtkDownloadForm.c:418 ../ui-gtk/UgtkDownloadForm.c:436 +#: ../ui-gtk/UgtkSettingForm.c:311 ../ui-gtk/UgtkSettingForm.c:323 +#: ../ui-gtk/UgtkSettingForm.c:612 ../ui-gtk/UgtkSettingForm.c:624 msgid "KiB/s" msgstr "KiB/s" #. label - Max download speed -#: ../../po/../ui-gtk/UgtkDownloadForm.c:424 +#: ../ui-gtk/UgtkDownloadForm.c:424 msgid "Max download speed:" msgstr "最大下載速度" #. Retrieve timestamp -#: ../../po/../ui-gtk/UgtkDownloadForm.c:442 +#: ../ui-gtk/UgtkDownloadForm.c:442 msgid "Retrieve timestamp" msgstr "取回時間戳記" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:51 +#: ../ui-gtk/UgtkMenubar-ui.c:51 msgid "_File" msgstr "檔案(_F)" #. Batch Downloads --- start --- -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:94 +#: ../ui-gtk/UgtkMenubar-ui.c:94 msgid "_Batch Downloads" msgstr "批次下載(_B)" #. Batch downloads - Clipboard batch -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:100 +#: ../ui-gtk/UgtkMenubar-ui.c:100 msgid "_Clipboard batch..." msgstr "剪貼簿批次下載(_C)..." #. Batch downloads - URL Sequence batch -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:110 +#: ../ui-gtk/UgtkMenubar-ui.c:110 msgid "_URL Sequence batch..." msgstr "_URL 序列下載..." #. Batch downloads - Text file import (.txt) -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:120 +#: ../ui-gtk/UgtkMenubar-ui.c:120 msgid "_Text file import (.txt)..." msgstr "匯入文字檔(_T)..." #. Batch downloads - HTML file import (.html) -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:130 +#: ../ui-gtk/UgtkMenubar-ui.c:130 msgid "_HTML file import (.html)..." msgstr "匯入HTML檔(_H)..." #. Batch downloads - Export to Text file (.txt) -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:142 +#: ../ui-gtk/UgtkMenubar-ui.c:142 msgid "_Export to Text file (.txt)..." msgstr "匯出文字檔(_E)..." #. Open Category -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:156 +#: ../ui-gtk/UgtkMenubar-ui.c:156 msgid "_Open category..." msgstr "開啟分類檔案(_O)..." #. Save Category -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:167 +#: ../ui-gtk/UgtkMenubar-ui.c:167 msgid "_Save category as..." msgstr "另存分類為(_S)..." #. Save All -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:178 +#: ../ui-gtk/UgtkMenubar-ui.c:178 msgid "Save _all settings" msgstr "儲存全部設定(_A)" #. Offline mode -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:192 +#: ../ui-gtk/UgtkMenubar-ui.c:192 msgid "Offline Mode" msgstr "離線模式" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:210 +#: ../ui-gtk/UgtkMenubar-ui.c:210 msgid "_Edit" msgstr "編輯(_E)" #. menu.gtk_menu_shell_append((GtkMenuShell*)menu, gtk_tearoff_menu_item_new() ); #. Settings shortcut -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:215 -#: ../../po/../ui-gtk/UgtkTrayIcon.c:99 +#: ../ui-gtk/UgtkMenubar-ui.c:215 ../ui-gtk/UgtkTrayIcon.c:99 msgid "Clipboard _Monitor" msgstr "監視剪貼簿(_M)" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:219 -#: ../../po/../ui-gtk/UgtkTrayIcon.c:103 +#: ../ui-gtk/UgtkMenubar-ui.c:219 ../ui-gtk/UgtkTrayIcon.c:103 msgid "Clipboard works quietly" msgstr "剪貼簿静静地工作" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:223 -#: ../../po/../ui-gtk/UgtkTrayIcon.c:107 +#: ../ui-gtk/UgtkMenubar-ui.c:223 ../ui-gtk/UgtkTrayIcon.c:107 msgid "Command-line works quietly" msgstr "命令列静静地工作" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:227 -#: ../../po/../ui-gtk/UgtkTrayIcon.c:111 +#: ../ui-gtk/UgtkMenubar-ui.c:227 ../ui-gtk/UgtkTrayIcon.c:111 msgid "Skip existing URI" msgstr "跳過已有的URI" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:231 -#: ../../po/../ui-gtk/UgtkSettingForm.c:204 -#: ../../po/../ui-gtk/UgtkTrayIcon.c:115 -msgid "Apply recently download settings" +#: ../ui-gtk/UgtkMenubar-ui.c:231 ../ui-gtk/UgtkSettingForm.c:223 +#: ../ui-gtk/UgtkTrayIcon.c:115 +msgid "Apply recent download settings" msgstr "套用上一次的下載設定" #. --- Completion Auto-Actions --- start --- -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:238 +#: ../ui-gtk/UgtkMenubar-ui.c:238 msgid "Completion _Auto-Actions" msgstr "完成自動操作(_A)" #. Completion Auto-Actions - Disable -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:244 +#: ../ui-gtk/UgtkMenubar-ui.c:244 msgid "_Disable" msgstr "禁用(_D)" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:249 +#: ../ui-gtk/UgtkMenubar-ui.c:249 msgid "Hibernate" msgstr "休眠" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:254 +#: ../ui-gtk/UgtkMenubar-ui.c:254 msgid "Suspend" msgstr "暫停" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:259 +#: ../ui-gtk/UgtkMenubar-ui.c:259 msgid "Shutdown" msgstr "關機" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:264 +#: ../ui-gtk/UgtkMenubar-ui.c:264 msgid "Reboot" msgstr "重新開機" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:269 +#: ../ui-gtk/UgtkMenubar-ui.c:269 msgid "Custom" msgstr "自訂" #. Completion Auto-Actions - Remember -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:275 +#: ../ui-gtk/UgtkMenubar-ui.c:275 msgid "Remember setting" msgstr "記住設定" #. Completion Auto-Actions - Help -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:279 -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:682 +#: ../ui-gtk/UgtkMenubar-ui.c:279 ../ui-gtk/UgtkMenubar-ui.c:682 msgid "_Help" msgstr "說明(_H)" #. --- Completion Auto-Actions --- end --- #. menu_item = gtk_menu_item_new_with_mnemonic (_("_Settings...")); #. Settings -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:285 -#: ../../po/../ui-gtk/UgtkTrayIcon.c:122 +#: ../ui-gtk/UgtkMenubar-ui.c:285 ../ui-gtk/UgtkTrayIcon.c:122 msgid "_Settings..." msgstr "設定(_S)..." -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:304 +#: ../ui-gtk/UgtkMenubar-ui.c:304 msgid "_View" msgstr "檢視(_V)" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:308 +#: ../ui-gtk/UgtkMenubar-ui.c:308 msgid "_Toolbar" msgstr "工具列(_T)" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:313 +#: ../ui-gtk/UgtkMenubar-ui.c:313 msgid "Statusbar" msgstr "狀態列" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:323 +#: ../ui-gtk/UgtkMenubar-ui.c:323 msgid "_Summary" msgstr "摘要(_S)" #. Summary Items --- start --- -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:331 +#: ../ui-gtk/UgtkMenubar-ui.c:331 msgid "Summary _Items" msgstr "摘要項目(_I)" #. Summary Items - Name -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:336 +#: ../ui-gtk/UgtkMenubar-ui.c:336 msgid "_Name" msgstr "名稱(_N)" #. Summary Items - Folder -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:341 +#: ../ui-gtk/UgtkMenubar-ui.c:341 msgid "_Folder" msgstr "資料夾(_F)" @@ -925,813 +961,747 @@ #. menubar->view.summary_items.elapsed = menu_item; #. Summary Items - URL #. Download Columns - URL -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:356 -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:436 +#: ../ui-gtk/UgtkMenubar-ui.c:356 ../ui-gtk/UgtkMenubar-ui.c:436 msgid "_URL" msgstr "網址(_U)" #. Summary Items - Message -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:361 +#: ../ui-gtk/UgtkMenubar-ui.c:361 msgid "_Message" msgstr "訊息(_M)" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:376 +#: ../ui-gtk/UgtkMenubar-ui.c:376 msgid "Download _Columns" msgstr "下載欄位(_C)" -#. Download Columns - Completed -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:381 +#. Download Columns - Complete +#: ../ui-gtk/UgtkMenubar-ui.c:381 msgid "_Complete" msgstr "完成(_C)" #. Download Columns - Total -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:386 +#: ../ui-gtk/UgtkMenubar-ui.c:386 msgid "_Size" msgstr "大小(_S)" #. Download Columns - Percent (%) -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:391 +#: ../ui-gtk/UgtkMenubar-ui.c:391 msgid "_Percent '%'" msgstr "百分比 '%' (_P)" #. Download Columns - Elapsed -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:396 +#: ../ui-gtk/UgtkMenubar-ui.c:396 msgid "_Elapsed" msgstr "經過時間(_E)" #. Download Columns - Left -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:401 +#: ../ui-gtk/UgtkMenubar-ui.c:401 msgid "_Left" msgstr "剩餘時間(_L)" #. Download Columns - Speed -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:406 -#: ../../po/../ui-gtk/UgtkNodeView.c:855 +#: ../ui-gtk/UgtkMenubar-ui.c:406 ../ui-gtk/UgtkNodeView.c:861 msgid "Speed" msgstr "速度" #. Download Columns - Up Speed -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:411 -#: ../../po/../ui-gtk/UgtkNodeView.c:869 +#: ../ui-gtk/UgtkMenubar-ui.c:411 ../ui-gtk/UgtkNodeView.c:875 msgid "Up Speed" msgstr "上傳速度" #. Download Columns - Uploaded -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:416 -#: ../../po/../ui-gtk/UgtkNodeView.c:883 +#: ../ui-gtk/UgtkMenubar-ui.c:416 ../ui-gtk/UgtkNodeView.c:889 msgid "Uploaded" msgstr "上傳大小" #. Download Columns - Ratio -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:421 -#: ../../po/../ui-gtk/UgtkNodeView.c:897 +#: ../ui-gtk/UgtkMenubar-ui.c:421 ../ui-gtk/UgtkNodeView.c:903 msgid "Ratio" msgstr "分享比" #. Download Columns - Retry -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:426 +#: ../ui-gtk/UgtkMenubar-ui.c:426 msgid "_Retry" msgstr "重試(_R)" #. Download Columns - Added On -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:441 -#: ../../po/../ui-gtk/UgtkNodeView.c:954 +#: ../ui-gtk/UgtkMenubar-ui.c:441 ../ui-gtk/UgtkNodeView.c:960 msgid "Added On" msgstr "加入時間" #. Download Columns - Completed On -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:446 -#: ../../po/../ui-gtk/UgtkNodeView.c:968 +#: ../ui-gtk/UgtkMenubar-ui.c:446 ../ui-gtk/UgtkNodeView.c:974 msgid "Completed On" msgstr "完成時間" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:461 +#: ../ui-gtk/UgtkMenubar-ui.c:461 msgid "_Category" msgstr "分類(_C)" #. New Category -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:466 +#: ../ui-gtk/UgtkMenubar-ui.c:466 msgid "_New Category..." msgstr "新增分類(_N)..." #. Delete Category -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:476 +#: ../ui-gtk/UgtkMenubar-ui.c:476 msgid "_Delete Category" msgstr "刪除分類(_D)" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:517 +#: ../ui-gtk/UgtkMenubar-ui.c:517 msgid "_Download" msgstr "下載(_D)" #. menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE, accel_group); -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:529 +#: ../ui-gtk/UgtkMenubar-ui.c:529 msgid "_Delete Entry" msgstr "刪除資料(_D)" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:540 +#: ../ui-gtk/UgtkMenubar-ui.c:540 msgid "Delete Entry and _File" msgstr "刪除檔案和資料(_F)" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:555 +#: ../ui-gtk/UgtkMenubar-ui.c:555 msgid "Open _Containing folder" msgstr "開啟所在的資料夾(_C)" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:568 +#: ../ui-gtk/UgtkMenubar-ui.c:568 msgid "Force Start" msgstr "強制開始" #. Move to --- start --- -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:596 +#: ../ui-gtk/UgtkMenubar-ui.c:596 msgid "_Move To" msgstr "搬移到(_M)" #. Priority --- start --- -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:645 +#: ../ui-gtk/UgtkMenubar-ui.c:645 msgid "Priority" msgstr "優先權" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:654 +#: ../ui-gtk/UgtkMenubar-ui.c:654 msgid "_High" msgstr "高(_H)" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:659 +#: ../ui-gtk/UgtkMenubar-ui.c:659 msgid "_Normal" msgstr "一般(_N)" -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:664 +#: ../ui-gtk/UgtkMenubar-ui.c:664 msgid "_Low" msgstr "低(_L)" #. Get Help Online -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:687 +#: ../ui-gtk/UgtkMenubar-ui.c:687 msgid "Get Help Online" msgstr "取得線上協助" #. Documentation -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:698 +#: ../ui-gtk/UgtkMenubar-ui.c:698 msgid "Documentation" msgstr "文件" #. Support Forum -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:709 +#: ../ui-gtk/UgtkMenubar-ui.c:709 msgid "Support Forum" msgstr "支援論坦" #. Submit Feedback -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:720 +#: ../ui-gtk/UgtkMenubar-ui.c:720 msgid "Submit Feedback" msgstr "提交反饋" #. Report a Bug -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:731 +#: ../ui-gtk/UgtkMenubar-ui.c:731 msgid "Report a Bug" msgstr "回報錯誤" #. Keyboard Shortcuts -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:742 +#: ../ui-gtk/UgtkMenubar-ui.c:742 msgid "Keyboard Shortcuts" msgstr "快捷鍵" #. Check for Updates -#: ../../po/../ui-gtk/UgtkMenubar-ui.c:749 +#: ../ui-gtk/UgtkMenubar-ui.c:749 msgid "Check for Updates" msgstr "檢查更新" -#: ../../po/../ui-gtk/UgtkMenubar.c:186 +#: ../ui-gtk/UgtkMenubar.c:187 msgid "Settings" msgstr "設定" -#: ../../po/../ui-gtk/UgtkMenubar.c:453 +#: ../ui-gtk/UgtkMenubar.c:454 #, c-format msgid "Can't launch default application for file '%s'." msgstr "無法啟動檔案 '%s' 的預設應用程式." -#: ../../po/../ui-gtk/UgtkMenubar.c:485 +#: ../ui-gtk/UgtkMenubar.c:486 #, c-format msgid "'%s' - This folder does not exist." msgstr "'%s' - 這個資料夾不存在." #. title -#: ../../po/../ui-gtk/UgtkNodeDialog.c:208 -#: ../../po/../ui-gtk/UgtkNodeDialog.c:212 +#: ../ui-gtk/UgtkNodeDialog.c:219 ../ui-gtk/UgtkNodeDialog.c:223 msgid "URI had existed" msgstr "URI已經存在" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:210 +#: ../ui-gtk/UgtkNodeDialog.c:221 msgid "This URI had existed, are you sure to continue?" msgstr "這個URI已經存在,你確定要繼續嗎?" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:346 +#: ../ui-gtk/UgtkNodeDialog.c:359 msgid "General" msgstr "一般設定" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:348 +#: ../ui-gtk/UgtkNodeDialog.c:361 msgid "Advanced" msgstr "進階設定" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:357 +#: ../ui-gtk/UgtkNodeDialog.c:370 msgid "Category settings" msgstr "分類設定" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:359 +#: ../ui-gtk/UgtkNodeDialog.c:372 msgid "Default for new download 1" msgstr "新增下載的預設值 1" -#: ../../po/../ui-gtk/UgtkNodeDialog.c:361 +#: ../ui-gtk/UgtkNodeDialog.c:374 msgid "Default 2" msgstr "預設值 2" -#: ../../po/../ui-gtk/UgtkNodeView.c:143 ../../po/../ui-gtk/UgtkNodeView.c:606 -#: ../../po/../ui-gtk/UgtkSummary.c:115 +#: ../ui-gtk/UgtkNodeView.c:143 ../ui-gtk/UgtkNodeView.c:608 +#: ../ui-gtk/UgtkSummary.c:107 msgid "unnamed" msgstr "未命名" -#: ../../po/../ui-gtk/UgtkNodeView.c:639 +#: ../ui-gtk/UgtkNodeView.c:641 msgid "Paused" msgstr "暫停" -#: ../../po/../ui-gtk/UgtkNodeView.c:640 +#: ../ui-gtk/UgtkNodeView.c:642 msgid "Uploading" msgstr "上傳中" -#: ../../po/../ui-gtk/UgtkNodeView.c:641 +#: ../ui-gtk/UgtkNodeView.c:643 msgid "Completed" msgstr "已完成" -#: ../../po/../ui-gtk/UgtkNodeView.c:643 +#: ../ui-gtk/UgtkNodeView.c:645 msgid "Recycled" msgstr "回收區" -#: ../../po/../ui-gtk/UgtkNodeView.c:644 +#: ../ui-gtk/UgtkNodeView.c:646 msgid "Queuing" msgstr "排隊中" -#: ../../po/../ui-gtk/UgtkNodeView.c:645 +#: ../ui-gtk/UgtkNodeView.c:647 msgid "Active" msgstr "活躍的" -#: ../../po/../ui-gtk/UgtkNodeView.c:666 +#: ../ui-gtk/UgtkNodeView.c:668 msgid "All Status" msgstr "全狀態" -#: ../../po/../ui-gtk/UgtkNodeView.c:771 -#: ../../po/../ui-gtk/UgtkSettingDialog.c:88 -#: ../../po/../ui-gtk/UgtkSummary.c:108 +#: ../ui-gtk/UgtkNodeView.c:773 ../ui-gtk/UgtkSettingDialog.c:101 +#: ../ui-gtk/UgtkSummary.c:100 msgid "Name" msgstr "名稱" -#: ../../po/../ui-gtk/UgtkNodeView.c:784 +#: ../ui-gtk/UgtkNodeView.c:790 msgid "Complete" msgstr "完成" -#: ../../po/../ui-gtk/UgtkNodeView.c:798 +#: ../ui-gtk/UgtkNodeView.c:804 msgid "Size" msgstr "大小" -#: ../../po/../ui-gtk/UgtkNodeView.c:813 +#: ../ui-gtk/UgtkNodeView.c:819 msgid "%" msgstr "%" -#: ../../po/../ui-gtk/UgtkNodeView.c:827 +#: ../ui-gtk/UgtkNodeView.c:833 msgid "Elapsed" msgstr "經過時間" -#: ../../po/../ui-gtk/UgtkNodeView.c:841 +#: ../ui-gtk/UgtkNodeView.c:847 msgid "Left" msgstr "剩餘時間" -#: ../../po/../ui-gtk/UgtkNodeView.c:940 -#: ../../po/../ui-gtk/UgtkSettingForm.c:550 -#: ../../po/../ui-gtk/UgtkSummary.c:151 +#: ../ui-gtk/UgtkNodeView.c:946 ../ui-gtk/UgtkSettingForm.c:584 +#: ../ui-gtk/UgtkSummary.c:143 msgid "URI" msgstr "網址" -#: ../../po/../ui-gtk/UgtkNodeView.c:991 +#: ../ui-gtk/UgtkNodeView.c:997 msgid "Quantity" msgstr "數量" #. proxy type label & combo box -#: ../../po/../ui-gtk/UgtkProxyForm.c:64 +#: ../ui-gtk/UgtkProxyForm.c:64 msgid "Proxy:" msgstr "代理伺服器:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:67 +#: ../ui-gtk/UgtkProxyForm.c:67 msgid "Don't use" msgstr "不使用" -#: ../../po/../ui-gtk/UgtkProxyForm.c:69 +#: ../ui-gtk/UgtkProxyForm.c:69 msgid "Default" msgstr "預設" #. host label & entry -#: ../../po/../ui-gtk/UgtkProxyForm.c:121 +#: ../ui-gtk/UgtkProxyForm.c:121 msgid "Host:" msgstr "主機:" #. port label & entry -#: ../../po/../ui-gtk/UgtkProxyForm.c:132 +#: ../ui-gtk/UgtkProxyForm.c:132 msgid "Port:" msgstr "埠號:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:351 +#: ../ui-gtk/UgtkProxyForm.c:359 msgid "Socket:" msgstr "Socket:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:361 +#: ../ui-gtk/UgtkProxyForm.c:369 msgid "Socket args:" msgstr "Socket args:" -#: ../../po/../ui-gtk/UgtkProxyForm.c:371 +#: ../ui-gtk/UgtkProxyForm.c:379 msgid "Element:" msgstr "Element:" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:66 +#: ../ui-gtk/UgtkScheduleForm.c:57 msgid "Mon" msgstr "一" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:67 +#: ../ui-gtk/UgtkScheduleForm.c:58 msgid "Tue" msgstr "二" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:68 +#: ../ui-gtk/UgtkScheduleForm.c:59 msgid "Wed" msgstr "三" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:69 +#: ../ui-gtk/UgtkScheduleForm.c:60 msgid "Thu" msgstr "四" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:70 +#: ../ui-gtk/UgtkScheduleForm.c:61 msgid "Fri" msgstr "五" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:71 +#: ../ui-gtk/UgtkScheduleForm.c:62 msgid "Sat" msgstr "六" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:72 +#: ../ui-gtk/UgtkScheduleForm.c:63 msgid "Sun" msgstr "日" -#: ../../po/../ui-gtk/UgtkScheduleForm.c:99 +#: ../ui-gtk/UgtkScheduleForm.c:104 msgid "_Enable Scheduler" msgstr "啟用排程器(_E)" #. Turn off - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:141 +#: ../ui-gtk/UgtkScheduleForm.c:154 msgid "Turn off" msgstr "關閉" #. Turn off - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:146 +#: ../ui-gtk/UgtkScheduleForm.c:159 msgid "- stop all task" msgstr "- 停止所有任務" #. Normal - label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:156 +#: ../ui-gtk/UgtkScheduleForm.c:169 msgid "Normal" msgstr "一般" #. Normal - help label -#: ../../po/../ui-gtk/UgtkScheduleForm.c:161 +#: ../ui-gtk/UgtkScheduleForm.c:174 msgid "- run task normally" msgstr "- 正常運行" -#: ../../po/../ui-gtk/UgtkSelector.c:254 +#: ../ui-gtk/UgtkSelector.c:254 msgid "All" msgstr "全部" -#: ../../po/../ui-gtk/UgtkSelector.c:259 +#: ../ui-gtk/UgtkSelector.c:259 ../ui-gtk/UgtkSequence.c:59 msgid "None" msgstr "清除" -#: ../../po/../ui-gtk/UgtkSelector.c:276 +#: ../ui-gtk/UgtkSelector.c:276 msgid "Mark by filter" msgstr "條件標記" -#: ../../po/../ui-gtk/UgtkSelector.c:294 +#: ../ui-gtk/UgtkSelector.c:294 msgid "Mark URLs by host AND filename extension." msgstr "用主機名稱和副檔名來標記網址." -#: ../../po/../ui-gtk/UgtkSelector.c:297 +#: ../ui-gtk/UgtkSelector.c:297 msgid "This will reset all marks of URLs." msgstr "這個功能會重新設定所有的標記." #. filter view ----------------------- #. left side -#: ../../po/../ui-gtk/UgtkSelector.c:305 +#: ../ui-gtk/UgtkSelector.c:305 msgid "Host" msgstr "主機名稱" #. right side (filename extension) -#: ../../po/../ui-gtk/UgtkSelector.c:309 +#: ../ui-gtk/UgtkSelector.c:309 msgid "File Ext." msgstr "副檔名" -#: ../../po/../ui-gtk/UgtkSelector.c:449 +#: ../ui-gtk/UgtkSelector.c:449 msgid "URL" msgstr "網址" -#: ../../po/../ui-gtk/UgtkSelector.c:781 +#: ../ui-gtk/UgtkSelector.c:781 msgid "Base hypertext reference" msgstr "基本超文本引用" #. select all -#: ../../po/../ui-gtk/UgtkSelector.c:797 +#: ../ui-gtk/UgtkSelector.c:797 msgid "Mark _All" msgstr "標記全部(_A)" #. select none -#: ../../po/../ui-gtk/UgtkSelector.c:801 +#: ../ui-gtk/UgtkSelector.c:801 msgid "Mark _None" msgstr "清除標記(_N)" #. select by filter -#: ../../po/../ui-gtk/UgtkSelector.c:805 +#: ../ui-gtk/UgtkSelector.c:805 msgid "_Mark by filter..." msgstr "條件標記(_M)" -#. e.g. -#: ../../po/../ui-gtk/UgtkSequencer.c:74 -msgid "e.g." -msgstr "範例" +#: ../ui-gtk/UgtkSequence.c:61 +msgid "Num" +msgstr "" -#. ------------------------------------------------------- -#. radio "From" -#: ../../po/../ui-gtk/UgtkSequencer.c:85 -msgid "_From:" -msgstr "從(_F):" +#: ../ui-gtk/UgtkSequence.c:63 +msgid "Char" +msgstr "" -#. label "To" -#: ../../po/../ui-gtk/UgtkSequencer.c:108 +#. Label - To +#: ../ui-gtk/UgtkSequence.c:89 msgid "To:" msgstr "到:" -#. label "digits" -#: ../../po/../ui-gtk/UgtkSequencer.c:123 +#. label - digits +#: ../ui-gtk/UgtkSequence.c:104 msgid "digits:" msgstr "位數:" -#: ../../po/../ui-gtk/UgtkSequencer.c:132 -msgid "F_rom:" -msgstr "從(_R):" - -#. label case-sensitive -#: ../../po/../ui-gtk/UgtkSequencer.c:162 +#. label - case-sensitive +#: ../ui-gtk/UgtkSequence.c:128 msgid "case-sensitive" msgstr "大小寫不同" -#: ../../po/../ui-gtk/UgtkSequencer.c:188 -msgid "No wildcard(*) character in URL entry." -msgstr "網址項目裡沒有萬用字元(*)." +#. e.g. +#: ../ui-gtk/UgtkSequence.c:246 +msgid "e.g." +msgstr "範例" -#: ../../po/../ui-gtk/UgtkSequencer.c:192 -msgid "URL is not valid." +#: ../ui-gtk/UgtkSequence.c:295 +msgid "URI is not valid." msgstr "不合法的網址." -#: ../../po/../ui-gtk/UgtkSequencer.c:196 +#: ../ui-gtk/UgtkSequence.c:303 +msgid "No wildcard(*) character in URI entry." +msgstr "網址項目裡沒有萬用字元(*)." + +#: ../ui-gtk/UgtkSequence.c:311 msgid "No character in 'From' or 'To' entry." msgstr "'從'或'到'的項目裡沒有資料." -#: ../../po/../ui-gtk/UgtkSequencer.c:311 +#: ../ui-gtk/UgtkSequence.c:393 msgid "Preview" msgstr "預覽" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:100 +#: ../ui-gtk/UgtkSettingDialog.c:113 msgid "User Interface" msgstr "用戶界面" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:112 +#: ../ui-gtk/UgtkSettingDialog.c:125 msgid "Bandwidth" msgstr "頻寬" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:118 +#: ../ui-gtk/UgtkSettingDialog.c:131 msgid "Scheduler" msgstr "排程器" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:124 +#: ../ui-gtk/UgtkSettingDialog.c:137 msgid "Plug-in" -msgstr "插件" +msgstr "外掛程式" + +#: ../ui-gtk/UgtkSettingDialog.c:143 +msgid "Media website" +msgstr "媒體網站" -#: ../../po/../ui-gtk/UgtkSettingDialog.c:130 +#: ../ui-gtk/UgtkSettingDialog.c:149 msgid "Others" msgstr "其他" #. Monitor button -#: ../../po/../ui-gtk/UgtkSettingForm.c:58 +#: ../ui-gtk/UgtkSettingForm.c:61 msgid "_Enable clipboard monitor" msgstr "監視剪貼簿(_E)" #. quiet mode -#: ../../po/../ui-gtk/UgtkSettingForm.c:63 +#: ../ui-gtk/UgtkSettingForm.c:66 msgid "_Quiet mode" msgstr "安靜模式(_Q)" -#: ../../po/../ui-gtk/UgtkSettingForm.c:69 -#: ../../po/../ui-gtk/UgtkSettingForm.c:457 +#: ../ui-gtk/UgtkSettingForm.c:72 ../ui-gtk/UgtkSettingForm.c:488 msgid "Default category index" msgstr "預設分類索引" -#: ../../po/../ui-gtk/UgtkSettingForm.c:81 -#: ../../po/../ui-gtk/UgtkSettingForm.c:469 +#: ../ui-gtk/UgtkSettingForm.c:84 ../ui-gtk/UgtkSettingForm.c:500 msgid "Adding to Nth category if no matched category." msgstr "添加到第N個分類,如果沒有匹配的類別。" -#: ../../po/../ui-gtk/UgtkSettingForm.c:88 +#. media or storage website +#: ../ui-gtk/UgtkSettingForm.c:90 +msgid "_Monitor URL of website" +msgstr "監視網站的 URL" + +#: ../ui-gtk/UgtkSettingForm.c:105 msgid "Monitor clipboard for specified file types:" msgstr "監視剪貼簿裡指定的檔案類型:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:108 +#: ../ui-gtk/UgtkSettingForm.c:125 msgid "Separate the types with character '|'." msgstr "用 '|' 字元分隔檔案類型." -#: ../../po/../ui-gtk/UgtkSettingForm.c:113 +#: ../ui-gtk/UgtkSettingForm.c:130 msgid "You can use regular expressions here." msgstr "這裡可以使用正規表達式." -#: ../../po/../ui-gtk/UgtkSettingForm.c:157 +#: ../ui-gtk/UgtkSettingForm.c:176 msgid "Confirmation" msgstr "確認" #. Confirmation check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:163 +#: ../ui-gtk/UgtkSettingForm.c:182 msgid "Show confirmation dialog on exit" msgstr "關閉時確認" -#: ../../po/../ui-gtk/UgtkSettingForm.c:166 +#: ../ui-gtk/UgtkSettingForm.c:185 msgid "Confirm when deleting files" msgstr "刪除檔案時確認" -#: ../../po/../ui-gtk/UgtkSettingForm.c:172 +#: ../ui-gtk/UgtkSettingForm.c:191 msgid "System Tray" msgstr "系統列" #. System Tray check buttons -#: ../../po/../ui-gtk/UgtkSettingForm.c:178 +#: ../ui-gtk/UgtkSettingForm.c:197 msgid "Always show tray icon" msgstr "永遠顯示系統列圖示" -#: ../../po/../ui-gtk/UgtkSettingForm.c:181 +#: ../ui-gtk/UgtkSettingForm.c:200 msgid "Minimize to tray on startup" msgstr "啟動時縮小到系統列" -#: ../../po/../ui-gtk/UgtkSettingForm.c:184 +#: ../ui-gtk/UgtkSettingForm.c:203 msgid "Close to tray on window close" msgstr "關閉視窗時縮小到系統列" -#: ../../po/../ui-gtk/UgtkSettingForm.c:188 +#: ../ui-gtk/UgtkSettingForm.c:207 msgid "Use Ubuntu's App Indicator" msgstr "使用Ubuntu的 App Indicator" -#: ../../po/../ui-gtk/UgtkSettingForm.c:195 +#: ../ui-gtk/UgtkSettingForm.c:214 msgid "Enable offline mode on startup" msgstr "啟動時進入離線模式" -#: ../../po/../ui-gtk/UgtkSettingForm.c:198 +#: ../ui-gtk/UgtkSettingForm.c:217 msgid "Download starting notification" msgstr "開始下載時通知" -#: ../../po/../ui-gtk/UgtkSettingForm.c:201 +#: ../ui-gtk/UgtkSettingForm.c:220 msgid "Sound when download is finished" msgstr "下載完成時發出聲音" -#: ../../po/../ui-gtk/UgtkSettingForm.c:270 +#. widget = gtk_check_button_new_with_label (_("Skip existing URI from clipboard and command-line")); +#. uiform->skip_existing = (GtkToggleButton*) widget; +#. gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); +#: ../ui-gtk/UgtkSettingForm.c:229 +msgid "Display large icon" +msgstr "顯示大圖示" + +#: ../ui-gtk/UgtkSettingForm.c:295 msgid "These will affect all plug-ins." -msgstr "這些將影響到所有的插件。" +msgstr "這些將影響到所有的外掛程式。" #. Global speed limit -#: ../../po/../ui-gtk/UgtkSettingForm.c:276 +#: ../ui-gtk/UgtkSettingForm.c:301 msgid "Global speed limit" msgstr "全體速度限制" -#: ../../po/../ui-gtk/UgtkSettingForm.c:284 -#: ../../po/../ui-gtk/UgtkSettingForm.c:576 +#: ../ui-gtk/UgtkSettingForm.c:309 ../ui-gtk/UgtkSettingForm.c:610 msgid "Max upload speed" msgstr "最大上傳速度" -#: ../../po/../ui-gtk/UgtkSettingForm.c:296 -#: ../../po/../ui-gtk/UgtkSettingForm.c:588 +#: ../ui-gtk/UgtkSettingForm.c:321 ../ui-gtk/UgtkSettingForm.c:622 msgid "Max download speed" msgstr "最大下載速度" -#: ../../po/../ui-gtk/UgtkSettingForm.c:329 +#: ../ui-gtk/UgtkSettingForm.c:354 msgid "Completion Auto-Actions" msgstr "完成自動操作" -#: ../../po/../ui-gtk/UgtkSettingForm.c:337 +#: ../ui-gtk/UgtkSettingForm.c:362 msgid "Custom command:" msgstr "自定命令:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:349 -msgid "Custom command if error occured:" +#: ../ui-gtk/UgtkSettingForm.c:374 +msgid "Custom command if error occurred:" msgstr "如果發生錯誤時自定命令:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:399 +#: ../ui-gtk/UgtkSettingForm.c:424 msgid "_Autosave" msgstr "自動存檔(_A)" -#. auto save spin & label (interval) -#: ../../po/../ui-gtk/UgtkSettingForm.c:405 -msgid "minutes" -msgstr "分鐘" - -#. auto save label -#: ../../po/../ui-gtk/UgtkSettingForm.c:413 +#. auto save interval label +#: ../ui-gtk/UgtkSettingForm.c:435 msgid "_Interval:" msgstr "間隔(_I):" +#. auto save interval unit label +#: ../ui-gtk/UgtkSettingForm.c:446 +msgid "minutes" +msgstr "分鐘" + #. Commandline Settings -#: ../../po/../ui-gtk/UgtkSettingForm.c:444 +#: ../ui-gtk/UgtkSettingForm.c:475 msgid "Commandline Settings" msgstr "命令列設定" #. --quiet -#: ../../po/../ui-gtk/UgtkSettingForm.c:451 +#: ../ui-gtk/UgtkSettingForm.c:482 msgid "Use '--quiet' by default" msgstr "預設使用 '--quiet' 參數" -#: ../../po/../ui-gtk/UgtkSettingForm.c:520 +#: ../ui-gtk/UgtkSettingForm.c:554 msgid "Plug-in matching order:" -msgstr "插件匹配順序:" +msgstr "外掛程式匹配順序:" -#: ../../po/../ui-gtk/UgtkSettingForm.c:543 +#: ../ui-gtk/UgtkSettingForm.c:577 msgid "Aria2 plug-in options" -msgstr "Aria2 插件選項" +msgstr "Aria2 外掛程式選項" -#: ../../po/../ui-gtk/UgtkSettingForm.c:559 +#: ../ui-gtk/UgtkSettingForm.c:593 msgid "RPC authorization secret token" msgstr "遠程呼叫授權密碼" #. ------------------------------------------------------------------------ #. Speed Limits -#: ../../po/../ui-gtk/UgtkSettingForm.c:568 +#: ../ui-gtk/UgtkSettingForm.c:602 msgid "Global speed limit for aria2 only" msgstr "Aria2 全域速度限制" #. ------------------------------------------------------------------------ #. aria2 works on local device #. launch -#: ../../po/../ui-gtk/UgtkSettingForm.c:601 +#: ../ui-gtk/UgtkSettingForm.c:635 msgid "_Launch aria2 on startup" msgstr "啟動時執行 aria2" #. shutdown -#: ../../po/../ui-gtk/UgtkSettingForm.c:607 +#: ../ui-gtk/UgtkSettingForm.c:641 msgid "_Shutdown aria2 on exit" msgstr "離開時關閉 aria2" #. ------------------------------------------------------------------------ #. Local options -#: ../../po/../ui-gtk/UgtkSettingForm.c:613 +#: ../ui-gtk/UgtkSettingForm.c:647 msgid "Launch aria2 on local device" msgstr "本地設備執行 aria2" -#: ../../po/../ui-gtk/UgtkSettingForm.c:622 +#: ../ui-gtk/UgtkSettingForm.c:656 msgid "Path" msgstr "路徑" -#: ../../po/../ui-gtk/UgtkSettingForm.c:633 +#: ../ui-gtk/UgtkSettingForm.c:674 msgid "Arguments" msgstr "參數" #. Arguments - hint -#: ../../po/../ui-gtk/UgtkSettingForm.c:638 +#: ../ui-gtk/UgtkSettingForm.c:679 msgid "You must restart uGet after modifying it." msgstr "修改'參數'之後必須重新啟動 uGet。" -#: ../../po/../ui-gtk/UgtkSummary.c:112 +#: ../ui-gtk/UgtkSettingForm.c:783 +msgid "Media matching mode:" +msgstr "媒體配對模式:" + +#: ../ui-gtk/UgtkSettingForm.c:788 +msgid "Don't match" +msgstr "不配對" + +#: ../ui-gtk/UgtkSettingForm.c:790 +msgid "Match 1 condition" +msgstr "符合1個配對條件" + +#: ../ui-gtk/UgtkSettingForm.c:792 +msgid "Match 2 condition" +msgstr "符合2個配對條件" + +#: ../ui-gtk/UgtkSettingForm.c:794 +msgid "Near quality" +msgstr "近似品質" + +#: ../ui-gtk/UgtkSettingForm.c:801 +msgid "Match conditions" +msgstr "配對條件" + +#. Quality +#: ../ui-gtk/UgtkSettingForm.c:810 +msgid "Quality:" +msgstr "品質:" + +#. Type +#: ../ui-gtk/UgtkSettingForm.c:830 +msgid "Type:" +msgstr "格式:" + +#: ../ui-gtk/UgtkSummary.c:104 msgid "File" msgstr "檔案" -#: ../../po/../ui-gtk/UgtkSummary.c:127 +#: ../ui-gtk/UgtkSummary.c:119 msgid "Folder" msgstr "目錄" -#: ../../po/../ui-gtk/UgtkSummary.c:270 +#: ../ui-gtk/UgtkSummary.c:262 msgid "Item" msgstr "項目" -#: ../../po/../ui-gtk/UgtkSummary.c:275 +#: ../ui-gtk/UgtkSummary.c:267 msgid "Value" msgstr "值" #. Copy All -#: ../../po/../ui-gtk/UgtkSummary.c:307 +#: ../ui-gtk/UgtkSummary.c:299 msgid "Copy _All" msgstr "複製全部(_A)" #. Show window -#: ../../po/../ui-gtk/UgtkTrayIcon.c:141 +#: ../ui-gtk/UgtkTrayIcon.c:141 msgid "Show window" msgstr "顯示視窗" #. Offline mode -#: ../../po/../ui-gtk/UgtkTrayIcon.c:147 +#: ../ui-gtk/UgtkTrayIcon.c:147 msgid "_Offline Mode" msgstr "離線模式(_O)" -#~ msgid "No plug-in support this scheme or file." -#~ msgstr "沒有插件支援這種方案或檔案." - -#~ msgid "Remember this action" -#~ msgstr "記住這個設定" - -#~ msgid "Minimize to tray" -#~ msgstr "縮小到系統列" - -#~ msgid "Exit uGet" -#~ msgstr "離開 uGet" - -#~ msgid "failed to launch aria2." -#~ msgstr "aria2 啟動失敗。" - -#~ msgid "Export to" -#~ msgstr "匯出到" - -#~ msgid "Save all" -#~ msgstr "全部儲存" - -#~ msgid "_Download..." -#~ msgstr "下載(_D)..." - -#~ msgid "_Category..." -#~ msgstr "分類(_C)..." - -#~ msgid "Torrent..." -#~ msgstr "Torrent..." - -#~ msgid "Metalink..." -#~ msgstr "Metalink..." - -#~ msgid "_Clipboard Option..." -#~ msgstr "剪貼簿選項(_C)..." - -#~ msgid "only one matched" -#~ msgstr "只有一個符合條件" - -#~ msgid "" -#~ "Failed to connect to aria2.\n" -#~ "Is aria2 shutdown? or aria2 launch failed." -#~ msgstr "" -#~ "無法連線到 aria2。\n" -#~ "aria2 是否已經關閉? 或是啟動失敗。" - -#~ msgid "" -#~ "This program need privileges to shutdown or suspend.\n" -#~ "If it can not work, please check your privileges." -#~ msgstr "" -#~ "程式需要權限才能關機.\n" -#~ "如果不能正常運作,請檢查權限。" - -#~ msgid "_URL:" -#~ msgstr "網址(_U):" - -#~ msgid "Options" -#~ msgstr "選項" - -#~ msgid "Connections per server" -#~ msgstr "每台伺服器的連線數" - -#~ msgid "UI Settings" -#~ msgstr "介面設定" - -#~ msgid "Add URL to Nth category" -#~ msgstr "URL 直接加入第幾個分類" - -#~ msgid "_Launch default application for specified file types:" -#~ msgstr "啟動指定檔案類型的預設應用程式(_L):" - -#~ msgid "'--category-index' default value" -#~ msgstr "設定 '--category-index' 的預設值" - -#~ msgid "_Enable aria2 plug-in" -#~ msgstr "啟用 aria2 插件(_E)" - -#~ msgid "Download" -#~ msgstr "下傳" - -#~ msgid "Shutdown when downloads complete" -#~ msgstr "下載完成時關機" - -#~ msgid "New Batch Download" -#~ msgstr "新增批次下載" - -#~ msgid "New _Batch download..." -#~ msgstr "新增批次下載(_B)..." - -#~ msgid "_Batch download..." -#~ msgstr "批次下載(_B)..." - -#~ msgid "_From Clipboard..." -#~ msgstr "從剪貼簿(_F)..." - -#~ msgid "Import _HTML file..." -#~ msgstr "匯入 HTML 檔案(_H)..." - -#~ msgid "_Import text file..." -#~ msgstr "匯入文字檔(_I)..." +#~ msgid "_From:" +#~ msgstr "從(_F):" -#~ msgid "" -#~ "Please make sure that all tasks have been completed\n" -#~ "before you modify settings." -#~ msgstr "在你修改設定前請確定所有的任務都已經完成。" +#~ msgid "F_rom:" +#~ msgstr "從(_R):" diff -Nru uget-2.0.2/README uget-2.2.2/README --- uget-2.0.2/README 2015-09-11 12:12:53.000000000 +0000 +++ uget-2.2.2/README 2019-05-19 16:50:00.000000000 +0000 @@ -1,149 +1,75 @@ -uGet 2.0.2: (2015-09-11) -1. curl plug-in: fix memory leak and avoid accessing NULL pointer. -2. curl plug-in: create new file with correct size if file size is not the same. -3. curl plug-in: create new file only in first connection. -4. curl plug-in: change setting's file name if plug-in created new file. -5. Don't resume file with incorrect aria2 control file (no bit field). -6. replace invalid characters \/:*?"<>| by _ in filename. - -uGet 2.0.1: (2015-08-15) -01. curl plug-in: create new download file if file size is not the same. -02. curl plug-in: use common user & password by default. -03. curl plug-in: response error if post or cookie file not found. -04. curl plug-in: don't create aria2 control file if download file create failed. -05. curl plug-in: if error occurred while allocating disk space, delete created download file. -06. curl plug-in: count downloaded size after splitting download. (avoid progress > 100%) -07. avoid crash if user doesn't specify argument value. -08. When creating folder failed, check folder exists before returning error. -09. When uGet get SIGTERM, it will save settings and call sync() for Linux. -10. check and fix settings after loading Setting.json - -uGet 2.0: (2015-05-01) -1. Try to ignore some error when parsing JSON file. -2. clipboard monitor add a new file type 'WEBM'. -3. Adjust main window default size. -4. Add and update translation files. - -uGet 1.99.6: -1. provide JSON-RPC over TCP (connect to localhost:14777) -2. match category by filename if URI doesn't match. -3. reduce start-up time. -4. Add some items to tray icon menu. -5. category list in dialog use the same width in main window. -6. Fix: command-line argument "--category-index" doesn't work. - -uGet 1.99.5: -1. curl plug-in: report more error (e.g. Failed to create file) after connecting. -2. curl plug-in: avoid crash if filename repeated counts > 999 -3. aria2 plug-in: clear uploading flag if aria2 status changed. -4. IPC: program can handle '\n' character from command-line. (for FlashGot) -5. adjust main windows default size. -6. restore main window position and size when window presented by command-line (IPC). -7. Enable Individual Download Speed Limiting. -8. Adjust widget layout and color for GTK+ 3.14 -9. Add and update translation files. - -uGet 1.99.4: -1. curl plug-in: retry all URI (include mirrors) every time. -2. curl plug-in: response error if file size is different. -3. aria2 plug-in: change lowest speed limit to 128 byte/sec. -4. aria2 plug-in: Don't change node name If URI scheme is "magnet". -5. aria2 plug-in: Don't change URI If URI scheme is "magnet". -6. aria2 plug-in: Don't set uploading status if no downloaded data. -7. magnet: get and show name from magnet URI. -8. Adjust layout of Download Form for GTK+ 3.12. -9. Implement multiple wildcards in Sequential Batch. -10. Fix : discard filename option from command-line. - -uGet 1.99.3: -1. use abstract socket in linux by default. -2. change category capacity limit from 9999 to 99999. -3. reduce start-up time. -4. curl plug-in: reset speed if download thread restart. -5. curl plug-in: change file auto rename counts to 10000. -6. curl plug-in: response error if error occur when create large file. -7. Fix: program doesn't backup cookie or post file from command-line. -8. Fix: user can't pause some downloading task. -9. Fix: download dialog can't accept magnet URI. - -uGet 1.99.2: -1. "Enable offline mode on startup" is workable now. -2. Don't do completion action if user stop download manually. - -uGet 1.99.1: -1. "Start in tray" is workable now. -2. Show confirm dialog when user delete category. - -uGet 1.99: -1. Remove speed limit option in download property. Use global speed limit to replace it. -2. "Force start" can work with Scheduler and Offline mode. -3. Force shutdown aria2 on exit even if aria2 tasks running. -4. Fix: Program crashes on exit. -5. restore SSL cipher list to default value. - -uGet 1.97.1: -1. curl plug-in: change SSL cipher and restore default SSL version. - -uGet 1.97: -1. Refresh download status when user enable/disable scheduler. -2. change SSL cipher list to avoid "SSLv3 alert handshake failure". -3. Remove some duplicate strings. -4. Update translation files. - -uGet 1.95: -1. curl plug-in: Program must get file timestamp even if file has existed. -2. curl plug-in: Enable infinite retries if retry limit is zero. -3. aria2 plug-in: "max-concurrent-downloads" is global option, don't use it with gid. -4. aria2 plug-in: add "split" option to avoid less connections if user specify mirrors. -5. aria2 plug-in: global speed limit must set correct value. -6. Remove line breaks from setting of clipboard monitor and aria2 arguments. -7. Add missing Android.mk files. - -uGet 1.93: -1. aria2 plug-in: support RPC authorization secret token (Aria2 v1.8.4 new feature) -2. update uGet RSS every 30 minutes. - -uGet 1.91: -First uGet2 beta version. - ----------- - -Browse Git: http://sourceforge.net/p/urlget/uget2/ci/master/tree/ - ----------- - -What's changed in uGet2: (2014-07-06) - -Part 1. curl plug-in: -1. support multi-thread downloading. -2. support mirrors. -3. support aria2 control file format ver 1 (aria2 v1.4.1). -4. It can allocate file by its size before downloading. -5. uGet1's downloaded file can't be resumed by uGet2. It is not compatiable. - -Part 2. aria2 plug-in: -1. better BitTorrent and metalink support. -2. support JSON-RPC batch request to improve remote aria2 downloading. -3. support aria2 "--out" argument to set output filename. -4. support RPC authorization secret token (Aria2 v1.8.4 new feature) -5. add "split" option to avoid less connections if user specify mirrors. - -Part 3. Application: -1. Every category has it's data file. (file format is JSON) -2. Program can set priority for each download in global speed limit mode. -3. Auto classifier by file extension, host, and scheme. -4. User can change category order. -5. All data files use JSON format. (not compatiable with uGet 1) -6. Global speed control can affect all plug-ins. -7. Skip existing URLs from clipboard and command-line. - -Part 4. GTK+ User interface: -1. New setting dialog. -2. Adjust category selector in main window for touch screen. -3. Remember category selection and paned position. -4. Program can sort all downloads by status. -5. Program can launch custom command when download complete. -6. Remove feature: launching app for specified file types. -7. Don't notify completed if error occurs. It will notify error. -8. Banner can show uGet RSS message. -9. provide uget-1to2 (or uget-gtk-1to2) to convert setting from old uGet files. +uGet 2.2.2: (2019-05-20) +1. use quicksort to sort downloads. +2. backup torrent and metalink files. +3. curl plug-in: handle duplicate files with double extensions. + +uGet 2.2.1: (2018-03-08) +1. reduce memory usage. +2. mega plug-in: completed size should not be '-1' if file size > 2G on a 32-bit system. +3. adjust speed limit independently without enabling global speed limit. +4. Fix: Can't get 1080p video from YouTube. +5. update translation files. + +uGet 2.2.0: (2018-01-06) +1. mega plug-in: create new plug-in for MEGA site. +2. all plug-in: avoid crash if plug-in failed to start. +3. Fix: some category/status doesn't refresh it's download list. +4. update translation files. + +uGet 2.1.6: (2017-08-24) +1. User can use sorting in any category and status. +2. curl plug-in: It can use ftruncate() to create large file. +3. media plug-in: don't use folder in path if folder == NULL. +4. Fix: uGet doesn't close File Descriptor when saving config file. +5. Fix: category functions can't work correctly. (2017-08-27) +6. add translation files. + +uGet 2.1.5: (2017-02-18) +1. URL Sequence Batch can setup 3 wildcard range. +2. Use character ↓/↑ to replace D:/U: to display speed. +3. avoid configure file corrupted on sudden shutdown. +4. curl plug-in: crashes when download file > 4GB. +5. Fix: program will move download to incorrect position if user switch to offline mode. +6. Fix: Segmentation fault after pressing delete key on gtk window. +7. Fix: Wayland hidden tray. +8. update translation files. + +uGet 2.1.4: (2016-05-16) +1. In speed limit mode, program adjust existing task speed when adding new task. +2. Add new setting "Display large icon". +3. Add configure argument "--enable-unix-socket" to use JSON-RPC over UNIX domain socket. +4. use msys2 + mingw to build uGet for windows. +5. curl plug-in: Don't use CURLAUTH_ANY, it causes authentication failed. +6. Fix: User can't use command-line to assign config directory (ui-gtk-1to2). +7. (2.1.3-2) Fix: Incorrect encoding on some characters (e.g. French characters) +8. (2.1.3-2) Fix: Program stop download queuing in some case. + +* uGet for Windows upgrade GTK+ from 3.10.4 to 3.16.6 + +uGet 2.1.3: (2016-04-10) +1. Fix: UI freeze if user activate download in sorted list. +2. Add Keywords entry into desktop file (Elías Alejandro Año Mendoza) +3. update translation files. + +uGet 2.1.2: (2016-04-01) +Revert URI decoder to 2.0.4, it may fix incorrect encoding on some characters. + +uGet 2.1.1: (2016-03-20) +1. curl plug-in: fix a bug that downloaded file may be incomplete in some case. +2. curl plug-in: improve downloaded segment handler. +3. curl plug-in: set min split size to 10 MiB. +4. curl plug-in: adjust speed if plug-in add/remove segments in speed limit mode. +5. aria2 plug-in: fix a memory leak. +6. media plug-in: report error if YouTube video has been removed. + +* This version fix bug that download speed is slow when progress near 100% +* If you usually get error message "Incorrect source", I suggest you use this version. + +uGet 2.1.0: (2016-02-20) +1. Add new media plug-in to get link from media website. +2. if file "uget-portable-mode" exists, data files save in installed folder. (Windows) +3. curl plug-in: avoid showing "99:99:99" in "elapsed" when downloading start. +4. curl plug-in: avoid reporting "Incorrect source" when downloading finished. +5. Fix: Program stop running download when user set "Runnable" to it. + +* In Windows, If "uget-portable-mode" and "uget.exe" place in the same folder, data files will save in uGet installed folder. diff -Nru uget-2.0.2/.snapcraft.yaml uget-2.2.2/.snapcraft.yaml --- uget-2.0.2/.snapcraft.yaml 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/.snapcraft.yaml 2019-05-19 16:49:05.000000000 +0000 @@ -0,0 +1,56 @@ +name: uget +version: git +summary: easy-to-use download manager +description: | + Uget (formerly urlgfe) is a simple, lightweight and easy-to-use download + manager. It provides the following features: + * Resume downloads. + * Queue downloads. + * Classify downloads in categories. + * Mozilla Firefox integration (through Flashgot plugin). + * Clipboard monitoring. + * Import downloads import from HTML files. + * Batch download. + +grade: stable +confinement: strict + +parts: + uget: + source: . + plugin: autotools + configflags: + - --prefix=/usr + after: + - desktop-gtk3 + prepare: | + sed -i 's|Icon=uget-icon|Icon=/usr/share/icons/hicolor/64x64/apps/uget-icon\.png|' uget-gtk.desktop + build-packages: + - intltool + - libappindicator3-dev + - libcurl4-openssl-dev + - libgstreamer1.0-dev + - libnotify-dev + - libssl-dev + stage-packages: + - aria2 + - libappindicator3-1 + - libcairo2 + - libcurl3 + - libgstreamer1.0-0 + - libnotify4 + - libpango-1.0-0 + - libpangocairo-1.0-0 + +apps: + uget: + command: bin/desktop-launch ${SNAP}/usr/bin/uget-gtk + desktop: usr/share/applications/uget-gtk.desktop + plugs: + - home + - gsettings + - network + - network-bind + - unity7 + - x11 + aliases: [uget-gtk] diff -Nru uget-2.0.2/sounds/Makefile.in uget-2.2.2/sounds/Makefile.in --- uget-2.0.2/sounds/Makefile.in 2015-09-11 12:13:20.000000000 +0000 +++ uget-2.2.2/sounds/Makefile.in 2019-05-19 16:51:34.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,6 +15,61 @@ @SET_MAKE@ VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -33,17 +87,34 @@ PRE_UNINSTALL = : POST_UNINSTALL = : subdir = sounds -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -73,6 +144,8 @@ } am__installdirs = "$(DESTDIR)$(soundsdir)" DATA = $(sounds_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -130,6 +203,7 @@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LFS_CFLAGS = @LFS_CFLAGS@ LFS_LDFLAGS = @LFS_LDFLAGS@ @@ -239,14 +313,13 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sounds/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu sounds/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -259,8 +332,11 @@ $(am__aclocal_m4_deps): install-soundsDATA: $(sounds_DATA) @$(NORMAL_INSTALL) - test -z "$(soundsdir)" || $(MKDIR_P) "$(DESTDIR)$(soundsdir)" @list='$(sounds_DATA)'; test -n "$(soundsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(soundsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(soundsdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -275,14 +351,17 @@ @list='$(sounds_DATA)'; test -n "$(soundsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(soundsdir)'; $(am__uninstall_files_from_dir) -tags: TAGS -TAGS: +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -417,16 +496,19 @@ .MAKE: install-am install-strip -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-soundsDATA install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ - uninstall-am uninstall-soundsDATA +.PHONY: all all-am check check-am clean clean-generic cscopelist-am \ + ctags-am distclean distclean-generic distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-soundsDATA install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags-am uninstall uninstall-am \ + uninstall-soundsDATA + +.PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru uget-2.0.2/tests/Makefile.am uget-2.2.2/tests/Makefile.am --- uget-2.0.2/tests/Makefile.am 2014-01-22 08:23:01.000000000 +0000 +++ uget-2.2.2/tests/Makefile.am 2019-05-19 16:49:06.000000000 +0000 @@ -4,6 +4,10 @@ # test-uglib-cxx test-uget-cxx TESTS_LIBS = @PTHREAD_LIBS@ @CURL_LIBS@ @GLIB_LIBS@ +if WITH_LIBPWMD +TESTS_LIBS += @LIBPWMD_LIBS@ +endif + # set the include path found by configure AM_CPPFLAGS = -I$(top_srcdir)/uglib -I$(top_srcdir)/uget AM_CFLAGS = @PTHREAD_CFLAGS@ @LFS_CFLAGS@ @CURL_CFLAGS@ @GLIB_CFLAGS@ @@ -17,8 +21,8 @@ test_jsonrpc_LDADD = $(top_builddir)/uget/libuget.a $(top_builddir)/uglib/libuglib.a $(TESTS_LIBS) test_jsonrpc_SOURCES = test-jsonrpc.c -# test_plugin_app_CPPFLAGS = -I$(top_srcdir)/uglib -I$(top_srcdir)/uget -test_plugin_app_LDADD = $(top_builddir)/uget/libuget.a $(top_builddir)/uglib/libuglib.a $(TESTS_LIBS) +test_plugin_app_CPPFLAGS = -I$(top_srcdir)/uglib -I$(top_srcdir)/uget @LIBGCRYPT_CFLAGS@ @LIBCRYPTO_CFLAGS@ +test_plugin_app_LDADD = $(top_builddir)/uget/libuget.a $(top_builddir)/uglib/libuglib.a $(TESTS_LIBS) @LIBGCRYPT_LIBS@ @LIBCRYPTO_LIBS@ test_plugin_app_SOURCES = test-plugin+app.c # test_info_CPPFLAGS = -I$(top_srcdir)/uglib diff -Nru uget-2.0.2/tests/Makefile.in uget-2.2.2/tests/Makefile.in --- uget-2.0.2/tests/Makefile.in 2015-09-11 12:13:20.000000000 +0000 +++ uget-2.2.2/tests/Makefile.in 2019-05-19 16:51:34.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,6 +15,61 @@ @SET_MAKE@ VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -35,12 +89,13 @@ noinst_PROGRAMS = test-json$(EXEEXT) test-jsonrpc$(EXEEXT) \ test-plugin+app$(EXEEXT) test-info$(EXEEXT) \ test-uglib$(EXEEXT) test-uget$(EXEEXT) +@WITH_LIBPWMD_TRUE@am__append_1 = @LIBPWMD_LIBS@ subdir = tests -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -49,44 +104,97 @@ am_test_info_OBJECTS = test-info.$(OBJEXT) test_info_OBJECTS = $(am_test_info_OBJECTS) am__DEPENDENCIES_1 = +am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) test_info_DEPENDENCIES = $(top_builddir)/uglib/libuglib.a \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_2) am_test_json_OBJECTS = test-json.$(OBJEXT) test_json_OBJECTS = $(am_test_json_OBJECTS) test_json_DEPENDENCIES = $(top_builddir)/uglib/libuglib.a \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_2) am_test_jsonrpc_OBJECTS = test-jsonrpc.$(OBJEXT) test_jsonrpc_OBJECTS = $(am_test_jsonrpc_OBJECTS) test_jsonrpc_DEPENDENCIES = $(top_builddir)/uget/libuget.a \ - $(top_builddir)/uglib/libuglib.a $(am__DEPENDENCIES_1) -am_test_plugin_app_OBJECTS = test-plugin+app.$(OBJEXT) + $(top_builddir)/uglib/libuglib.a $(am__DEPENDENCIES_2) +am_test_plugin_app_OBJECTS = \ + test_plugin_app-test-plugin+app.$(OBJEXT) test_plugin_app_OBJECTS = $(am_test_plugin_app_OBJECTS) test_plugin_app_DEPENDENCIES = $(top_builddir)/uget/libuget.a \ - $(top_builddir)/uglib/libuglib.a $(am__DEPENDENCIES_1) + $(top_builddir)/uglib/libuglib.a $(am__DEPENDENCIES_2) am_test_uget_OBJECTS = test-uget.$(OBJEXT) test_uget_OBJECTS = $(am_test_uget_OBJECTS) test_uget_DEPENDENCIES = $(top_builddir)/uget/libuget.a \ - $(top_builddir)/uglib/libuglib.a $(am__DEPENDENCIES_1) + $(top_builddir)/uglib/libuglib.a $(am__DEPENDENCIES_2) am_test_uglib_OBJECTS = test-uglib.$(OBJEXT) test_uglib_OBJECTS = $(am_test_uglib_OBJECTS) test_uglib_DEPENDENCIES = $(top_builddir)/uglib/libuglib.a \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_2) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/test-info.Po \ + ./$(DEPDIR)/test-json.Po ./$(DEPDIR)/test-jsonrpc.Po \ + ./$(DEPDIR)/test-uget.Po ./$(DEPDIR)/test-uglib.Po \ + ./$(DEPDIR)/test_plugin_app-test-plugin+app.Po am__mv = mv -f +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(test_info_SOURCES) $(test_json_SOURCES) \ $(test_jsonrpc_SOURCES) $(test_plugin_app_SOURCES) \ $(test_uget_SOURCES) $(test_uglib_SOURCES) DIST_SOURCES = $(test_info_SOURCES) $(test_json_SOURCES) \ $(test_jsonrpc_SOURCES) $(test_plugin_app_SOURCES) \ $(test_uget_SOURCES) $(test_uglib_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -144,6 +252,7 @@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LFS_CFLAGS = @LFS_CFLAGS@ LFS_LDFLAGS = @LFS_LDFLAGS@ @@ -236,7 +345,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # test-uglib-cxx test-uget-cxx -TESTS_LIBS = @PTHREAD_LIBS@ @CURL_LIBS@ @GLIB_LIBS@ +TESTS_LIBS = @PTHREAD_LIBS@ @CURL_LIBS@ @GLIB_LIBS@ $(am__append_1) # set the include path found by configure AM_CPPFLAGS = -I$(top_srcdir)/uglib -I$(top_srcdir)/uget @@ -250,9 +359,8 @@ # test_jsonrpc_CPPFLAGS = -I$(top_srcdir)/uglib -I$(top_srcdir)/uget test_jsonrpc_LDADD = $(top_builddir)/uget/libuget.a $(top_builddir)/uglib/libuglib.a $(TESTS_LIBS) test_jsonrpc_SOURCES = test-jsonrpc.c - -# test_plugin_app_CPPFLAGS = -I$(top_srcdir)/uglib -I$(top_srcdir)/uget -test_plugin_app_LDADD = $(top_builddir)/uget/libuget.a $(top_builddir)/uglib/libuglib.a $(TESTS_LIBS) +test_plugin_app_CPPFLAGS = -I$(top_srcdir)/uglib -I$(top_srcdir)/uget @LIBGCRYPT_CFLAGS@ @LIBCRYPTO_CFLAGS@ +test_plugin_app_LDADD = $(top_builddir)/uget/libuget.a $(top_builddir)/uglib/libuglib.a $(TESTS_LIBS) @LIBGCRYPT_LIBS@ @LIBCRYPTO_LIBS@ test_plugin_app_SOURCES = test-plugin+app.c # test_info_CPPFLAGS = -I$(top_srcdir)/uglib @@ -282,14 +390,13 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -303,24 +410,30 @@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) + test-info$(EXEEXT): $(test_info_OBJECTS) $(test_info_DEPENDENCIES) $(EXTRA_test_info_DEPENDENCIES) @rm -f test-info$(EXEEXT) - $(LINK) $(test_info_OBJECTS) $(test_info_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_info_OBJECTS) $(test_info_LDADD) $(LIBS) + test-json$(EXEEXT): $(test_json_OBJECTS) $(test_json_DEPENDENCIES) $(EXTRA_test_json_DEPENDENCIES) @rm -f test-json$(EXEEXT) - $(LINK) $(test_json_OBJECTS) $(test_json_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_json_OBJECTS) $(test_json_LDADD) $(LIBS) + test-jsonrpc$(EXEEXT): $(test_jsonrpc_OBJECTS) $(test_jsonrpc_DEPENDENCIES) $(EXTRA_test_jsonrpc_DEPENDENCIES) @rm -f test-jsonrpc$(EXEEXT) - $(LINK) $(test_jsonrpc_OBJECTS) $(test_jsonrpc_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_jsonrpc_OBJECTS) $(test_jsonrpc_LDADD) $(LIBS) + test-plugin+app$(EXEEXT): $(test_plugin_app_OBJECTS) $(test_plugin_app_DEPENDENCIES) $(EXTRA_test_plugin_app_DEPENDENCIES) @rm -f test-plugin+app$(EXEEXT) - $(LINK) $(test_plugin_app_OBJECTS) $(test_plugin_app_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_plugin_app_OBJECTS) $(test_plugin_app_LDADD) $(LIBS) + test-uget$(EXEEXT): $(test_uget_OBJECTS) $(test_uget_DEPENDENCIES) $(EXTRA_test_uget_DEPENDENCIES) @rm -f test-uget$(EXEEXT) - $(LINK) $(test_uget_OBJECTS) $(test_uget_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_uget_OBJECTS) $(test_uget_LDADD) $(LIBS) + test-uglib$(EXEEXT): $(test_uglib_OBJECTS) $(test_uglib_DEPENDENCIES) $(EXTRA_test_uglib_DEPENDENCIES) @rm -f test-uglib$(EXEEXT) - $(LINK) $(test_uglib_OBJECTS) $(test_uglib_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_uglib_OBJECTS) $(test_uglib_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -328,47 +441,56 @@ distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-info.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-json.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-jsonrpc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-plugin+app.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-uget.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-uglib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-info.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-json.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-jsonrpc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-uget.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-uglib.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_plugin_app-test-plugin+app.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +test_plugin_app-test-plugin+app.o: test-plugin+app.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_app_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_plugin_app-test-plugin+app.o -MD -MP -MF $(DEPDIR)/test_plugin_app-test-plugin+app.Tpo -c -o test_plugin_app-test-plugin+app.o `test -f 'test-plugin+app.c' || echo '$(srcdir)/'`test-plugin+app.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_plugin_app-test-plugin+app.Tpo $(DEPDIR)/test_plugin_app-test-plugin+app.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-plugin+app.c' object='test_plugin_app-test-plugin+app.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_app_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_plugin_app-test-plugin+app.o `test -f 'test-plugin+app.c' || echo '$(srcdir)/'`test-plugin+app.c + +test_plugin_app-test-plugin+app.obj: test-plugin+app.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_app_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_plugin_app-test-plugin+app.obj -MD -MP -MF $(DEPDIR)/test_plugin_app-test-plugin+app.Tpo -c -o test_plugin_app-test-plugin+app.obj `if test -f 'test-plugin+app.c'; then $(CYGPATH_W) 'test-plugin+app.c'; else $(CYGPATH_W) '$(srcdir)/test-plugin+app.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_plugin_app-test-plugin+app.Tpo $(DEPDIR)/test_plugin_app-test-plugin+app.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-plugin+app.c' object='test_plugin_app-test-plugin+app.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_plugin_app_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_plugin_app-test-plugin+app.obj `if test -f 'test-plugin+app.c'; then $(CYGPATH_W) 'test-plugin+app.c'; else $(CYGPATH_W) '$(srcdir)/test-plugin+app.c'; fi` -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -380,15 +502,11 @@ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -397,11 +515,29 @@ here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -470,7 +606,12 @@ clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/test-info.Po + -rm -f ./$(DEPDIR)/test-json.Po + -rm -f ./$(DEPDIR)/test-jsonrpc.Po + -rm -f ./$(DEPDIR)/test-uget.Po + -rm -f ./$(DEPDIR)/test-uglib.Po + -rm -f ./$(DEPDIR)/test_plugin_app-test-plugin+app.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -516,7 +657,12 @@ installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/test-info.Po + -rm -f ./$(DEPDIR)/test-json.Po + -rm -f ./$(DEPDIR)/test-jsonrpc.Po + -rm -f ./$(DEPDIR)/test-uget.Po + -rm -f ./$(DEPDIR)/test-uglib.Po + -rm -f ./$(DEPDIR)/test_plugin_app-test-plugin+app.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -536,18 +682,20 @@ .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-noinstPROGRAMS ctags distclean distclean-compile \ - distclean-generic distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile #test_uglib_cxx_CPPFLAGS = -I$(top_srcdir)/uglib diff -Nru uget-2.0.2/tests/test-info.c uget-2.2.2/tests/test-info.c --- uget-2.0.2/tests/test-info.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/tests/test-info.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -53,23 +53,23 @@ const UgEntry Test1Entry[] = { - {"type", offsetof (Test1, type), UG_ENTRY_INT, NULL, NULL}, + {"type", offsetof(Test1, type), UG_ENTRY_INT, NULL, NULL}, {NULL} }; -void test1_init (Test1* t1); +void test1_init(Test1* t1); const UgDataInfo Test1Info = { "Test1", - sizeof (Test1), - Test1Entry, // UgEntry + sizeof(Test1), (UgInitFunc) test1_init, (UgFinalFunc) NULL, - (UgAssignFunc) NULL + (UgAssignFunc) NULL, + Test1Entry, // UgEntry }; -void test1_init (Test1* t1) +void test1_init(Test1* t1) { t1->info = &Test1Info; t1->type = 1; @@ -88,23 +88,23 @@ const UgEntry Test2Entry[] = { - {"type", offsetof (Test2, type), UG_ENTRY_INT, NULL, NULL}, + {"type", offsetof(Test2, type), UG_ENTRY_INT, NULL, NULL}, {NULL} }; -void test2_init (Test2* t2); +void test2_init(Test2* t2); const UgDataInfo Test2Info = { "Test2", - sizeof (Test2), - Test2Entry, // UgEntry + sizeof(Test2), (UgInitFunc) test2_init, (UgFinalFunc) NULL, - (UgAssignFunc) NULL + (UgAssignFunc) NULL, + Test2Entry, // UgEntry }; -void test2_init (Test2* t2) +void test2_init(Test2* t2) { t2->info = &Test2Info; t2->type = 2; @@ -123,23 +123,23 @@ const UgEntry Test3Entry[] = { - {"type", offsetof (Test3, type), UG_ENTRY_INT, NULL, NULL}, + {"type", offsetof(Test3, type), UG_ENTRY_INT, NULL, NULL}, {NULL} }; -void test3_init (Test3* t3); +void test3_init(Test3* t3); const UgDataInfo Test3Info = { "Test3", - sizeof (Test3), - Test3Entry, // UgEntry + sizeof(Test3), (UgInitFunc) test3_init, (UgFinalFunc) NULL, - (UgAssignFunc) NULL + (UgAssignFunc) NULL, + Test3Entry, // UgEntry }; -void test3_init (Test3* t3) +void test3_init(Test3* t3) { t3->info = &Test3Info; t3->type = 3; @@ -154,20 +154,20 @@ {NULL} }; -void test_info (UgInfo* info) +void test_info(UgInfo* info) { void* data; - puts ("\n--- test_info:"); - data = ug_info_realloc (info, &Test2Info); - printf ("ug_info_realloc (Test2Info) : %d\n", ((Test2*)data)->type); - data = ug_info_realloc (info, &Test1Info); - printf ("ug_info_realloc (Test1Info) : %d\n", ((Test1*)data)->type); - data = ug_info_realloc (info, &Test3Info); - printf ("ug_info_realloc (Test3Info) : %d\n", ((Test3*)data)->type); + puts("\n--- test_info:"); + data = ug_info_realloc(info, &Test2Info); + printf("ug_info_realloc (Test2Info) : %d\n", ((Test2*)data)->type); + data = ug_info_realloc(info, &Test1Info); + printf("ug_info_realloc (Test1Info) : %d\n", ((Test1*)data)->type); + data = ug_info_realloc(info, &Test3Info); + printf("ug_info_realloc (Test3Info) : %d\n", ((Test3*)data)->type); } -void parse_info (UgInfo* info) +void parse_info(UgInfo* info) { int code; UgJson json; @@ -187,107 +187,107 @@ }; // UgRegistry is used by ug_json_parse_info() and ug_json_parse_info_entry() - ug_registry_init (®istry); - ug_registry_add (®istry, &Test2Info); - ug_registry_add (®istry, &Test3Info); - ug_registry_add (®istry, &Test1Info); -// ug_registry_sort (®istry); + ug_registry_init(®istry); + ug_registry_add(®istry, &Test2Info); + ug_registry_add(®istry, &Test3Info); + ug_registry_add(®istry, &Test1Info); +// ug_registry_sort(®istry); // ug_json_parse_info() must use default UgInfoKeys. - ug_info_set_registry (®istry); + ug_info_set_registry(®istry); - ug_json_init (&json); - ug_json_begin_parse (&json); + ug_json_init(&json); + ug_json_begin_parse(&json); #if 1 // method 1: use UgEntry to parse start of object - ug_json_push (&json, ug_json_parse_entry, info, InfoCustomEntry); + ug_json_push(&json, ug_json_parse_entry, info, InfoCustomEntry); #else // method 2: push ug_json_parse_info() to parse start of object - ug_json_push (&json, ug_json_parse_info, info, ®istry); + ug_json_push(&json, ug_json_parse_info, info, ®istry); #endif - code = ug_json_parse (&json, json_string, -1); - ug_json_end_parse (&json); - ug_json_final (&json); - printf ("ug_json_parse response %d\n", code); + code = ug_json_parse(&json, json_string, -1); + ug_json_end_parse(&json); + ug_json_final(&json); + printf("ug_json_parse response %d\n", code); - ug_info_set_registry (NULL); - ug_registry_final (®istry); + ug_info_set_registry(NULL); + ug_registry_final(®istry); } -void dump_info (UgInfo* info) +void dump_info(UgInfo* info) { UgPair* cur; UgPair* end; for (cur = info->at, end = info->at + info->length; cur < end; cur++) { if (cur->key == NULL) { - puts ("NULL"); + puts("NULL"); continue; } - printf ("%s", ((UgDataInfo*)cur->key)->name); + printf("%s", ((UgDataInfo*)cur->key)->name); if (cur->data) - printf (" : %d", ((Test1*)cur->data)->type); - puts (""); + printf(" : %d", ((Test1*)cur->data)->type); + puts(""); } } // UgBufferFunc -static int buffer_to_file (UgBuffer* buffer) +static int buffer_to_file(UgBuffer* buffer) { FILE* file = buffer->data; - printf ("write %d bytes to file\n", ug_buffer_length (buffer)); - fwrite (buffer->beg, 1, ug_buffer_length(buffer), file); + printf("write %d bytes to file\n", ug_buffer_length(buffer)); + fwrite(buffer->beg, 1, ug_buffer_length(buffer), file); buffer->cur = buffer->beg; return 0; } -void write_info_to_file (UgInfo* info, char* filename) +void write_info_to_file(UgInfo* info, char* filename) { UgJson json; FILE* file; UgBuffer buffer; - file = fopen (filename, "w"); - ug_buffer_init (&buffer, 128); + file = fopen(filename, "w"); + ug_buffer_init(&buffer, 128); buffer.more = buffer_to_file; buffer.data = file; - ug_json_init (&json); - ug_json_begin_write (&json, UG_JSON_FORMAT_INDENT, &buffer); + ug_json_init(&json); + ug_json_begin_write(&json, UG_JSON_FORMAT_INDENT, &buffer); #if 1 // method 1: use UgEntry to write start of object - ug_json_write_entry (&json, info, InfoCustomEntry); + ug_json_write_entry(&json, info, InfoCustomEntry); #else // method 2: call ug_json_write_object_head() to write start of object - ug_json_write_object_head (&json); - ug_json_write_info (&json, info); - ug_json_write_object_tail (&json); + ug_json_write_object_head(&json); + ug_json_write_info(&json, info); + ug_json_write_object_tail(&json); #endif - ug_json_end_write (&json); - ug_json_final (&json); + ug_json_end_write(&json); + ug_json_final(&json); - ug_buffer_clear (&buffer, 1); - fclose (file); + ug_buffer_clear(&buffer, 1); + fclose(file); } // ---------------------------------------------------------------------------- // main -int main (void) +int main(void) { UgInfo info; - puts ("\n--- test UgInfo functions:"); - ug_info_init (&info, 8, 2); + puts("\n--- test UgInfo functions:"); + ug_info_init(&info, 8, 2); #if 0 - test_info (&info); + test_info(&info); #else - parse_info (&info); + parse_info(&info); #endif - dump_info (&info); - write_info_to_file (&info, "test-info.json"); - ug_info_final (&info); + dump_info(&info); + write_info_to_file(&info, "test-info.json"); + ug_info_final(&info); return 0; } diff -Nru uget-2.0.2/tests/test-json.c uget-2.2.2/tests/test-json.c --- uget-2.0.2/tests/test-json.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/tests/test-json.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -753,8 +753,11 @@ const char* json_string = "true"; #elif 0 const char* json_string = "tr"; // uncompleted true -#else +#elif 0 const char* json_string = "{"; // uncompleted object +#else + // "Sam a tűzoltó - Világcsúcs kísérletek" + const char* json_string = "\"Sam a t\\u0171zolt\\u00f3 - Vil\\u00e1gcs\\u00facs k\\u00eds\\u00e9rletek\""; #endif puts ("\n--- test_json_value:"); @@ -806,7 +809,8 @@ ug_json_write_array_tail (&json); // --- array2 end ug_json_write_string (&json, "name2"); - ug_json_write_string (&json, "value2"); +// ug_json_write_string (&json, "value2"); + ug_json_write_string (&json, "Sam a tűzoltó - Világcsúcs kísérletek"); ug_json_write_object_tail (&json); // --- object2 end diff -Nru uget-2.0.2/tests/test-jsonrpc.c uget-2.2.2/tests/test-jsonrpc.c --- uget-2.0.2/tests/test-jsonrpc.c 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/tests/test-jsonrpc.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/tests/test-plugin+app.c uget-2.2.2/tests/test-plugin+app.c --- uget-2.0.2/tests/test-plugin+app.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/tests/test-plugin+app.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -34,10 +34,13 @@ * */ +#include #include #include #include #include +#include +#include #include #if defined _WIN32 || defined _WIN64 @@ -49,72 +52,86 @@ #endif // _WIN32 || _WIN64 // ---------------------------------------------------------------------------- -// test_node +// test_download -void download_node (UgetNode* node, const UgetPluginInfo* info) +void download_by_plugin(UgInfo* info, const UgetPluginInfo* pinfo) { UgetCommon* common; + UgetFiles* files; + UgetFile* file1; UgetPlugin* plugin; UgetEvent* events; UgetEvent* cur; UgetEvent* next; UgetProgress* progress; - int integer[2]; + int index; + int speed_limit[2]; char* string[5]; - plugin = uget_plugin_new (info); - integer[0] = 1000000; - integer[1] = 1000000; - uget_plugin_ctrl (plugin, UGET_PLUGIN_CTRL_SPEED, integer); - uget_plugin_start (plugin, node); - while (uget_plugin_sync (plugin)) { - ug_sleep (1000); + speed_limit[0] = 1000000; + speed_limit[1] = 1000000; + + plugin = uget_plugin_new(pinfo); + uget_plugin_accept(plugin, info); + uget_plugin_ctrl(plugin, UGET_PLUGIN_CTRL_SPEED, speed_limit); + if (uget_plugin_start(plugin) == FALSE) { + uget_plugin_unref(plugin); + puts("plug-in failed to start."); + return; + } + + while (uget_plugin_sync(plugin, info)) { + ug_sleep(1000); // event - events = uget_plugin_pop (plugin); + events = uget_plugin_pop(plugin); for (cur = events; cur; cur = next) { next = cur->next; printf ("\n" "Event type: %d - %s\n", cur->type, cur->string); - uget_event_free (cur); + uget_event_free(cur); } // progress - progress = ug_info_get (&node->info, UgetProgressInfo); + progress = ug_info_get(info, UgetProgressInfo); if (progress == NULL) continue; - string[0] = ug_str_from_int_unit (progress->complete, NULL); - string[1] = ug_str_from_int_unit (progress->total, NULL); - string[2] = ug_str_from_int_unit (progress->uploaded, NULL); - string[3] = ug_str_from_int_unit (progress->download_speed, "/s"); - string[4] = ug_str_from_int_unit (progress->upload_speed, "/s"); - printf ("\r" "DL: %s / %s, %d%%, %s | UL: %s, %s" " ", - string[0], string[1], progress->percent, - string[3], string[2], string[4]); - for (integer[0] = 0; integer[0] < 5; integer[0]++) - ug_free (string[integer[0]]); + string[0] = ug_str_from_int_unit(progress->complete, NULL); + string[1] = ug_str_from_int_unit(progress->total, NULL); + string[2] = ug_str_from_int_unit(progress->uploaded, NULL); + string[3] = ug_str_from_int_unit(progress->download_speed, "/s"); + string[4] = ug_str_from_int_unit(progress->upload_speed, "/s"); + printf("\r" "DL: %s / %s, %d%%, %s | UL: %s, %s" " ", + string[0], string[1], progress->percent, + string[3], string[2], string[4]); + for (index = 0; index < 5; index++) + ug_free(string[index]); } // these data may changed, print them. - common = ug_info_get (&node->info, UgetCommonInfo); - printf ("\n" - "node->name : %s\n" - "common->uri : %s\n" - "common->file : %s\n", - node->name, common->uri, common->file); + common = ug_info_get(info, UgetCommonInfo); + printf("\n" + "common->name : %s\n" + "common->uri : %s\n" + "common->file : %s\n", + common->name, common->uri, common->file); // print children - for (node = node->children; node; node = node->next) - printf ("child node name : %s\n", node->name); + files = ug_info_realloc(info, UgetFilesInfo); + for (file1 = (UgetFile*)files->list.head; file1; file1 = file1->next) + printf("file name : %s\n", file1->path); - uget_plugin_unref (plugin); + uget_plugin_unref(plugin); } -void test_node_download (void) +void test_download(void) { UgetCommon* common; UgetHttp* http; - UgetNode* node; + UgInfo* info; char* referrer; char* uri; char* mirrors; - uri = "http://download.tuxfamily.org/notepadplus/6.5.3/npp.6.5.3.Installer.exe"; + uri = "https://mega.nz/#F!i5FXiSoD!TObpvqxETCq8TbEhFevzpg"; +// uri = "https://mega.nz/#!MSpjBRhZ!nZBsUQCAnf71842wXuals_ftSkga3fIQypzBsKEZbmk"; +// uri = "https://www.youtube.com/watch?v=y2004Xaz2HU"; +// uri = "http://download.tuxfamily.org/notepadplus/6.5.3/npp.6.5.3.Installer.exe"; // uri = "http://ftp.gimp.org/pub/gimp/v2.8/windows/gimp-2.8.10-setup.exe"; // mirrors = "ftp://195.220.108.108/linux/fedora/linux/updates/19/x86_64/kernel-3.11.2-201.fc19.x86_64.rpm"; mirrors = NULL; @@ -122,23 +139,28 @@ // referrer = "http://code.google.com/p/tortoisegit/wiki/Download?tm=2"; referrer = NULL; - node = uget_node_new (NULL); + info = ug_info_new(8, 0); // commom options - common = ug_info_realloc (&node->info, UgetCommonInfo); - common->uri = ug_strdup (uri); + common = ug_info_realloc(info, UgetCommonInfo); + common->uri = ug_strdup(uri); if (mirrors) - common->mirrors = ug_strdup (mirrors); - common->folder = ug_strdup ("D:\\Downloads"); - common->max_connections = 2; + common->mirrors = ug_strdup(mirrors); +// common->folder = ug_strdup ("D:\\Downloads"); +// common->max_connections = 2; common->debug_level = 1; + common->retry_limit = 1; + common->connect_timeout = 30; + // http options - http = ug_info_realloc (&node->info, UgetHttpInfo); + http = ug_info_realloc(info, UgetHttpInfo); if (referrer) - http->referrer = ug_strdup (referrer); + http->referrer = ug_strdup(referrer); -// download_node (node, UgetPluginAria2Info); - download_node (node, UgetPluginCurlInfo); - uget_node_unref (node); +// download_by_plugin(info, UgetPluginCurlInfo); +// download_by_plugin(info, UgetPluginAria2Info); +// download_by_plugin(info, UgetPluginMediaInfo); + download_by_plugin(info, UgetPluginMegaInfo); + ug_info_unref(info); } // ---------------------------------------------------------------------------- @@ -149,39 +171,41 @@ const UgetPluginInfo* pinfo; pinfo = UgetPluginAria2Info; - uget_plugin_set (pinfo, UGET_PLUGIN_INIT, (void*) TRUE); - uget_plugin_set (pinfo, UGET_PLUGIN_ARIA2_URI, + uget_plugin_global_set(pinfo, UGET_PLUGIN_GLOBAL_INIT, (void*) TRUE); + uget_plugin_global_set(pinfo, UGET_PLUGIN_ARIA2_GLOBAL_URI, "http://localhost/jsonrpc"); #if defined _WIN32 || defined _WIN64 - uget_plugin_set (pinfo, UGET_PLUGIN_ARIA2_PATH, + uget_plugin_global_set(pinfo, UGET_PLUGIN_ARIA2_GLOBAL_PATH, "C:\\Program Files\\uGet\\bin\\aria2c.exe"); #endif - uget_plugin_set (pinfo, UGET_PLUGIN_ARIA2_ARGUMENT, + uget_plugin_global_set(pinfo, UGET_PLUGIN_ARIA2_GLOBAL_ARGUMENT, "--enable-rpc=true -D --check-certificate=false"); - uget_plugin_set (pinfo, UGET_PLUGIN_ARIA2_LAUNCH, (void*) TRUE); - uget_plugin_set (pinfo, UGET_PLUGIN_ARIA2_SHUTDOWN, (void*) TRUE); + uget_plugin_global_set(pinfo, UGET_PLUGIN_ARIA2_GLOBAL_LAUNCH, (void*) TRUE); + uget_plugin_global_set(pinfo, UGET_PLUGIN_ARIA2_GLOBAL_SHUTDOWN, (void*) TRUE); ug_sleep (1000); - uget_plugin_set (pinfo, UGET_PLUGIN_INIT, (void*) FALSE); + uget_plugin_global_set(pinfo, UGET_PLUGIN_GLOBAL_INIT, (void*) FALSE); ug_sleep (1000); } // ---------------------------------------------------------------------------- // test_task -void print_node_speed_limit (UgetNode** dnode, int count) +void print_speed_limit (UgetNode** dnode, int count) { int total[2] = {0,0}; UgetRelation* relation; for (count = 0; count < 7; count++) { - relation = ug_info_get (&dnode[count]->info, UgetRelationInfo); - printf ("limit D: %d, U: %d | speed D: %d, U: %d\n", - relation->task.limit[0], - relation->task.limit[1], - relation->task.speed[0], - relation->task.speed[1]); - total[0] += relation->task.limit[0]; - total[1] += relation->task.limit[1]; + relation = ug_info_get (dnode[count]->info, UgetRelationInfo); + if (relation->task) { + printf ("limit D: %d, U: %d | speed D: %d, U: %d\n", + relation->task->limit[0], + relation->task->limit[1], + relation->task->speed[0], + relation->task->speed[1]); + total[0] += relation->task->limit[0]; + total[1] += relation->task->limit[1]; + } } printf ("total limit D: %d, U: %d\n", @@ -202,28 +226,32 @@ // task speed control ------------------- for (count = 0; count < 7; count++) { dnode[count] = uget_node_new (NULL); - relation = ug_info_realloc (&dnode[count]->info, UgetRelationInfo); - relation->task.limit[0] = 2000; - relation->task.limit[1] = 1500; - relation->task.speed[0] = 2000 - count * 200; - relation->task.speed[1] = 1500 - count * 200; + relation = ug_info_realloc (dnode[count]->info, UgetRelationInfo); uget_task_add (task, dnode[count], UgetPluginEmptyInfo); + if (relation->task) { + relation->task->limit[0] = 2000; + relation->task->limit[1] = 1500; + relation->task->speed[0] = 2000 - count * 200; + relation->task->speed[1] = 1500 - count * 200; + } + } + if (relation->task) { + relation->task->limit[0] = 0; + relation->task->limit[1] = 0; } - relation->task.limit[0] = 0; - relation->task.limit[1] = 0; uget_task_set_speed (task, 12000, 8000); - print_node_speed_limit(dnode, 7); + print_speed_limit(dnode, 7); puts ("---"); uget_task_adjust_speed (task); - print_node_speed_limit(dnode, 7); + print_speed_limit(dnode, 7); uget_task_remove_all (task); uget_task_final (task); free (task); for (count = 0; count < 7; count++) - uget_node_unref (dnode[count]); + uget_node_free (dnode[count]); } // ---------------------------------------------------------------------------- @@ -236,12 +264,12 @@ UgetCommon* common; cnode = uget_node_new (NULL); - cnode->name = ug_strdup ("Home Category"); - category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + category = ug_info_realloc (cnode->info, UgetCategoryInfo); *(char**)ug_array_alloc (&category->schemes, 1) = ug_strdup ("http"); *(char**)ug_array_alloc (&category->schemes, 1) = ug_strdup ("https"); *(char**)ug_array_alloc (&category->schemes, 1) = ug_strdup ("ftp"); - common = ug_info_realloc (&cnode->info, UgetCommonInfo); + common = ug_info_realloc (cnode->info, UgetCommonInfo); + common->name = ug_strdup ("Home Category"); common->max_connections = 2; uget_app_add_category (app, cnode, TRUE); @@ -258,8 +286,8 @@ char* string[2]; dnode = uget_node_new (NULL); - dnode->name = ug_strdup ("Download"); - common = ug_info_realloc (&dnode->info, UgetCommonInfo); + common = ug_info_realloc (dnode->info, UgetCommonInfo); + common->name = ug_strdup ("Download"); common->uri = ug_strdup ("http://www.utorrent.com/scripts/dl.php?track=stable&build=29812&client=utorrent"); common->folder = ug_strdup ("D:\\Downloads"); common->debug_level = 1; @@ -298,7 +326,7 @@ for (count = 0; count < 7; count++) { dnode[count] = uget_node_new (NULL); - common = ug_info_realloc (&dnode[count]->info, UgetCommonInfo); + common = ug_info_realloc (dnode[count]->info, UgetCommonInfo); common->uri = ug_strdup ("ftp://127.0.0.1/"); common->folder = ug_strdup ("D:\\Downloads"); common->keeping.enable = TRUE; @@ -349,19 +377,23 @@ int main (void) { - // initialize plugin - uget_plugin_set (UgetPluginCurlInfo, UGET_PLUGIN_INIT, (void*) TRUE); - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_INIT, (void*) TRUE); -// test_setup_plugin_aria2 (); - -// test_node_download (); -// test_task (); -// test_app (); - - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_ARIA2_SHUTDOWN_NOW, (void*) TRUE); - // finalize plugin - uget_plugin_set (UgetPluginCurlInfo, UGET_PLUGIN_INIT, (void*) FALSE); - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_INIT, (void*) FALSE); + // initialize plug-in + uget_plugin_global_set(UgetPluginCurlInfo, UGET_PLUGIN_GLOBAL_INIT, (void*) TRUE); + uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_GLOBAL_INIT, (void*) TRUE); + uget_plugin_global_set(UgetPluginMediaInfo, UGET_PLUGIN_GLOBAL_INIT, (void*) TRUE); + uget_plugin_global_set(UgetPluginMegaInfo, UGET_PLUGIN_GLOBAL_INIT, (void*) TRUE); +// test_setup_plugin_aria2(); + + test_download(); +// test_task(); +// test_app(); + +// uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_ARIA2_GLOBAL_SHUTDOWN_NOW, (void*) TRUE); + // finalize plug-in + uget_plugin_global_set(UgetPluginCurlInfo, UGET_PLUGIN_GLOBAL_INIT, (void*) FALSE); + uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_GLOBAL_INIT, (void*) FALSE); + uget_plugin_global_set(UgetPluginMediaInfo, UGET_PLUGIN_GLOBAL_INIT, (void*) FALSE); + uget_plugin_global_set(UgetPluginMegaInfo, UGET_PLUGIN_GLOBAL_INIT, (void*) FALSE); ug_sleep(1000); return 0; diff -Nru uget-2.0.2/tests/test-uget.c uget-2.2.2/tests/test-uget.c --- uget-2.0.2/tests/test-uget.c 2015-04-30 23:36:03.000000000 +0000 +++ uget-2.2.2/tests/test-uget.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -38,11 +38,18 @@ #include #include #include + +#include +#include +#include +#include //#include #include #include #include +#include +#include // ---------------------------------------------------------------------------- // UgetNode @@ -60,18 +67,14 @@ UgetNode* newtwo; newone = uget_node_new (NULL); - newone->type = 1; uget_node_append (parent, newone); newtwo = uget_node_new (NULL); - newtwo->type = 2; uget_node_append (parent, newtwo); parent = newtwo; newone = uget_node_new (NULL); - newone->type = 3; uget_node_append (parent, newone); newtwo = uget_node_new (NULL); - newtwo->type = 4; uget_node_append (parent, newtwo); } @@ -132,7 +135,7 @@ print_fake_path (node); - uget_node_unref (node); + uget_node_free (node); } void parse_node (UgetNode* parent) @@ -399,6 +402,160 @@ } // ---------------------------------------------------------------------------- +// UgetMedia + +void test_media (void) +{ + UgetMedia* umedia; + UgetMediaItem* umitem; + int count; + char* uri; + + uri = "https://www.youtube.com/watch?v=y2004Xaz2HU"; + count = uget_site_get_id (uri); + umedia = uget_media_new (uri, UGET_SITE_YOUTUBE); + count = uget_media_grab_items (umedia, NULL); + printf ("\nget %d media item\n", count); + + umitem = uget_media_match (umedia, + UGET_MEDIA_MATCH_1, + UGET_MEDIA_QUALITY_UNKNOWN, + UGET_MEDIA_TYPE_MP4); + +// umitem = uget_media_match (umedia, +// UGET_MEDIA_MATCH_0, +// UGET_MEDIA_QUALITY_UNKNOWN, +// UGET_MEDIA_TYPE_MP4); + + for (; umitem; umitem = umitem->next) { +// printf ("URL %s" "\n", umitem->url); + printf ("quality %d, type %d, has_url %d\n", + umitem->quality, umitem->type, + (umitem->url) ? 1 : 0); + } + uget_media_free (umedia); +} + +// ---------------------------------------------------------------------------- +// UgetSeq + +void test_seq (void) +{ + UgetSequence useq; + UgList list; + UgLink* link; + + ug_list_init (&list); + + uget_sequence_init (&useq); + + // digits + uget_sequence_add (&useq, 0, 5, 2); + // ASCII or Unicode + uget_sequence_add (&useq, 'a', 'b', 0); + uget_sequence_add (&useq, 0x7532, 0x7535, 0); + + printf (" --- sequence --- count = %d\n", + uget_sequence_count (&useq, "http://sample/*-*-*.mp4")); + uget_sequence_get_list (&useq, "http://sample/*-*-*.mp4", &list); + for (link = list.head; link; link = link->next) + puts (link->data); + uget_sequence_clear_result(&list); + + puts (" --- preview ---"); + uget_sequence_get_preview (&useq, "http://sample/*-*.mp4", &list); + for (link = list.head; link; link = link->next) + puts (link->data); + uget_sequence_clear_result(&list); + + uget_sequence_final (&useq); +} + +// ---------------------------------------------------------------------------- +// UgetFiles + +void test_files_json(UgetFiles* files) +{ + UgJson json; + UgBuffer buffer; + UgJsonError code; + UgetFiles* files2; + + ug_json_init(&json); + ug_buffer_init(&buffer, 4096); + + // write + ug_json_begin_write(&json, UG_JSON_FORMAT_INDENT, &buffer); + ug_json_write_object_head(&json); + ug_json_write_entry(&json, files, files->info->entry); + ug_json_write_object_tail(&json); + ug_json_end_write(&json); + ug_buffer_write_char(&buffer, '\0'); + puts("\n--- print files ---"); + puts(buffer.beg); + + files2 = ug_data_new(UgetFilesInfo); + // parse + ug_json_begin_parse(&json); + ug_json_push(&json, ug_json_parse_entry, files2, (void*)files2->info->entry); + ug_json_push(&json, ug_json_parse_object, NULL, NULL); + code = ug_json_parse(&json, buffer.beg, -1); + ug_json_end_parse(&json); + printf("\n" "parse return %d\n", code); + + // write + buffer.cur = buffer.beg; + ug_json_begin_write(&json, UG_JSON_FORMAT_INDENT, &buffer); + ug_json_write_entry(&json, files2, files2->info->entry); + ug_json_end_write(&json); + ug_buffer_write_char(&buffer, '\0'); + puts("\n--- print files2 ---"); + puts(buffer.beg); + + ug_data_free(files2); + + ug_buffer_clear(&buffer, TRUE); + ug_json_final(&json); +} + +void test_files(void) +{ + UgetFiles* files; + UgetFiles* src; + UgetFile* element; + + files = ug_data_new(UgetFilesInfo); + src = ug_data_new(UgetFilesInfo); + + element = uget_files_realloc(files, "0.mp4"); + element = uget_files_realloc(files, "1.mp4"); + element = uget_files_realloc(files, "2.mp4"); + element = uget_files_realloc(files, "xyz.mp4"); + + test_files_json(files); + + element = uget_files_realloc(src, "0.mp4"); + element = uget_files_realloc(src, "1.mp4"); + element = uget_files_realloc(src, "2.mp4"); + element = uget_files_realloc(src, "3.mp4"); + + element = uget_files_realloc(src, "foo.mp4"); + element = uget_files_realloc(src, "xxx.apk"); + + uget_files_sync(files, src); + test_files_json(files); + + element->state |= UGET_FILE_STATE_DELETED; + src->sync_count++; + + uget_files_sync(files, src); + test_files_json(files); + + ug_data_free(files); + ug_data_free(src); +} + +// ---------------------------------------------------------------------------- // main int main (void) @@ -408,7 +565,10 @@ // test_uget_a2cf (); // test_uget_curl (); - test_uget_rss (); +// test_uget_rss (); +// test_media (); +// test_seq (); + test_files(); return 0; } diff -Nru uget-2.0.2/tests/test-uglib.c uget-2.2.2/tests/test-uglib.c --- uget-2.0.2/tests/test-uglib.c 2015-06-07 23:27:56.000000000 +0000 +++ uget-2.2.2/tests/test-uglib.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -50,6 +50,7 @@ #if defined _WIN32 || defined _WIN64 #include #include +#include // ShellExecuteW() void test_launch (void) { @@ -89,8 +90,10 @@ char* exts[] = {"png", "bmp", "jpg", NULL}; char* schemes[] = {"ftp", "http", "git", NULL}; // const char* uri = "ftp://i.am.ftp.you.com/file.bmp"; - const char* uri = "http://my.and.your.org/file%200.png"; + const char* uri = "http://my.and.your.org/file%200.png?field1=value1&field2=value2&field3"; // const char* uri = "git://this.edu/file.jpg"; + const char* query; + UgUriQuery uquery; UgUri uuri; int index; @@ -107,6 +110,20 @@ temp = ug_uri_get_file (&uuri); puts (temp); ug_free (temp); + + query = uri + uuri.query; + while ((index = ug_uri_query_part (&uquery, query)) > 0) { + printf ("ug_uri_query_part() return %d, %.*s=%.*s\n", + index, + uquery.field_len, query, + uquery.value_len, uquery.value); + query = uquery.field_next; + } + + temp = ug_strdup ("file%2020%%20100%2f%20.jpg"); + index = ug_decode_uri (temp, -1, temp); + printf ("ug_decode_uri() return %d, output - '%s'\n", index, temp); + ug_free (temp); } // ---------------------------------------------------------------------------- @@ -207,6 +224,10 @@ ug_buffer_write (&buffer, "This is test string.", -1); ug_buffer_write_char (&buffer, 'K'); + *ug_buffer_alloc (&buffer, 1) = 'S'; + *ug_buffer_alloc (&buffer, 1) = 'D'; + ug_buffer_write_char (&buffer, 'K'); + ug_buffer_write_char (&buffer, '\0'); puts ((char*)buffer.beg); ug_buffer_clear (&buffer, 1); @@ -215,29 +236,57 @@ // ---------------------------------------------------------------------------- // UgSLink +static void slinks_add_range (UgSLinks* slinks, char** strings, + int beg, int end) +{ + for (; beg < end; beg++) { + strings[beg] = ug_strdup_printf ("%.3d", beg); + ug_slinks_add (slinks, strings[beg]); + } +} + +static void slinks_remove_range (UgSLinks* slinks, char** strings, + int beg, int end) +{ + for (; beg < end; beg++) { + ug_slinks_remove (slinks, strings[beg], NULL); + ug_free (strings[beg]); + strings[beg] = NULL; + } +} + void test_slink () { + char** strings; UgSLinks slinks; - char* data1 = "1th"; - char* data2 = "2th"; - char* data3 = "3th"; - char* data4 = "4th"; puts ("\n--- test_slink:"); ug_slinks_init (&slinks, 16); + strings = ug_malloc0 (sizeof (char*) * 100); - ug_slinks_add (&slinks, data1); - ug_slinks_add (&slinks, data2); - ug_slinks_add (&slinks, data3); - ug_slinks_add (&slinks, data4); - ug_slinks_remove (&slinks, data1, NULL); - ug_slinks_remove (&slinks, data3, NULL); - ug_slinks_remove (&slinks, data2, NULL); - ug_slinks_remove (&slinks, data4, NULL); - ug_slinks_add (&slinks, data2); - ug_slinks_add (&slinks, data4); + slinks_add_range (&slinks, strings, 40, 60); + slinks_add_range (&slinks, strings, 0, 20); + slinks_add_range (&slinks, strings, 80, 100); + slinks_add_range (&slinks, strings, 20, 40); + slinks_add_range (&slinks, strings, 60, 80); + + slinks_remove_range (&slinks, strings, 0, 10); + slinks_remove_range (&slinks, strings, 90, 100); + slinks_remove_range (&slinks, strings, 70, 90); + slinks_remove_range (&slinks, strings, 10, 30); + slinks_remove_range (&slinks, strings, 30, 50); + slinks_remove_range (&slinks, strings, 50, 70); + slinks_add_range (&slinks, strings, 0, 20); + slinks_add_range (&slinks, strings, 80, 100); + + slinks_remove_range (&slinks, strings, 0, 10); + slinks_remove_range (&slinks, strings, 90, 100); ug_slinks_foreach (&slinks, (void*)puts, NULL); + slinks_remove_range (&slinks, strings, 10, 20); + slinks_remove_range (&slinks, strings, 80, 90); + + ug_free (strings); ug_slinks_final (&slinks); } @@ -248,12 +297,19 @@ { const char* test_string = "This is a test string."; char* base64; + char* orig; int len; puts ("\n--- test_base64:"); base64 = ug_base64_encode ((uint8_t*)test_string, strlen (test_string), &len); printf ("%.*s\n", len, base64); puts (base64); + + orig = (char*) ug_base64_decode(base64, len, NULL); + printf ("%.*s\n", len, orig); + + ug_free (base64); + ug_free (orig); } // ---------------------------------------------------------------------------- @@ -277,10 +333,6 @@ printf ("ug_build_filename() - %s\n", temp); ug_free (temp); - temp = ug_unescape_uri ("This%20is a test%200.", -1); - puts (temp); - ug_free (temp); - temp = ug_strdup ("\nThis\n one\r"); puts ("--- ug_str_remove_crlf () --- start ---"); puts (temp); @@ -396,11 +448,34 @@ puts("\n"); } +void test_unicode (void) +{ + const char* utf8_name = "\xE9\xBB\x83\xE6\xAD\xA3\xE9\x9B\x84"; + char* utf8_str; + uint32_t* ucs4_str; + int len; + int idx; + + ucs4_str = ug_utf8_to_ucs4 (utf8_name, -1, &len); + for (idx = 0; idx < len; idx++) + printf ("\\x%X", ucs4_str[idx]); + puts (""); + + utf8_str = ug_ucs4_to_utf8 (ucs4_str, -1, &len); + for (idx = 0; idx < len; idx++) + printf ("\\x%X", (unsigned)(uint8_t)utf8_str[idx]); + puts (""); + + ug_free (ucs4_str); + ug_free (utf8_str); +} + // ---------------------------------------------------------------------------- // main int main (void) { + test_unicode (); test_html (); test_cmd_arg (); test_option (); diff -Nru uget-2.0.2/uget/Android.mk uget-2.2.2/uget/Android.mk --- uget-2.0.2/uget/Android.mk 2015-03-25 09:15:43.000000000 +0000 +++ uget-2.2.2/uget/Android.mk 2019-05-19 16:49:06.000000000 +0000 @@ -4,25 +4,34 @@ LOCAL_MODULE := libuget LOCAL_CPPFLAGS += -DNDEBUG -## -DNO_URI_HASH ## -DNO_RETRY_IF_CONNECT_FAILED -LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/../uglib $(LOCAL_PATH)/../curl/include +LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/../uglib $(LOCAL_PATH)/../curl/include $(LOCAL_PATH)/../openssl/include LOCAL_SRC_FILES := \ + UgetSequence.c \ UgetRpc.c \ UgetOption.c \ UgetData.c \ - UgetNode.c UgetNode-compare.c \ + UgetFiles.c \ + UgetNode.c \ + UgetNode-compare.c \ + UgetNode-filter.c \ UgetTask.c \ UgetHash.c \ + UgetSite.c \ UgetApp.c \ UgetEvent.c \ UgetPlugin.c \ UgetA2cf.c \ UgetCurl.c \ UgetAria2.c \ + UgetMedia.c \ + UgetMedia-youtube.c \ + UgetPluginCurl.c \ UgetPluginAria2.c \ - UgetPluginCurl.c + UgetPluginMedia.c \ + UgetPluginAgent.c \ + UgetPluginMega.c include $(BUILD_STATIC_LIBRARY) diff -Nru uget-2.0.2/uget/CMakeLists.txt uget-2.2.2/uget/CMakeLists.txt --- uget-2.0.2/uget/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/CMakeLists.txt 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 3.4.1) + +project(uget) + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNDEBUG") +# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNO_RETRY_IF_CONNECT_FAILED") + +include_directories( ${CURL_INCLUDE_DIR} + ${OPENSSL_INCLUDE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/../uglib + ) + +add_library( uget + STATIC + + UgetSequence.c + UgetRpc.c + UgetOption.c + UgetData.c + UgetFiles.c + UgetNode.c + UgetNode-compare.c + UgetNode-filter.c + UgetTask.c + UgetHash.c + UgetSite.c + UgetApp.c + UgetEvent.c + UgetPlugin.c + UgetA2cf.c + UgetCurl.c + UgetAria2.c + UgetMedia.c + UgetMedia-youtube.c + UgetPluginCurl.c + UgetPluginAria2.c + UgetPluginMedia.c + UgetPluginAgent.c + UgetPluginMega.c + ) + diff -Nru uget-2.0.2/uget/Makefile.am uget-2.2.2/uget/Makefile.am --- uget-2.0.2/uget/Makefile.am 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uget/Makefile.am 2019-05-19 16:49:06.000000000 +0000 @@ -11,40 +11,57 @@ libuget_a_CFLAGS = @PTHREAD_CFLAGS@ @GLIB_CFLAGS@ libuget_a_SOURCES = \ + UgetSequence.c \ UgetRss.c \ UgetRpc.c \ UgetOption.c \ UgetData.c \ - UgetNode.c UgetNode-compare.c \ + UgetFiles.c \ + UgetNode.c \ + UgetNode-compare.c \ + UgetNode-filter.c \ UgetTask.c \ UgetHash.c \ + UgetSite.c \ UgetApp.c \ UgetEvent.c \ UgetPlugin.c \ UgetA2cf.c \ UgetCurl.c \ UgetAria2.c \ - UgetPluginEmpty.c \ + UgetMedia.c \ + UgetMedia-youtube.c \ + UgetPluginCurl.c \ UgetPluginAria2.c \ - UgetPluginCurl.c + UgetPluginMedia.c \ + UgetPluginAgent.c \ + UgetPluginMega.c \ + UgetPluginEmpty.c noinst_HEADERS = \ + UgetSequence.h \ UgetRss.h \ UgetRpc.h \ UgetOption.h \ UgetData.h \ + UgetFiles.h \ UgetNode.h \ UgetTask.h \ UgetHash.h \ + UgetSite.h \ UgetApp.h \ UgetEvent.h \ UgetPlugin.h \ UgetA2cf.h \ UgetCurl.h \ UgetAria2.h \ - UgetPluginEmpty.h \ + UgetMedia.h \ + UgetPluginCurl.h \ UgetPluginAria2.h \ - UgetPluginCurl.h + UgetPluginMedia.h \ + UgetPluginAgent.h \ + UgetPluginMega.h \ + UgetPluginEmpty.h if WITH_LIBPWMD libuget_a_CFLAGS += @LIBPWMD_CFLAGS@ @@ -52,4 +69,6 @@ noinst_HEADERS += pwmd.h endif -EXTRA_DIST = Android.mk +EXTRA_DIST = \ + Android.mk \ + CMakeLists.txt diff -Nru uget-2.0.2/uget/Makefile.in uget-2.2.2/uget/Makefile.in --- uget-2.0.2/uget/Makefile.in 2015-09-11 12:13:20.000000000 +0000 +++ uget-2.2.2/uget/Makefile.in 2019-05-19 16:51:34.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,6 +16,61 @@ VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -37,55 +91,144 @@ @WITH_LIBPWMD_TRUE@am__append_2 = pwmd.c @WITH_LIBPWMD_TRUE@am__append_3 = pwmd.h subdir = uget -DIST_COMMON = $(am__noinst_HEADERS_DIST) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__noinst_HEADERS_DIST) \ + $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = libuget_a_AR = $(AR) $(ARFLAGS) libuget_a_LIBADD = -am__libuget_a_SOURCES_DIST = UgetRss.c UgetRpc.c UgetOption.c \ - UgetData.c UgetNode.c UgetNode-compare.c UgetTask.c UgetHash.c \ - UgetApp.c UgetEvent.c UgetPlugin.c UgetA2cf.c UgetCurl.c \ - UgetAria2.c UgetPluginEmpty.c UgetPluginAria2.c \ - UgetPluginCurl.c pwmd.c +am__libuget_a_SOURCES_DIST = UgetSequence.c UgetRss.c UgetRpc.c \ + UgetOption.c UgetData.c UgetFiles.c UgetNode.c \ + UgetNode-compare.c UgetNode-filter.c UgetTask.c UgetHash.c \ + UgetSite.c UgetApp.c UgetEvent.c UgetPlugin.c UgetA2cf.c \ + UgetCurl.c UgetAria2.c UgetMedia.c UgetMedia-youtube.c \ + UgetPluginCurl.c UgetPluginAria2.c UgetPluginMedia.c \ + UgetPluginAgent.c UgetPluginMega.c UgetPluginEmpty.c pwmd.c @WITH_LIBPWMD_TRUE@am__objects_1 = libuget_a-pwmd.$(OBJEXT) -am_libuget_a_OBJECTS = libuget_a-UgetRss.$(OBJEXT) \ - libuget_a-UgetRpc.$(OBJEXT) libuget_a-UgetOption.$(OBJEXT) \ - libuget_a-UgetData.$(OBJEXT) libuget_a-UgetNode.$(OBJEXT) \ +am_libuget_a_OBJECTS = libuget_a-UgetSequence.$(OBJEXT) \ + libuget_a-UgetRss.$(OBJEXT) libuget_a-UgetRpc.$(OBJEXT) \ + libuget_a-UgetOption.$(OBJEXT) libuget_a-UgetData.$(OBJEXT) \ + libuget_a-UgetFiles.$(OBJEXT) libuget_a-UgetNode.$(OBJEXT) \ libuget_a-UgetNode-compare.$(OBJEXT) \ + libuget_a-UgetNode-filter.$(OBJEXT) \ libuget_a-UgetTask.$(OBJEXT) libuget_a-UgetHash.$(OBJEXT) \ - libuget_a-UgetApp.$(OBJEXT) libuget_a-UgetEvent.$(OBJEXT) \ - libuget_a-UgetPlugin.$(OBJEXT) libuget_a-UgetA2cf.$(OBJEXT) \ - libuget_a-UgetCurl.$(OBJEXT) libuget_a-UgetAria2.$(OBJEXT) \ - libuget_a-UgetPluginEmpty.$(OBJEXT) \ + libuget_a-UgetSite.$(OBJEXT) libuget_a-UgetApp.$(OBJEXT) \ + libuget_a-UgetEvent.$(OBJEXT) libuget_a-UgetPlugin.$(OBJEXT) \ + libuget_a-UgetA2cf.$(OBJEXT) libuget_a-UgetCurl.$(OBJEXT) \ + libuget_a-UgetAria2.$(OBJEXT) libuget_a-UgetMedia.$(OBJEXT) \ + libuget_a-UgetMedia-youtube.$(OBJEXT) \ + libuget_a-UgetPluginCurl.$(OBJEXT) \ libuget_a-UgetPluginAria2.$(OBJEXT) \ - libuget_a-UgetPluginCurl.$(OBJEXT) $(am__objects_1) + libuget_a-UgetPluginMedia.$(OBJEXT) \ + libuget_a-UgetPluginAgent.$(OBJEXT) \ + libuget_a-UgetPluginMega.$(OBJEXT) \ + libuget_a-UgetPluginEmpty.$(OBJEXT) $(am__objects_1) libuget_a_OBJECTS = $(am_libuget_a_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/libuget_a-UgetA2cf.Po \ + ./$(DEPDIR)/libuget_a-UgetApp.Po \ + ./$(DEPDIR)/libuget_a-UgetAria2.Po \ + ./$(DEPDIR)/libuget_a-UgetCurl.Po \ + ./$(DEPDIR)/libuget_a-UgetData.Po \ + ./$(DEPDIR)/libuget_a-UgetEvent.Po \ + ./$(DEPDIR)/libuget_a-UgetFiles.Po \ + ./$(DEPDIR)/libuget_a-UgetHash.Po \ + ./$(DEPDIR)/libuget_a-UgetMedia-youtube.Po \ + ./$(DEPDIR)/libuget_a-UgetMedia.Po \ + ./$(DEPDIR)/libuget_a-UgetNode-compare.Po \ + ./$(DEPDIR)/libuget_a-UgetNode-filter.Po \ + ./$(DEPDIR)/libuget_a-UgetNode.Po \ + ./$(DEPDIR)/libuget_a-UgetOption.Po \ + ./$(DEPDIR)/libuget_a-UgetPlugin.Po \ + ./$(DEPDIR)/libuget_a-UgetPluginAgent.Po \ + ./$(DEPDIR)/libuget_a-UgetPluginAria2.Po \ + ./$(DEPDIR)/libuget_a-UgetPluginCurl.Po \ + ./$(DEPDIR)/libuget_a-UgetPluginEmpty.Po \ + ./$(DEPDIR)/libuget_a-UgetPluginMedia.Po \ + ./$(DEPDIR)/libuget_a-UgetPluginMega.Po \ + ./$(DEPDIR)/libuget_a-UgetRpc.Po \ + ./$(DEPDIR)/libuget_a-UgetRss.Po \ + ./$(DEPDIR)/libuget_a-UgetSequence.Po \ + ./$(DEPDIR)/libuget_a-UgetSite.Po \ + ./$(DEPDIR)/libuget_a-UgetTask.Po \ + ./$(DEPDIR)/libuget_a-pwmd.Po am__mv = mv -f +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libuget_a_SOURCES) DIST_SOURCES = $(am__libuget_a_SOURCES_DIST) -am__noinst_HEADERS_DIST = UgetRss.h UgetRpc.h UgetOption.h UgetData.h \ - UgetNode.h UgetTask.h UgetHash.h UgetApp.h UgetEvent.h \ - UgetPlugin.h UgetA2cf.h UgetCurl.h UgetAria2.h \ - UgetPluginEmpty.h UgetPluginAria2.h UgetPluginCurl.h pwmd.h +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__noinst_HEADERS_DIST = UgetSequence.h UgetRss.h UgetRpc.h \ + UgetOption.h UgetData.h UgetFiles.h UgetNode.h UgetTask.h \ + UgetHash.h UgetSite.h UgetApp.h UgetEvent.h UgetPlugin.h \ + UgetA2cf.h UgetCurl.h UgetAria2.h UgetMedia.h UgetPluginCurl.h \ + UgetPluginAria2.h UgetPluginMedia.h UgetPluginAgent.h \ + UgetPluginMega.h UgetPluginEmpty.h pwmd.h HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -143,6 +286,7 @@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LFS_CFLAGS = @LFS_CFLAGS@ LFS_LDFLAGS = @LFS_LDFLAGS@ @@ -239,17 +383,23 @@ noinst_LIBRARIES = libuget.a libuget_a_CPPFLAGS = -I$(top_srcdir)/uglib -I$(top_srcdir)/uget libuget_a_CFLAGS = @PTHREAD_CFLAGS@ @GLIB_CFLAGS@ $(am__append_1) -libuget_a_SOURCES = UgetRss.c UgetRpc.c UgetOption.c UgetData.c \ - UgetNode.c UgetNode-compare.c UgetTask.c UgetHash.c UgetApp.c \ +libuget_a_SOURCES = UgetSequence.c UgetRss.c UgetRpc.c UgetOption.c \ + UgetData.c UgetFiles.c UgetNode.c UgetNode-compare.c \ + UgetNode-filter.c UgetTask.c UgetHash.c UgetSite.c UgetApp.c \ UgetEvent.c UgetPlugin.c UgetA2cf.c UgetCurl.c UgetAria2.c \ - UgetPluginEmpty.c UgetPluginAria2.c UgetPluginCurl.c \ - $(am__append_2) -noinst_HEADERS = UgetRss.h UgetRpc.h UgetOption.h UgetData.h \ - UgetNode.h UgetTask.h UgetHash.h UgetApp.h UgetEvent.h \ - UgetPlugin.h UgetA2cf.h UgetCurl.h UgetAria2.h \ - UgetPluginEmpty.h UgetPluginAria2.h UgetPluginCurl.h \ - $(am__append_3) -EXTRA_DIST = Android.mk + UgetMedia.c UgetMedia-youtube.c UgetPluginCurl.c \ + UgetPluginAria2.c UgetPluginMedia.c UgetPluginAgent.c \ + UgetPluginMega.c UgetPluginEmpty.c $(am__append_2) +noinst_HEADERS = UgetSequence.h UgetRss.h UgetRpc.h UgetOption.h \ + UgetData.h UgetFiles.h UgetNode.h UgetTask.h UgetHash.h \ + UgetSite.h UgetApp.h UgetEvent.h UgetPlugin.h UgetA2cf.h \ + UgetCurl.h UgetAria2.h UgetMedia.h UgetPluginCurl.h \ + UgetPluginAria2.h UgetPluginMedia.h UgetPluginAgent.h \ + UgetPluginMega.h UgetPluginEmpty.h $(am__append_3) +EXTRA_DIST = \ + Android.mk \ + CMakeLists.txt + all: all-am .SUFFIXES: @@ -266,14 +416,13 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu uget/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu uget/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -287,10 +436,11 @@ clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + libuget.a: $(libuget_a_OBJECTS) $(libuget_a_DEPENDENCIES) $(EXTRA_libuget_a_DEPENDENCIES) - -rm -f libuget.a - $(libuget_a_AR) libuget.a $(libuget_a_OBJECTS) $(libuget_a_LIBADD) - $(RANLIB) libuget.a + $(AM_V_at)-rm -f libuget.a + $(AM_V_AR)$(libuget_a_AR) libuget.a $(libuget_a_OBJECTS) $(libuget_a_LIBADD) + $(AM_V_at)$(RANLIB) libuget.a mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -298,311 +448,441 @@ distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetA2cf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetApp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetAria2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetCurl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetData.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetEvent.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetHash.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetNode-compare.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetNode.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetOption.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetPlugin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetPluginAria2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetPluginCurl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetPluginEmpty.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetRpc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetRss.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetTask.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-pwmd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetA2cf.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetApp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetAria2.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetCurl.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetData.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetEvent.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetFiles.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetHash.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetMedia-youtube.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetMedia.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetNode-compare.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetNode-filter.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetNode.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetOption.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetPlugin.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetPluginAgent.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetPluginAria2.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetPluginCurl.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetPluginEmpty.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetPluginMedia.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetPluginMega.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetRpc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetRss.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetSequence.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetSite.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-UgetTask.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuget_a-pwmd.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +libuget_a-UgetSequence.o: UgetSequence.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetSequence.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetSequence.Tpo -c -o libuget_a-UgetSequence.o `test -f 'UgetSequence.c' || echo '$(srcdir)/'`UgetSequence.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetSequence.Tpo $(DEPDIR)/libuget_a-UgetSequence.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetSequence.c' object='libuget_a-UgetSequence.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetSequence.o `test -f 'UgetSequence.c' || echo '$(srcdir)/'`UgetSequence.c + +libuget_a-UgetSequence.obj: UgetSequence.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetSequence.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetSequence.Tpo -c -o libuget_a-UgetSequence.obj `if test -f 'UgetSequence.c'; then $(CYGPATH_W) 'UgetSequence.c'; else $(CYGPATH_W) '$(srcdir)/UgetSequence.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetSequence.Tpo $(DEPDIR)/libuget_a-UgetSequence.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetSequence.c' object='libuget_a-UgetSequence.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetSequence.obj `if test -f 'UgetSequence.c'; then $(CYGPATH_W) 'UgetSequence.c'; else $(CYGPATH_W) '$(srcdir)/UgetSequence.c'; fi` libuget_a-UgetRss.o: UgetRss.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetRss.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetRss.Tpo -c -o libuget_a-UgetRss.o `test -f 'UgetRss.c' || echo '$(srcdir)/'`UgetRss.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetRss.Tpo $(DEPDIR)/libuget_a-UgetRss.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetRss.c' object='libuget_a-UgetRss.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetRss.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetRss.Tpo -c -o libuget_a-UgetRss.o `test -f 'UgetRss.c' || echo '$(srcdir)/'`UgetRss.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetRss.Tpo $(DEPDIR)/libuget_a-UgetRss.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetRss.c' object='libuget_a-UgetRss.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetRss.o `test -f 'UgetRss.c' || echo '$(srcdir)/'`UgetRss.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetRss.o `test -f 'UgetRss.c' || echo '$(srcdir)/'`UgetRss.c libuget_a-UgetRss.obj: UgetRss.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetRss.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetRss.Tpo -c -o libuget_a-UgetRss.obj `if test -f 'UgetRss.c'; then $(CYGPATH_W) 'UgetRss.c'; else $(CYGPATH_W) '$(srcdir)/UgetRss.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetRss.Tpo $(DEPDIR)/libuget_a-UgetRss.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetRss.c' object='libuget_a-UgetRss.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetRss.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetRss.Tpo -c -o libuget_a-UgetRss.obj `if test -f 'UgetRss.c'; then $(CYGPATH_W) 'UgetRss.c'; else $(CYGPATH_W) '$(srcdir)/UgetRss.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetRss.Tpo $(DEPDIR)/libuget_a-UgetRss.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetRss.c' object='libuget_a-UgetRss.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetRss.obj `if test -f 'UgetRss.c'; then $(CYGPATH_W) 'UgetRss.c'; else $(CYGPATH_W) '$(srcdir)/UgetRss.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetRss.obj `if test -f 'UgetRss.c'; then $(CYGPATH_W) 'UgetRss.c'; else $(CYGPATH_W) '$(srcdir)/UgetRss.c'; fi` libuget_a-UgetRpc.o: UgetRpc.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetRpc.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetRpc.Tpo -c -o libuget_a-UgetRpc.o `test -f 'UgetRpc.c' || echo '$(srcdir)/'`UgetRpc.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetRpc.Tpo $(DEPDIR)/libuget_a-UgetRpc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetRpc.c' object='libuget_a-UgetRpc.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetRpc.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetRpc.Tpo -c -o libuget_a-UgetRpc.o `test -f 'UgetRpc.c' || echo '$(srcdir)/'`UgetRpc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetRpc.Tpo $(DEPDIR)/libuget_a-UgetRpc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetRpc.c' object='libuget_a-UgetRpc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetRpc.o `test -f 'UgetRpc.c' || echo '$(srcdir)/'`UgetRpc.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetRpc.o `test -f 'UgetRpc.c' || echo '$(srcdir)/'`UgetRpc.c libuget_a-UgetRpc.obj: UgetRpc.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetRpc.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetRpc.Tpo -c -o libuget_a-UgetRpc.obj `if test -f 'UgetRpc.c'; then $(CYGPATH_W) 'UgetRpc.c'; else $(CYGPATH_W) '$(srcdir)/UgetRpc.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetRpc.Tpo $(DEPDIR)/libuget_a-UgetRpc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetRpc.c' object='libuget_a-UgetRpc.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetRpc.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetRpc.Tpo -c -o libuget_a-UgetRpc.obj `if test -f 'UgetRpc.c'; then $(CYGPATH_W) 'UgetRpc.c'; else $(CYGPATH_W) '$(srcdir)/UgetRpc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetRpc.Tpo $(DEPDIR)/libuget_a-UgetRpc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetRpc.c' object='libuget_a-UgetRpc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetRpc.obj `if test -f 'UgetRpc.c'; then $(CYGPATH_W) 'UgetRpc.c'; else $(CYGPATH_W) '$(srcdir)/UgetRpc.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetRpc.obj `if test -f 'UgetRpc.c'; then $(CYGPATH_W) 'UgetRpc.c'; else $(CYGPATH_W) '$(srcdir)/UgetRpc.c'; fi` libuget_a-UgetOption.o: UgetOption.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetOption.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetOption.Tpo -c -o libuget_a-UgetOption.o `test -f 'UgetOption.c' || echo '$(srcdir)/'`UgetOption.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetOption.Tpo $(DEPDIR)/libuget_a-UgetOption.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetOption.c' object='libuget_a-UgetOption.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetOption.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetOption.Tpo -c -o libuget_a-UgetOption.o `test -f 'UgetOption.c' || echo '$(srcdir)/'`UgetOption.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetOption.Tpo $(DEPDIR)/libuget_a-UgetOption.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetOption.c' object='libuget_a-UgetOption.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetOption.o `test -f 'UgetOption.c' || echo '$(srcdir)/'`UgetOption.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetOption.o `test -f 'UgetOption.c' || echo '$(srcdir)/'`UgetOption.c libuget_a-UgetOption.obj: UgetOption.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetOption.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetOption.Tpo -c -o libuget_a-UgetOption.obj `if test -f 'UgetOption.c'; then $(CYGPATH_W) 'UgetOption.c'; else $(CYGPATH_W) '$(srcdir)/UgetOption.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetOption.Tpo $(DEPDIR)/libuget_a-UgetOption.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetOption.c' object='libuget_a-UgetOption.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetOption.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetOption.Tpo -c -o libuget_a-UgetOption.obj `if test -f 'UgetOption.c'; then $(CYGPATH_W) 'UgetOption.c'; else $(CYGPATH_W) '$(srcdir)/UgetOption.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetOption.Tpo $(DEPDIR)/libuget_a-UgetOption.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetOption.c' object='libuget_a-UgetOption.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetOption.obj `if test -f 'UgetOption.c'; then $(CYGPATH_W) 'UgetOption.c'; else $(CYGPATH_W) '$(srcdir)/UgetOption.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetOption.obj `if test -f 'UgetOption.c'; then $(CYGPATH_W) 'UgetOption.c'; else $(CYGPATH_W) '$(srcdir)/UgetOption.c'; fi` libuget_a-UgetData.o: UgetData.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetData.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetData.Tpo -c -o libuget_a-UgetData.o `test -f 'UgetData.c' || echo '$(srcdir)/'`UgetData.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetData.Tpo $(DEPDIR)/libuget_a-UgetData.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetData.c' object='libuget_a-UgetData.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetData.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetData.Tpo -c -o libuget_a-UgetData.o `test -f 'UgetData.c' || echo '$(srcdir)/'`UgetData.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetData.Tpo $(DEPDIR)/libuget_a-UgetData.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetData.c' object='libuget_a-UgetData.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetData.o `test -f 'UgetData.c' || echo '$(srcdir)/'`UgetData.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetData.o `test -f 'UgetData.c' || echo '$(srcdir)/'`UgetData.c libuget_a-UgetData.obj: UgetData.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetData.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetData.Tpo -c -o libuget_a-UgetData.obj `if test -f 'UgetData.c'; then $(CYGPATH_W) 'UgetData.c'; else $(CYGPATH_W) '$(srcdir)/UgetData.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetData.Tpo $(DEPDIR)/libuget_a-UgetData.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetData.c' object='libuget_a-UgetData.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetData.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetData.Tpo -c -o libuget_a-UgetData.obj `if test -f 'UgetData.c'; then $(CYGPATH_W) 'UgetData.c'; else $(CYGPATH_W) '$(srcdir)/UgetData.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetData.Tpo $(DEPDIR)/libuget_a-UgetData.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetData.c' object='libuget_a-UgetData.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetData.obj `if test -f 'UgetData.c'; then $(CYGPATH_W) 'UgetData.c'; else $(CYGPATH_W) '$(srcdir)/UgetData.c'; fi` + +libuget_a-UgetFiles.o: UgetFiles.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetFiles.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetFiles.Tpo -c -o libuget_a-UgetFiles.o `test -f 'UgetFiles.c' || echo '$(srcdir)/'`UgetFiles.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetFiles.Tpo $(DEPDIR)/libuget_a-UgetFiles.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetFiles.c' object='libuget_a-UgetFiles.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetData.obj `if test -f 'UgetData.c'; then $(CYGPATH_W) 'UgetData.c'; else $(CYGPATH_W) '$(srcdir)/UgetData.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetFiles.o `test -f 'UgetFiles.c' || echo '$(srcdir)/'`UgetFiles.c + +libuget_a-UgetFiles.obj: UgetFiles.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetFiles.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetFiles.Tpo -c -o libuget_a-UgetFiles.obj `if test -f 'UgetFiles.c'; then $(CYGPATH_W) 'UgetFiles.c'; else $(CYGPATH_W) '$(srcdir)/UgetFiles.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetFiles.Tpo $(DEPDIR)/libuget_a-UgetFiles.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetFiles.c' object='libuget_a-UgetFiles.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetFiles.obj `if test -f 'UgetFiles.c'; then $(CYGPATH_W) 'UgetFiles.c'; else $(CYGPATH_W) '$(srcdir)/UgetFiles.c'; fi` libuget_a-UgetNode.o: UgetNode.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetNode.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetNode.Tpo -c -o libuget_a-UgetNode.o `test -f 'UgetNode.c' || echo '$(srcdir)/'`UgetNode.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetNode.Tpo $(DEPDIR)/libuget_a-UgetNode.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetNode.c' object='libuget_a-UgetNode.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetNode.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetNode.Tpo -c -o libuget_a-UgetNode.o `test -f 'UgetNode.c' || echo '$(srcdir)/'`UgetNode.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetNode.Tpo $(DEPDIR)/libuget_a-UgetNode.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetNode.c' object='libuget_a-UgetNode.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetNode.o `test -f 'UgetNode.c' || echo '$(srcdir)/'`UgetNode.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetNode.o `test -f 'UgetNode.c' || echo '$(srcdir)/'`UgetNode.c libuget_a-UgetNode.obj: UgetNode.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetNode.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetNode.Tpo -c -o libuget_a-UgetNode.obj `if test -f 'UgetNode.c'; then $(CYGPATH_W) 'UgetNode.c'; else $(CYGPATH_W) '$(srcdir)/UgetNode.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetNode.Tpo $(DEPDIR)/libuget_a-UgetNode.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetNode.c' object='libuget_a-UgetNode.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetNode.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetNode.Tpo -c -o libuget_a-UgetNode.obj `if test -f 'UgetNode.c'; then $(CYGPATH_W) 'UgetNode.c'; else $(CYGPATH_W) '$(srcdir)/UgetNode.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetNode.Tpo $(DEPDIR)/libuget_a-UgetNode.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetNode.c' object='libuget_a-UgetNode.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetNode.obj `if test -f 'UgetNode.c'; then $(CYGPATH_W) 'UgetNode.c'; else $(CYGPATH_W) '$(srcdir)/UgetNode.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetNode.obj `if test -f 'UgetNode.c'; then $(CYGPATH_W) 'UgetNode.c'; else $(CYGPATH_W) '$(srcdir)/UgetNode.c'; fi` libuget_a-UgetNode-compare.o: UgetNode-compare.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetNode-compare.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetNode-compare.Tpo -c -o libuget_a-UgetNode-compare.o `test -f 'UgetNode-compare.c' || echo '$(srcdir)/'`UgetNode-compare.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetNode-compare.Tpo $(DEPDIR)/libuget_a-UgetNode-compare.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetNode-compare.c' object='libuget_a-UgetNode-compare.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetNode-compare.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetNode-compare.Tpo -c -o libuget_a-UgetNode-compare.o `test -f 'UgetNode-compare.c' || echo '$(srcdir)/'`UgetNode-compare.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetNode-compare.Tpo $(DEPDIR)/libuget_a-UgetNode-compare.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetNode-compare.c' object='libuget_a-UgetNode-compare.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetNode-compare.o `test -f 'UgetNode-compare.c' || echo '$(srcdir)/'`UgetNode-compare.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetNode-compare.o `test -f 'UgetNode-compare.c' || echo '$(srcdir)/'`UgetNode-compare.c libuget_a-UgetNode-compare.obj: UgetNode-compare.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetNode-compare.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetNode-compare.Tpo -c -o libuget_a-UgetNode-compare.obj `if test -f 'UgetNode-compare.c'; then $(CYGPATH_W) 'UgetNode-compare.c'; else $(CYGPATH_W) '$(srcdir)/UgetNode-compare.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetNode-compare.Tpo $(DEPDIR)/libuget_a-UgetNode-compare.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetNode-compare.c' object='libuget_a-UgetNode-compare.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetNode-compare.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetNode-compare.Tpo -c -o libuget_a-UgetNode-compare.obj `if test -f 'UgetNode-compare.c'; then $(CYGPATH_W) 'UgetNode-compare.c'; else $(CYGPATH_W) '$(srcdir)/UgetNode-compare.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetNode-compare.Tpo $(DEPDIR)/libuget_a-UgetNode-compare.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetNode-compare.c' object='libuget_a-UgetNode-compare.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetNode-compare.obj `if test -f 'UgetNode-compare.c'; then $(CYGPATH_W) 'UgetNode-compare.c'; else $(CYGPATH_W) '$(srcdir)/UgetNode-compare.c'; fi` + +libuget_a-UgetNode-filter.o: UgetNode-filter.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetNode-filter.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetNode-filter.Tpo -c -o libuget_a-UgetNode-filter.o `test -f 'UgetNode-filter.c' || echo '$(srcdir)/'`UgetNode-filter.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetNode-filter.Tpo $(DEPDIR)/libuget_a-UgetNode-filter.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetNode-filter.c' object='libuget_a-UgetNode-filter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetNode-compare.obj `if test -f 'UgetNode-compare.c'; then $(CYGPATH_W) 'UgetNode-compare.c'; else $(CYGPATH_W) '$(srcdir)/UgetNode-compare.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetNode-filter.o `test -f 'UgetNode-filter.c' || echo '$(srcdir)/'`UgetNode-filter.c + +libuget_a-UgetNode-filter.obj: UgetNode-filter.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetNode-filter.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetNode-filter.Tpo -c -o libuget_a-UgetNode-filter.obj `if test -f 'UgetNode-filter.c'; then $(CYGPATH_W) 'UgetNode-filter.c'; else $(CYGPATH_W) '$(srcdir)/UgetNode-filter.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetNode-filter.Tpo $(DEPDIR)/libuget_a-UgetNode-filter.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetNode-filter.c' object='libuget_a-UgetNode-filter.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetNode-filter.obj `if test -f 'UgetNode-filter.c'; then $(CYGPATH_W) 'UgetNode-filter.c'; else $(CYGPATH_W) '$(srcdir)/UgetNode-filter.c'; fi` libuget_a-UgetTask.o: UgetTask.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetTask.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetTask.Tpo -c -o libuget_a-UgetTask.o `test -f 'UgetTask.c' || echo '$(srcdir)/'`UgetTask.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetTask.Tpo $(DEPDIR)/libuget_a-UgetTask.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetTask.c' object='libuget_a-UgetTask.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetTask.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetTask.Tpo -c -o libuget_a-UgetTask.o `test -f 'UgetTask.c' || echo '$(srcdir)/'`UgetTask.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetTask.Tpo $(DEPDIR)/libuget_a-UgetTask.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetTask.c' object='libuget_a-UgetTask.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetTask.o `test -f 'UgetTask.c' || echo '$(srcdir)/'`UgetTask.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetTask.o `test -f 'UgetTask.c' || echo '$(srcdir)/'`UgetTask.c libuget_a-UgetTask.obj: UgetTask.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetTask.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetTask.Tpo -c -o libuget_a-UgetTask.obj `if test -f 'UgetTask.c'; then $(CYGPATH_W) 'UgetTask.c'; else $(CYGPATH_W) '$(srcdir)/UgetTask.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetTask.Tpo $(DEPDIR)/libuget_a-UgetTask.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetTask.c' object='libuget_a-UgetTask.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetTask.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetTask.Tpo -c -o libuget_a-UgetTask.obj `if test -f 'UgetTask.c'; then $(CYGPATH_W) 'UgetTask.c'; else $(CYGPATH_W) '$(srcdir)/UgetTask.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetTask.Tpo $(DEPDIR)/libuget_a-UgetTask.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetTask.c' object='libuget_a-UgetTask.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetTask.obj `if test -f 'UgetTask.c'; then $(CYGPATH_W) 'UgetTask.c'; else $(CYGPATH_W) '$(srcdir)/UgetTask.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetTask.obj `if test -f 'UgetTask.c'; then $(CYGPATH_W) 'UgetTask.c'; else $(CYGPATH_W) '$(srcdir)/UgetTask.c'; fi` libuget_a-UgetHash.o: UgetHash.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetHash.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetHash.Tpo -c -o libuget_a-UgetHash.o `test -f 'UgetHash.c' || echo '$(srcdir)/'`UgetHash.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetHash.Tpo $(DEPDIR)/libuget_a-UgetHash.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetHash.c' object='libuget_a-UgetHash.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetHash.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetHash.Tpo -c -o libuget_a-UgetHash.o `test -f 'UgetHash.c' || echo '$(srcdir)/'`UgetHash.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetHash.Tpo $(DEPDIR)/libuget_a-UgetHash.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetHash.c' object='libuget_a-UgetHash.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetHash.o `test -f 'UgetHash.c' || echo '$(srcdir)/'`UgetHash.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetHash.o `test -f 'UgetHash.c' || echo '$(srcdir)/'`UgetHash.c libuget_a-UgetHash.obj: UgetHash.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetHash.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetHash.Tpo -c -o libuget_a-UgetHash.obj `if test -f 'UgetHash.c'; then $(CYGPATH_W) 'UgetHash.c'; else $(CYGPATH_W) '$(srcdir)/UgetHash.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetHash.Tpo $(DEPDIR)/libuget_a-UgetHash.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetHash.c' object='libuget_a-UgetHash.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetHash.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetHash.Tpo -c -o libuget_a-UgetHash.obj `if test -f 'UgetHash.c'; then $(CYGPATH_W) 'UgetHash.c'; else $(CYGPATH_W) '$(srcdir)/UgetHash.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetHash.Tpo $(DEPDIR)/libuget_a-UgetHash.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetHash.c' object='libuget_a-UgetHash.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetHash.obj `if test -f 'UgetHash.c'; then $(CYGPATH_W) 'UgetHash.c'; else $(CYGPATH_W) '$(srcdir)/UgetHash.c'; fi` + +libuget_a-UgetSite.o: UgetSite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetSite.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetSite.Tpo -c -o libuget_a-UgetSite.o `test -f 'UgetSite.c' || echo '$(srcdir)/'`UgetSite.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetSite.Tpo $(DEPDIR)/libuget_a-UgetSite.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetSite.c' object='libuget_a-UgetSite.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetHash.obj `if test -f 'UgetHash.c'; then $(CYGPATH_W) 'UgetHash.c'; else $(CYGPATH_W) '$(srcdir)/UgetHash.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetSite.o `test -f 'UgetSite.c' || echo '$(srcdir)/'`UgetSite.c + +libuget_a-UgetSite.obj: UgetSite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetSite.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetSite.Tpo -c -o libuget_a-UgetSite.obj `if test -f 'UgetSite.c'; then $(CYGPATH_W) 'UgetSite.c'; else $(CYGPATH_W) '$(srcdir)/UgetSite.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetSite.Tpo $(DEPDIR)/libuget_a-UgetSite.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetSite.c' object='libuget_a-UgetSite.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetSite.obj `if test -f 'UgetSite.c'; then $(CYGPATH_W) 'UgetSite.c'; else $(CYGPATH_W) '$(srcdir)/UgetSite.c'; fi` libuget_a-UgetApp.o: UgetApp.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetApp.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetApp.Tpo -c -o libuget_a-UgetApp.o `test -f 'UgetApp.c' || echo '$(srcdir)/'`UgetApp.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetApp.Tpo $(DEPDIR)/libuget_a-UgetApp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetApp.c' object='libuget_a-UgetApp.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetApp.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetApp.Tpo -c -o libuget_a-UgetApp.o `test -f 'UgetApp.c' || echo '$(srcdir)/'`UgetApp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetApp.Tpo $(DEPDIR)/libuget_a-UgetApp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetApp.c' object='libuget_a-UgetApp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetApp.o `test -f 'UgetApp.c' || echo '$(srcdir)/'`UgetApp.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetApp.o `test -f 'UgetApp.c' || echo '$(srcdir)/'`UgetApp.c libuget_a-UgetApp.obj: UgetApp.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetApp.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetApp.Tpo -c -o libuget_a-UgetApp.obj `if test -f 'UgetApp.c'; then $(CYGPATH_W) 'UgetApp.c'; else $(CYGPATH_W) '$(srcdir)/UgetApp.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetApp.Tpo $(DEPDIR)/libuget_a-UgetApp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetApp.c' object='libuget_a-UgetApp.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetApp.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetApp.Tpo -c -o libuget_a-UgetApp.obj `if test -f 'UgetApp.c'; then $(CYGPATH_W) 'UgetApp.c'; else $(CYGPATH_W) '$(srcdir)/UgetApp.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetApp.Tpo $(DEPDIR)/libuget_a-UgetApp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetApp.c' object='libuget_a-UgetApp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetApp.obj `if test -f 'UgetApp.c'; then $(CYGPATH_W) 'UgetApp.c'; else $(CYGPATH_W) '$(srcdir)/UgetApp.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetApp.obj `if test -f 'UgetApp.c'; then $(CYGPATH_W) 'UgetApp.c'; else $(CYGPATH_W) '$(srcdir)/UgetApp.c'; fi` libuget_a-UgetEvent.o: UgetEvent.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetEvent.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetEvent.Tpo -c -o libuget_a-UgetEvent.o `test -f 'UgetEvent.c' || echo '$(srcdir)/'`UgetEvent.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetEvent.Tpo $(DEPDIR)/libuget_a-UgetEvent.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetEvent.c' object='libuget_a-UgetEvent.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetEvent.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetEvent.Tpo -c -o libuget_a-UgetEvent.o `test -f 'UgetEvent.c' || echo '$(srcdir)/'`UgetEvent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetEvent.Tpo $(DEPDIR)/libuget_a-UgetEvent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetEvent.c' object='libuget_a-UgetEvent.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetEvent.o `test -f 'UgetEvent.c' || echo '$(srcdir)/'`UgetEvent.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetEvent.o `test -f 'UgetEvent.c' || echo '$(srcdir)/'`UgetEvent.c libuget_a-UgetEvent.obj: UgetEvent.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetEvent.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetEvent.Tpo -c -o libuget_a-UgetEvent.obj `if test -f 'UgetEvent.c'; then $(CYGPATH_W) 'UgetEvent.c'; else $(CYGPATH_W) '$(srcdir)/UgetEvent.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetEvent.Tpo $(DEPDIR)/libuget_a-UgetEvent.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetEvent.c' object='libuget_a-UgetEvent.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetEvent.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetEvent.Tpo -c -o libuget_a-UgetEvent.obj `if test -f 'UgetEvent.c'; then $(CYGPATH_W) 'UgetEvent.c'; else $(CYGPATH_W) '$(srcdir)/UgetEvent.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetEvent.Tpo $(DEPDIR)/libuget_a-UgetEvent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetEvent.c' object='libuget_a-UgetEvent.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetEvent.obj `if test -f 'UgetEvent.c'; then $(CYGPATH_W) 'UgetEvent.c'; else $(CYGPATH_W) '$(srcdir)/UgetEvent.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetEvent.obj `if test -f 'UgetEvent.c'; then $(CYGPATH_W) 'UgetEvent.c'; else $(CYGPATH_W) '$(srcdir)/UgetEvent.c'; fi` libuget_a-UgetPlugin.o: UgetPlugin.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPlugin.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetPlugin.Tpo -c -o libuget_a-UgetPlugin.o `test -f 'UgetPlugin.c' || echo '$(srcdir)/'`UgetPlugin.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetPlugin.Tpo $(DEPDIR)/libuget_a-UgetPlugin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetPlugin.c' object='libuget_a-UgetPlugin.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPlugin.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetPlugin.Tpo -c -o libuget_a-UgetPlugin.o `test -f 'UgetPlugin.c' || echo '$(srcdir)/'`UgetPlugin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPlugin.Tpo $(DEPDIR)/libuget_a-UgetPlugin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPlugin.c' object='libuget_a-UgetPlugin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPlugin.o `test -f 'UgetPlugin.c' || echo '$(srcdir)/'`UgetPlugin.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPlugin.o `test -f 'UgetPlugin.c' || echo '$(srcdir)/'`UgetPlugin.c libuget_a-UgetPlugin.obj: UgetPlugin.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPlugin.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetPlugin.Tpo -c -o libuget_a-UgetPlugin.obj `if test -f 'UgetPlugin.c'; then $(CYGPATH_W) 'UgetPlugin.c'; else $(CYGPATH_W) '$(srcdir)/UgetPlugin.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetPlugin.Tpo $(DEPDIR)/libuget_a-UgetPlugin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetPlugin.c' object='libuget_a-UgetPlugin.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPlugin.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetPlugin.Tpo -c -o libuget_a-UgetPlugin.obj `if test -f 'UgetPlugin.c'; then $(CYGPATH_W) 'UgetPlugin.c'; else $(CYGPATH_W) '$(srcdir)/UgetPlugin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPlugin.Tpo $(DEPDIR)/libuget_a-UgetPlugin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPlugin.c' object='libuget_a-UgetPlugin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPlugin.obj `if test -f 'UgetPlugin.c'; then $(CYGPATH_W) 'UgetPlugin.c'; else $(CYGPATH_W) '$(srcdir)/UgetPlugin.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPlugin.obj `if test -f 'UgetPlugin.c'; then $(CYGPATH_W) 'UgetPlugin.c'; else $(CYGPATH_W) '$(srcdir)/UgetPlugin.c'; fi` libuget_a-UgetA2cf.o: UgetA2cf.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetA2cf.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetA2cf.Tpo -c -o libuget_a-UgetA2cf.o `test -f 'UgetA2cf.c' || echo '$(srcdir)/'`UgetA2cf.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetA2cf.Tpo $(DEPDIR)/libuget_a-UgetA2cf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetA2cf.c' object='libuget_a-UgetA2cf.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetA2cf.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetA2cf.Tpo -c -o libuget_a-UgetA2cf.o `test -f 'UgetA2cf.c' || echo '$(srcdir)/'`UgetA2cf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetA2cf.Tpo $(DEPDIR)/libuget_a-UgetA2cf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetA2cf.c' object='libuget_a-UgetA2cf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetA2cf.o `test -f 'UgetA2cf.c' || echo '$(srcdir)/'`UgetA2cf.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetA2cf.o `test -f 'UgetA2cf.c' || echo '$(srcdir)/'`UgetA2cf.c libuget_a-UgetA2cf.obj: UgetA2cf.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetA2cf.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetA2cf.Tpo -c -o libuget_a-UgetA2cf.obj `if test -f 'UgetA2cf.c'; then $(CYGPATH_W) 'UgetA2cf.c'; else $(CYGPATH_W) '$(srcdir)/UgetA2cf.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetA2cf.Tpo $(DEPDIR)/libuget_a-UgetA2cf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetA2cf.c' object='libuget_a-UgetA2cf.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetA2cf.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetA2cf.Tpo -c -o libuget_a-UgetA2cf.obj `if test -f 'UgetA2cf.c'; then $(CYGPATH_W) 'UgetA2cf.c'; else $(CYGPATH_W) '$(srcdir)/UgetA2cf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetA2cf.Tpo $(DEPDIR)/libuget_a-UgetA2cf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetA2cf.c' object='libuget_a-UgetA2cf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetA2cf.obj `if test -f 'UgetA2cf.c'; then $(CYGPATH_W) 'UgetA2cf.c'; else $(CYGPATH_W) '$(srcdir)/UgetA2cf.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetA2cf.obj `if test -f 'UgetA2cf.c'; then $(CYGPATH_W) 'UgetA2cf.c'; else $(CYGPATH_W) '$(srcdir)/UgetA2cf.c'; fi` libuget_a-UgetCurl.o: UgetCurl.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetCurl.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetCurl.Tpo -c -o libuget_a-UgetCurl.o `test -f 'UgetCurl.c' || echo '$(srcdir)/'`UgetCurl.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetCurl.Tpo $(DEPDIR)/libuget_a-UgetCurl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetCurl.c' object='libuget_a-UgetCurl.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetCurl.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetCurl.Tpo -c -o libuget_a-UgetCurl.o `test -f 'UgetCurl.c' || echo '$(srcdir)/'`UgetCurl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetCurl.Tpo $(DEPDIR)/libuget_a-UgetCurl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetCurl.c' object='libuget_a-UgetCurl.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetCurl.o `test -f 'UgetCurl.c' || echo '$(srcdir)/'`UgetCurl.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetCurl.o `test -f 'UgetCurl.c' || echo '$(srcdir)/'`UgetCurl.c libuget_a-UgetCurl.obj: UgetCurl.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetCurl.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetCurl.Tpo -c -o libuget_a-UgetCurl.obj `if test -f 'UgetCurl.c'; then $(CYGPATH_W) 'UgetCurl.c'; else $(CYGPATH_W) '$(srcdir)/UgetCurl.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetCurl.Tpo $(DEPDIR)/libuget_a-UgetCurl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetCurl.c' object='libuget_a-UgetCurl.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetCurl.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetCurl.Tpo -c -o libuget_a-UgetCurl.obj `if test -f 'UgetCurl.c'; then $(CYGPATH_W) 'UgetCurl.c'; else $(CYGPATH_W) '$(srcdir)/UgetCurl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetCurl.Tpo $(DEPDIR)/libuget_a-UgetCurl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetCurl.c' object='libuget_a-UgetCurl.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetCurl.obj `if test -f 'UgetCurl.c'; then $(CYGPATH_W) 'UgetCurl.c'; else $(CYGPATH_W) '$(srcdir)/UgetCurl.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetCurl.obj `if test -f 'UgetCurl.c'; then $(CYGPATH_W) 'UgetCurl.c'; else $(CYGPATH_W) '$(srcdir)/UgetCurl.c'; fi` libuget_a-UgetAria2.o: UgetAria2.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetAria2.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetAria2.Tpo -c -o libuget_a-UgetAria2.o `test -f 'UgetAria2.c' || echo '$(srcdir)/'`UgetAria2.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetAria2.Tpo $(DEPDIR)/libuget_a-UgetAria2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetAria2.c' object='libuget_a-UgetAria2.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetAria2.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetAria2.Tpo -c -o libuget_a-UgetAria2.o `test -f 'UgetAria2.c' || echo '$(srcdir)/'`UgetAria2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetAria2.Tpo $(DEPDIR)/libuget_a-UgetAria2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetAria2.c' object='libuget_a-UgetAria2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetAria2.o `test -f 'UgetAria2.c' || echo '$(srcdir)/'`UgetAria2.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetAria2.o `test -f 'UgetAria2.c' || echo '$(srcdir)/'`UgetAria2.c libuget_a-UgetAria2.obj: UgetAria2.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetAria2.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetAria2.Tpo -c -o libuget_a-UgetAria2.obj `if test -f 'UgetAria2.c'; then $(CYGPATH_W) 'UgetAria2.c'; else $(CYGPATH_W) '$(srcdir)/UgetAria2.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetAria2.Tpo $(DEPDIR)/libuget_a-UgetAria2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetAria2.c' object='libuget_a-UgetAria2.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetAria2.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetAria2.Tpo -c -o libuget_a-UgetAria2.obj `if test -f 'UgetAria2.c'; then $(CYGPATH_W) 'UgetAria2.c'; else $(CYGPATH_W) '$(srcdir)/UgetAria2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetAria2.Tpo $(DEPDIR)/libuget_a-UgetAria2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetAria2.c' object='libuget_a-UgetAria2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetAria2.obj `if test -f 'UgetAria2.c'; then $(CYGPATH_W) 'UgetAria2.c'; else $(CYGPATH_W) '$(srcdir)/UgetAria2.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetAria2.obj `if test -f 'UgetAria2.c'; then $(CYGPATH_W) 'UgetAria2.c'; else $(CYGPATH_W) '$(srcdir)/UgetAria2.c'; fi` -libuget_a-UgetPluginEmpty.o: UgetPluginEmpty.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginEmpty.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginEmpty.Tpo -c -o libuget_a-UgetPluginEmpty.o `test -f 'UgetPluginEmpty.c' || echo '$(srcdir)/'`UgetPluginEmpty.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetPluginEmpty.Tpo $(DEPDIR)/libuget_a-UgetPluginEmpty.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetPluginEmpty.c' object='libuget_a-UgetPluginEmpty.o' libtool=no @AMDEPBACKSLASH@ +libuget_a-UgetMedia.o: UgetMedia.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetMedia.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetMedia.Tpo -c -o libuget_a-UgetMedia.o `test -f 'UgetMedia.c' || echo '$(srcdir)/'`UgetMedia.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetMedia.Tpo $(DEPDIR)/libuget_a-UgetMedia.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetMedia.c' object='libuget_a-UgetMedia.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginEmpty.o `test -f 'UgetPluginEmpty.c' || echo '$(srcdir)/'`UgetPluginEmpty.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetMedia.o `test -f 'UgetMedia.c' || echo '$(srcdir)/'`UgetMedia.c -libuget_a-UgetPluginEmpty.obj: UgetPluginEmpty.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginEmpty.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginEmpty.Tpo -c -o libuget_a-UgetPluginEmpty.obj `if test -f 'UgetPluginEmpty.c'; then $(CYGPATH_W) 'UgetPluginEmpty.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginEmpty.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetPluginEmpty.Tpo $(DEPDIR)/libuget_a-UgetPluginEmpty.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetPluginEmpty.c' object='libuget_a-UgetPluginEmpty.obj' libtool=no @AMDEPBACKSLASH@ +libuget_a-UgetMedia.obj: UgetMedia.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetMedia.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetMedia.Tpo -c -o libuget_a-UgetMedia.obj `if test -f 'UgetMedia.c'; then $(CYGPATH_W) 'UgetMedia.c'; else $(CYGPATH_W) '$(srcdir)/UgetMedia.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetMedia.Tpo $(DEPDIR)/libuget_a-UgetMedia.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetMedia.c' object='libuget_a-UgetMedia.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginEmpty.obj `if test -f 'UgetPluginEmpty.c'; then $(CYGPATH_W) 'UgetPluginEmpty.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginEmpty.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetMedia.obj `if test -f 'UgetMedia.c'; then $(CYGPATH_W) 'UgetMedia.c'; else $(CYGPATH_W) '$(srcdir)/UgetMedia.c'; fi` -libuget_a-UgetPluginAria2.o: UgetPluginAria2.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginAria2.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginAria2.Tpo -c -o libuget_a-UgetPluginAria2.o `test -f 'UgetPluginAria2.c' || echo '$(srcdir)/'`UgetPluginAria2.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetPluginAria2.Tpo $(DEPDIR)/libuget_a-UgetPluginAria2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetPluginAria2.c' object='libuget_a-UgetPluginAria2.o' libtool=no @AMDEPBACKSLASH@ +libuget_a-UgetMedia-youtube.o: UgetMedia-youtube.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetMedia-youtube.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetMedia-youtube.Tpo -c -o libuget_a-UgetMedia-youtube.o `test -f 'UgetMedia-youtube.c' || echo '$(srcdir)/'`UgetMedia-youtube.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetMedia-youtube.Tpo $(DEPDIR)/libuget_a-UgetMedia-youtube.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetMedia-youtube.c' object='libuget_a-UgetMedia-youtube.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginAria2.o `test -f 'UgetPluginAria2.c' || echo '$(srcdir)/'`UgetPluginAria2.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetMedia-youtube.o `test -f 'UgetMedia-youtube.c' || echo '$(srcdir)/'`UgetMedia-youtube.c -libuget_a-UgetPluginAria2.obj: UgetPluginAria2.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginAria2.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginAria2.Tpo -c -o libuget_a-UgetPluginAria2.obj `if test -f 'UgetPluginAria2.c'; then $(CYGPATH_W) 'UgetPluginAria2.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginAria2.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetPluginAria2.Tpo $(DEPDIR)/libuget_a-UgetPluginAria2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetPluginAria2.c' object='libuget_a-UgetPluginAria2.obj' libtool=no @AMDEPBACKSLASH@ +libuget_a-UgetMedia-youtube.obj: UgetMedia-youtube.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetMedia-youtube.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetMedia-youtube.Tpo -c -o libuget_a-UgetMedia-youtube.obj `if test -f 'UgetMedia-youtube.c'; then $(CYGPATH_W) 'UgetMedia-youtube.c'; else $(CYGPATH_W) '$(srcdir)/UgetMedia-youtube.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetMedia-youtube.Tpo $(DEPDIR)/libuget_a-UgetMedia-youtube.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetMedia-youtube.c' object='libuget_a-UgetMedia-youtube.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginAria2.obj `if test -f 'UgetPluginAria2.c'; then $(CYGPATH_W) 'UgetPluginAria2.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginAria2.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetMedia-youtube.obj `if test -f 'UgetMedia-youtube.c'; then $(CYGPATH_W) 'UgetMedia-youtube.c'; else $(CYGPATH_W) '$(srcdir)/UgetMedia-youtube.c'; fi` libuget_a-UgetPluginCurl.o: UgetPluginCurl.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginCurl.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginCurl.Tpo -c -o libuget_a-UgetPluginCurl.o `test -f 'UgetPluginCurl.c' || echo '$(srcdir)/'`UgetPluginCurl.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetPluginCurl.Tpo $(DEPDIR)/libuget_a-UgetPluginCurl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetPluginCurl.c' object='libuget_a-UgetPluginCurl.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginCurl.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginCurl.Tpo -c -o libuget_a-UgetPluginCurl.o `test -f 'UgetPluginCurl.c' || echo '$(srcdir)/'`UgetPluginCurl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPluginCurl.Tpo $(DEPDIR)/libuget_a-UgetPluginCurl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPluginCurl.c' object='libuget_a-UgetPluginCurl.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginCurl.o `test -f 'UgetPluginCurl.c' || echo '$(srcdir)/'`UgetPluginCurl.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginCurl.o `test -f 'UgetPluginCurl.c' || echo '$(srcdir)/'`UgetPluginCurl.c libuget_a-UgetPluginCurl.obj: UgetPluginCurl.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginCurl.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginCurl.Tpo -c -o libuget_a-UgetPluginCurl.obj `if test -f 'UgetPluginCurl.c'; then $(CYGPATH_W) 'UgetPluginCurl.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginCurl.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-UgetPluginCurl.Tpo $(DEPDIR)/libuget_a-UgetPluginCurl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgetPluginCurl.c' object='libuget_a-UgetPluginCurl.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginCurl.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginCurl.Tpo -c -o libuget_a-UgetPluginCurl.obj `if test -f 'UgetPluginCurl.c'; then $(CYGPATH_W) 'UgetPluginCurl.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginCurl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPluginCurl.Tpo $(DEPDIR)/libuget_a-UgetPluginCurl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPluginCurl.c' object='libuget_a-UgetPluginCurl.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginCurl.obj `if test -f 'UgetPluginCurl.c'; then $(CYGPATH_W) 'UgetPluginCurl.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginCurl.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginCurl.obj `if test -f 'UgetPluginCurl.c'; then $(CYGPATH_W) 'UgetPluginCurl.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginCurl.c'; fi` + +libuget_a-UgetPluginAria2.o: UgetPluginAria2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginAria2.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginAria2.Tpo -c -o libuget_a-UgetPluginAria2.o `test -f 'UgetPluginAria2.c' || echo '$(srcdir)/'`UgetPluginAria2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPluginAria2.Tpo $(DEPDIR)/libuget_a-UgetPluginAria2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPluginAria2.c' object='libuget_a-UgetPluginAria2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginAria2.o `test -f 'UgetPluginAria2.c' || echo '$(srcdir)/'`UgetPluginAria2.c + +libuget_a-UgetPluginAria2.obj: UgetPluginAria2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginAria2.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginAria2.Tpo -c -o libuget_a-UgetPluginAria2.obj `if test -f 'UgetPluginAria2.c'; then $(CYGPATH_W) 'UgetPluginAria2.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginAria2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPluginAria2.Tpo $(DEPDIR)/libuget_a-UgetPluginAria2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPluginAria2.c' object='libuget_a-UgetPluginAria2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginAria2.obj `if test -f 'UgetPluginAria2.c'; then $(CYGPATH_W) 'UgetPluginAria2.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginAria2.c'; fi` + +libuget_a-UgetPluginMedia.o: UgetPluginMedia.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginMedia.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginMedia.Tpo -c -o libuget_a-UgetPluginMedia.o `test -f 'UgetPluginMedia.c' || echo '$(srcdir)/'`UgetPluginMedia.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPluginMedia.Tpo $(DEPDIR)/libuget_a-UgetPluginMedia.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPluginMedia.c' object='libuget_a-UgetPluginMedia.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginMedia.o `test -f 'UgetPluginMedia.c' || echo '$(srcdir)/'`UgetPluginMedia.c + +libuget_a-UgetPluginMedia.obj: UgetPluginMedia.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginMedia.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginMedia.Tpo -c -o libuget_a-UgetPluginMedia.obj `if test -f 'UgetPluginMedia.c'; then $(CYGPATH_W) 'UgetPluginMedia.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginMedia.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPluginMedia.Tpo $(DEPDIR)/libuget_a-UgetPluginMedia.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPluginMedia.c' object='libuget_a-UgetPluginMedia.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginMedia.obj `if test -f 'UgetPluginMedia.c'; then $(CYGPATH_W) 'UgetPluginMedia.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginMedia.c'; fi` + +libuget_a-UgetPluginAgent.o: UgetPluginAgent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginAgent.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginAgent.Tpo -c -o libuget_a-UgetPluginAgent.o `test -f 'UgetPluginAgent.c' || echo '$(srcdir)/'`UgetPluginAgent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPluginAgent.Tpo $(DEPDIR)/libuget_a-UgetPluginAgent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPluginAgent.c' object='libuget_a-UgetPluginAgent.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginAgent.o `test -f 'UgetPluginAgent.c' || echo '$(srcdir)/'`UgetPluginAgent.c + +libuget_a-UgetPluginAgent.obj: UgetPluginAgent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginAgent.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginAgent.Tpo -c -o libuget_a-UgetPluginAgent.obj `if test -f 'UgetPluginAgent.c'; then $(CYGPATH_W) 'UgetPluginAgent.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginAgent.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPluginAgent.Tpo $(DEPDIR)/libuget_a-UgetPluginAgent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPluginAgent.c' object='libuget_a-UgetPluginAgent.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginAgent.obj `if test -f 'UgetPluginAgent.c'; then $(CYGPATH_W) 'UgetPluginAgent.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginAgent.c'; fi` + +libuget_a-UgetPluginMega.o: UgetPluginMega.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginMega.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginMega.Tpo -c -o libuget_a-UgetPluginMega.o `test -f 'UgetPluginMega.c' || echo '$(srcdir)/'`UgetPluginMega.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPluginMega.Tpo $(DEPDIR)/libuget_a-UgetPluginMega.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPluginMega.c' object='libuget_a-UgetPluginMega.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginMega.o `test -f 'UgetPluginMega.c' || echo '$(srcdir)/'`UgetPluginMega.c + +libuget_a-UgetPluginMega.obj: UgetPluginMega.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginMega.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginMega.Tpo -c -o libuget_a-UgetPluginMega.obj `if test -f 'UgetPluginMega.c'; then $(CYGPATH_W) 'UgetPluginMega.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginMega.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPluginMega.Tpo $(DEPDIR)/libuget_a-UgetPluginMega.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPluginMega.c' object='libuget_a-UgetPluginMega.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginMega.obj `if test -f 'UgetPluginMega.c'; then $(CYGPATH_W) 'UgetPluginMega.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginMega.c'; fi` + +libuget_a-UgetPluginEmpty.o: UgetPluginEmpty.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginEmpty.o -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginEmpty.Tpo -c -o libuget_a-UgetPluginEmpty.o `test -f 'UgetPluginEmpty.c' || echo '$(srcdir)/'`UgetPluginEmpty.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPluginEmpty.Tpo $(DEPDIR)/libuget_a-UgetPluginEmpty.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPluginEmpty.c' object='libuget_a-UgetPluginEmpty.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginEmpty.o `test -f 'UgetPluginEmpty.c' || echo '$(srcdir)/'`UgetPluginEmpty.c + +libuget_a-UgetPluginEmpty.obj: UgetPluginEmpty.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-UgetPluginEmpty.obj -MD -MP -MF $(DEPDIR)/libuget_a-UgetPluginEmpty.Tpo -c -o libuget_a-UgetPluginEmpty.obj `if test -f 'UgetPluginEmpty.c'; then $(CYGPATH_W) 'UgetPluginEmpty.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginEmpty.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-UgetPluginEmpty.Tpo $(DEPDIR)/libuget_a-UgetPluginEmpty.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgetPluginEmpty.c' object='libuget_a-UgetPluginEmpty.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-UgetPluginEmpty.obj `if test -f 'UgetPluginEmpty.c'; then $(CYGPATH_W) 'UgetPluginEmpty.c'; else $(CYGPATH_W) '$(srcdir)/UgetPluginEmpty.c'; fi` libuget_a-pwmd.o: pwmd.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-pwmd.o -MD -MP -MF $(DEPDIR)/libuget_a-pwmd.Tpo -c -o libuget_a-pwmd.o `test -f 'pwmd.c' || echo '$(srcdir)/'`pwmd.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-pwmd.Tpo $(DEPDIR)/libuget_a-pwmd.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pwmd.c' object='libuget_a-pwmd.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-pwmd.o -MD -MP -MF $(DEPDIR)/libuget_a-pwmd.Tpo -c -o libuget_a-pwmd.o `test -f 'pwmd.c' || echo '$(srcdir)/'`pwmd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-pwmd.Tpo $(DEPDIR)/libuget_a-pwmd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pwmd.c' object='libuget_a-pwmd.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-pwmd.o `test -f 'pwmd.c' || echo '$(srcdir)/'`pwmd.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-pwmd.o `test -f 'pwmd.c' || echo '$(srcdir)/'`pwmd.c libuget_a-pwmd.obj: pwmd.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-pwmd.obj -MD -MP -MF $(DEPDIR)/libuget_a-pwmd.Tpo -c -o libuget_a-pwmd.obj `if test -f 'pwmd.c'; then $(CYGPATH_W) 'pwmd.c'; else $(CYGPATH_W) '$(srcdir)/pwmd.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuget_a-pwmd.Tpo $(DEPDIR)/libuget_a-pwmd.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pwmd.c' object='libuget_a-pwmd.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-pwmd.obj `if test -f 'pwmd.c'; then $(CYGPATH_W) 'pwmd.c'; else $(CYGPATH_W) '$(srcdir)/pwmd.c'; fi` - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -MT libuget_a-pwmd.obj -MD -MP -MF $(DEPDIR)/libuget_a-pwmd.Tpo -c -o libuget_a-pwmd.obj `if test -f 'pwmd.c'; then $(CYGPATH_W) 'pwmd.c'; else $(CYGPATH_W) '$(srcdir)/pwmd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libuget_a-pwmd.Tpo $(DEPDIR)/libuget_a-pwmd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pwmd.c' object='libuget_a-pwmd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuget_a_CPPFLAGS) $(CPPFLAGS) $(libuget_a_CFLAGS) $(CFLAGS) -c -o libuget_a-pwmd.obj `if test -f 'pwmd.c'; then $(CYGPATH_W) 'pwmd.c'; else $(CYGPATH_W) '$(srcdir)/pwmd.c'; fi` + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -614,15 +894,11 @@ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -631,11 +907,29 @@ here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -704,7 +998,33 @@ clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/libuget_a-UgetA2cf.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetApp.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetAria2.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetCurl.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetData.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetEvent.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetFiles.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetHash.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetMedia-youtube.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetMedia.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetNode-compare.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetNode-filter.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetNode.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetOption.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPlugin.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPluginAgent.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPluginAria2.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPluginCurl.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPluginEmpty.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPluginMedia.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPluginMega.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetRpc.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetRss.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetSequence.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetSite.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetTask.Po + -rm -f ./$(DEPDIR)/libuget_a-pwmd.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -750,7 +1070,33 @@ installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/libuget_a-UgetA2cf.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetApp.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetAria2.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetCurl.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetData.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetEvent.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetFiles.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetHash.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetMedia-youtube.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetMedia.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetNode-compare.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetNode-filter.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetNode.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetOption.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPlugin.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPluginAgent.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPluginAria2.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPluginCurl.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPluginEmpty.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPluginMedia.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetPluginMega.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetRpc.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetRss.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetSequence.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetSite.Po + -rm -f ./$(DEPDIR)/libuget_a-UgetTask.Po + -rm -f ./$(DEPDIR)/libuget_a-pwmd.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -770,18 +1116,20 @@ .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES ctags distclean distclean-compile \ - distclean-generic distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-noinstLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru uget-2.0.2/uget/pwmd.c uget-2.2.2/uget/pwmd.c --- uget-2.0.2/uget/pwmd.c 2014-05-20 02:52:45.000000000 +0000 +++ uget-2.2.2/uget/pwmd.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 Ben Kibbey + Copyright (C) 2011-2016 Ben Kibbey This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,129 +24,220 @@ #include #include "pwmd.h" -static gpg_error_t knownhost_cb(void *data, const char *host, const char *key, - size_t len) +static gpg_error_t alloc_result(const char* s, size_t len, char** result) { - pwm_t *pwm = data; - gpg_error_t rc; - char *buf = g_strdup_printf(_("Password Manager Daemon: uget\n\nWhile attempting an SSH connection to %s there was a problem verifying it's hostkey against the known and trusted hosts file because it's hostkey was not found.\n\nWould you like to treat this connection as trusted for this and future connections by adding %s's hostkey to the known hosts file?"), host, host); - - rc = pwmd_setopt(pwm, PWMD_OPTION_PINENTRY_DESC, buf); - g_free(buf); - if (rc) - return rc; - - rc = pwmd_getpin(pwm, NULL, NULL, NULL, PWMD_PINENTRY_CONFIRM); - (void)pwmd_getpin(pwm, NULL, NULL, NULL, PWMD_PINENTRY_CLOSE); - return rc; -} - -gpg_error_t ug_set_pwmd_proxy_options(struct pwmd_proxy_s *pwmd, - UgetProxy *proxy) -{ - gpg_error_t rc; - pwm_t *pwm = NULL; - gchar *result; - gchar *path = NULL; - gint i; - gchar **args = NULL; - - pwmd->port = 80; - - if (proxy->pwmd.element) { - pwmd->path = path = g_strdup_printf("%s\t", proxy->pwmd.element); - - for (i = 0; path[i]; i++) { - if (path[i] == '^') - path[i] = '\t'; - } - } - - pwmd_init(); - rc = pwmd_new("uget", &pwm); - if (rc) - goto fail; - - rc = pwmd_setopt (pwm, PWMD_OPTION_SOCKET_TIMEOUT, 120); - if (!rc) - rc = pwmd_setopt(pwm, PWMD_OPTION_KNOWNHOST_CB, knownhost_cb); - - if (!rc && proxy->pwmd.socket_args && *proxy->pwmd.socket_args) - args = g_strsplit (proxy->pwmd.socket_args, ",", 0); - - if (!rc) - rc = pwmd_connect(pwm, proxy->pwmd.socket, - g_strv_length (args) > 0 ? args[0] : NULL, - g_strv_length (args) > 1 ? args[1] : NULL, - g_strv_length (args) > 2 ? args[2] : NULL, - g_strv_length (args) > 3 ? args[3] : NULL, - g_strv_length (args) > 4 ? args[4] : NULL, - g_strv_length (args) > 5 ? args[5] : NULL, - g_strv_length (args) > 6 ? args[6] : NULL, - g_strv_length (args) > 7 ? args[7] : NULL - ); - if (rc) - goto fail; - - rc = pwmd_setopt(pwm, PWMD_OPTION_PINENTRY_DESC, NULL); - if (!rc) - rc = pwmd_command(pwm, NULL, NULL, NULL, NULL, - "OPTION lock-timeout=100"); - if (rc) - goto fail; - - rc = pwmd_open(pwm, proxy->pwmd.file, NULL, NULL); - if (rc) - goto fail; - - rc = pwmd_command(pwm, &result, NULL, NULL, NULL, "GET %stype", - path ? path : ""); - if (rc) - goto fail; - - pwmd->type = result; - rc = pwmd_command(pwm, &result, NULL, NULL, NULL, "GET %shostname", - path ? path : ""); - if (rc) - goto fail; - - pwmd->hostname = result; - rc = pwmd_command(pwm, &result, NULL, NULL, NULL, "GET %sport", - path ? path : ""); - if (rc && gpg_err_code (rc) != GPG_ERR_ELEMENT_NOT_FOUND) - goto fail; - - pwmd->port = atoi(result); - pwmd_free(result); - rc = pwmd_command(pwm, &result, NULL, NULL, NULL, "GET %susername", - path ? path : ""); - if (rc && gpg_err_code (rc) != GPG_ERR_ELEMENT_NOT_FOUND - && gpg_err_code (rc) != GPG_ERR_NO_DATA) - goto fail; - - if (!rc) - pwmd->username = result; - rc = pwmd_command(pwm, &result, NULL, NULL, NULL, "GET %spassword", - path ? path : ""); - - if (rc && gpg_err_code (rc) != GPG_ERR_ELEMENT_NOT_FOUND - && gpg_err_code (rc) != GPG_ERR_NO_DATA) - goto fail; - if (!rc) - pwmd->password = result; - - rc = 0; + char *b; + + if (!len) { + *result = NULL; + return 0; + } + + b = pwmd_malloc(len+1); + if (!b) + return GPG_ERR_ENOMEM; + + memcpy(b, s, len); + b[len] = 0; + *result = b; + return 0; +} + +static int failure(const char* root, const char* id, gpg_error_t rc, + int required) +{ + if (!rc) + return 0; + + if (gpg_err_code (rc) == GPG_ERR_ELEMENT_NOT_FOUND + || gpg_err_code (rc) == GPG_ERR_NO_DATA) { + if (!required) + return 0; + + fprintf(stderr, "pwmd: ERR(%u): %s%s%s: %s\n", rc, + root ? root : "", root ? "^": "", id, + gpg_strerror (rc)); + } + + return 1; +} + +gpg_error_t ug_set_pwmd_proxy_options(struct pwmd_proxy_s* pwmd, + UgetProxy* proxy) +{ + char *bulk = NULL; + const gchar *bresult = NULL; + gchar *result = NULL; + size_t brlen, len; + size_t offset = 0; + char *str; + gpg_error_t rcs[4] = { 0 }; + gpg_error_t rc, brc; + pwm_t *pwm = NULL; + gchar *path = NULL; + const gchar *root = proxy->pwmd.element; + gint i; + gchar **args = NULL; + + pwmd->port = 80; + + if (proxy->pwmd.element) { + pwmd->path = path = g_strdup_printf("%s\t", proxy->pwmd.element); + + for (i = 0; path[i]; i++) { + if (path[i] == '^') + path[i] = '\t'; + } + } + + pwmd_init(); + rc = pwmd_new("uget", &pwm); + if (rc) + goto fail; + + rc = pwmd_setopt(pwm, PWMD_OPTION_SOCKET_TIMEOUT, 120); + + if (!rc && proxy->pwmd.socket_args && *proxy->pwmd.socket_args) + args = g_strsplit(proxy->pwmd.socket_args, ",", 0); + + if (!rc) + rc = pwmd_connect(pwm, proxy->pwmd.socket, + g_strv_length (args) > 0 ? args[0] : NULL, + g_strv_length (args) > 1 ? args[1] : NULL, + g_strv_length (args) > 2 ? args[2] : NULL, + g_strv_length (args) > 3 ? args[3] : NULL, + g_strv_length (args) > 4 ? args[4] : NULL, + g_strv_length (args) > 5 ? args[5] : NULL, + g_strv_length (args) > 6 ? args[6] : NULL, + g_strv_length (args) > 7 ? args[7] : NULL + ); + if (rc) + goto fail; + + rc = pwmd_setopt(pwm, PWMD_OPTION_PINENTRY_DESC, NULL); + if (!rc) + rc = pwmd_setopt(pwm, PWMD_OPTION_LOCK_TIMEOUT, 100); + if (rc) + goto fail; + + rc = pwmd_open(pwm, proxy->pwmd.file, NULL, NULL); + if (rc) + goto fail; + + rc = pwmd_bulk_append(&bulk, "NOP", 3, "NOP", NULL, 0, &offset); + if (rc) + goto fail; + + rcs[0] = 0; + rcs[1] = GPG_ERR_MISSING_ERRNO; + str = pwmd_strdup_printf("%stype", path); + rc = pwmd_bulk_append_rc(&bulk, rcs, "TYPE", 4, "GET", str, + strlen (str), &offset); + pwmd_free(str); + if (rc) + goto fail; + + rcs[0] = 0; + rcs[1] = GPG_ERR_MISSING_ERRNO; + str = pwmd_strdup_printf("%shostname", path); + rc = pwmd_bulk_append_rc(&bulk, rcs, "HOST", 4, "GET", str, + strlen (str), &offset); + pwmd_free(str); + if (rc) + goto fail; + + rcs[0] = 0; + rcs[1] = gpg_err_make (GPG_ERR_SOURCE_USER_1, GPG_ERR_ELEMENT_NOT_FOUND); + rcs[2] = GPG_ERR_MISSING_ERRNO; + str = pwmd_strdup_printf("%sport", path); + rc = pwmd_bulk_append_rc(&bulk, rcs, "PORT", 4, "GET", str, + strlen (str), &offset); + pwmd_free(str); + if (rc) + goto fail; + + rcs[0] = 0; + rcs[1] = gpg_err_make (GPG_ERR_SOURCE_USER_1, GPG_ERR_ELEMENT_NOT_FOUND); + rcs[2] = gpg_err_make (GPG_ERR_SOURCE_USER_1, GPG_ERR_NO_DATA); + rcs[3] = GPG_ERR_MISSING_ERRNO; + str = pwmd_strdup_printf("%susername", path); + rc = pwmd_bulk_append_rc(&bulk, rcs, "USER", 4, "GET", str, + strlen (str), &offset); + pwmd_free(str); + if (rc) + goto fail; + + rcs[0] = 0; + rcs[1] = gpg_err_make (GPG_ERR_SOURCE_USER_1, GPG_ERR_ELEMENT_NOT_FOUND); + rcs[2] = gpg_err_make (GPG_ERR_SOURCE_USER_1, GPG_ERR_NO_DATA); + rcs[3] = GPG_ERR_MISSING_ERRNO; + str = pwmd_strdup_printf("%spassword", path); + rc = pwmd_bulk_append_rc(&bulk, rcs, "PASS", 4, "GET", str, + strlen (str), &offset); + pwmd_free(str); + if (rc) + goto fail; + + rc = pwmd_bulk_finalize(&bulk); + if (!rc) + rc = pwmd_bulk(pwm, &result, &len, NULL, NULL, bulk, strlen (bulk)); + if (rc) + goto fail; + + offset = 0; + rc = pwmd_bulk_result(result, len, "TYPE", 4, &offset, &bresult, + &brlen, &brc); + if (failure(root, "type", rc ? rc : brc, 1)) + goto fail; + else if(brlen) + alloc_result (bresult, brlen, &pwmd->type); + + rc = pwmd_bulk_result(result, len, "HOST", 4, &offset, &bresult, + &brlen, &brc); + if (failure(root, "hostname", rc ? rc : brc, 1)) + goto fail; + else if (brlen) + alloc_result(bresult, brlen, &pwmd->hostname); + + rc = pwmd_bulk_result(result, len, "PORT", 4, &offset, &bresult, + &brlen, &brc); + if (failure(root, "port", rc ? rc : brc, 0)) + goto fail; + else if (brlen) { + char *p; + + alloc_result(bresult, brlen, &p); + pwmd->port = atoi(p); + pwmd_free(p); + } + + rc = pwmd_bulk_result(result, len, "USER", 4, &offset, &bresult, + &brlen, &brc); + if (failure(root, "username", rc ? rc : brc, 0)) + goto fail; + else if (brlen) + alloc_result(bresult, brlen, &pwmd->username); + + rc = pwmd_bulk_result(result, len, "PASS", 4, &offset, &bresult, + &brlen, &brc); + if (failure(root, "password", rc ? rc : brc, 0)) + goto fail; + else if (brlen) + alloc_result(bresult, brlen, &pwmd->password); + + brc = 0; fail: - if (args) - g_strfreev (args); + if (args) + g_strfreev(args); - if (pwm) - pwmd_close(pwm); - return rc; + pwmd_free(result); + pwmd_free(bulk); + pwmd_close(pwm); + return rc ? rc : brc; } -void ug_close_pwmd(struct pwmd_proxy_s *pwmd) +void ug_close_pwmd(struct pwmd_proxy_s* pwmd) { pwmd_free(pwmd->type); pwmd_free(pwmd->hostname); diff -Nru uget-2.0.2/uget/pwmd.h uget-2.2.2/uget/pwmd.h --- uget-2.0.2/uget/pwmd.h 2014-05-20 02:52:45.000000000 +0000 +++ uget-2.2.2/uget/pwmd.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 Ben Kibbey + Copyright (C) 2011-2016 Ben Kibbey This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,15 +22,15 @@ #include "UgetData.h" struct pwmd_proxy_s { - gchar *hostname; - gchar *username; - gchar *password; - gchar *type; - gchar *path; + gchar* hostname; + gchar* username; + gchar* password; + gchar* type; + gchar* path; gint port; }; -gpg_error_t ug_set_pwmd_proxy_options(struct pwmd_proxy_s *, UgetProxy *); -void ug_close_pwmd(struct pwmd_proxy_s *); +gpg_error_t ug_set_pwmd_proxy_options(struct pwmd_proxy_s*, UgetProxy*); +void ug_close_pwmd(struct pwmd_proxy_s*); #endif diff -Nru uget-2.0.2/uget/UgetA2cf.c uget-2.2.2/uget/UgetA2cf.c --- uget-2.0.2/uget/UgetA2cf.c 2015-09-05 01:34:00.000000000 +0000 +++ uget-2.2.2/uget/UgetA2cf.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2011-2015 by C.H. Huang + * Copyright (C) 2011-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -40,6 +40,8 @@ #include #include +#define INFO_HASH_LEN_MAX 8192 + enum { ENDIAN_UNKNOWN, ENDIAN_BE, @@ -136,7 +138,7 @@ // ---------------------------------------------------------------------------- -#define A2CF_LAST_PIECE_LEN(a2cf) ((a2cf)->total_size & ((a2cf)->piece_len-1)) +#define A2CF_LAST_PIECE_LEN(a2cf) ((a2cf)->total_size % (a2cf)->piece_len) static UgetA2cfPiece* a2cf_piece_new (uint32_t length) { @@ -356,21 +358,29 @@ FILE* file; uint32_t index; uint32_t n_pieces; + uint32_t bitfield_len; init_endian_type (); file = ug_fopen (filename, "rb"); if (file == NULL) return FALSE; + // version ug_fread (file, (char*)&a2cf->ver, 2); ug_fread (file, (char*)&a2cf->ext, 4); a2cf->ver = uint16_from_be (a2cf->ver); a2cf->ext = uint32_from_be (a2cf->ext); + // check file version - uGet only support version 1 + if (a2cf->ver != 1) + goto failed; + // info hash a2cf->info_hash_len = 0; ug_fread (file, (char*)&a2cf->info_hash_len, 4); a2cf->info_hash_len = uint32_from_be (a2cf->info_hash_len); - if (a2cf->info_hash_len == 0) + if (a2cf->info_hash_len > INFO_HASH_LEN_MAX) + goto failed; + else if (a2cf->info_hash_len == 0) a2cf->info_hash = NULL; else { a2cf->info_hash = ug_malloc (a2cf->info_hash_len); @@ -383,33 +393,34 @@ a2cf->piece_len = uint32_from_be (a2cf->piece_len); a2cf->total_len = uint64_from_be (a2cf->total_len); a2cf->upload_len = uint64_from_be (a2cf->upload_len); - // bit field - if (ug_fread (file, (char*)&a2cf->bitfield_len, 4) != 4) { - fclose (file); - return FALSE; - } + + // bitfield + if (ug_fread (file, (char*)&a2cf->bitfield_len, 4) != 4) + goto failed; a2cf->bitfield_len = uint32_from_be (a2cf->bitfield_len); - if (a2cf->bitfield_len == 0) { + // check bitfield_len + bitfield_len = (uint32_t)(a2cf->total_len / (8 * a2cf->piece_len)); + bitfield_len += (uint32_t)(a2cf->total_len % (8 * a2cf->piece_len)) ? 1 : 0; + if (a2cf->bitfield_len == 0 || a2cf->bitfield_len != bitfield_len) { a2cf->bitfield = NULL; - return FALSE; + goto failed; } else { a2cf->bitfield = ug_malloc (a2cf->bitfield_len); if (ug_fread (file, a2cf->bitfield, a2cf->bitfield_len) != a2cf->bitfield_len) - { - fclose (file); - return FALSE; - } + goto failed; } + // The number of in-flight pieces. n_pieces = 0; ug_fread (file, (char*)&n_pieces, 4); n_pieces = uint32_from_be (n_pieces); - // piece.index_end + // piece.index_end - calculate number of the last piece a2cf->piece.index_end = (uint32_t) (a2cf->total_len / a2cf->piece_len) + - ( (a2cf->total_len & (a2cf->piece_len-1)) ? 1 : 0 ); - // load pieces + ( (a2cf->total_len % a2cf->piece_len) ? 1 : 0 ); + + // load in-flight pieces for (index = 0; index < n_pieces; index++) { piece = a2cf_piece_new (a2cf->piece_len); if (a2cf_piece_read (piece, file) == FALSE) { @@ -421,6 +432,10 @@ fclose (file); return TRUE; + +failed: + fclose(file); + return FALSE; } int uget_a2cf_save (UgetA2cf* a2cf, const char* filename) @@ -472,7 +487,9 @@ for (piece = (void*)a2cf->piece.list.head; piece; piece = piece->next) a2cf_piece_write (piece, file); - ug_ftruncate (file, ug_ftell (file)); // for updating existing file. +#ifndef __ANDROID__ +// ug_ftruncate (file, ug_ftell (file)); // for updating existing file. +#endif fclose (file); return TRUE; } @@ -489,7 +506,7 @@ return FALSE; index = (uint32_t) (beg[0] / a2cf->piece_len); - piece_beg = (uint32_t) (beg[0] & (a2cf->piece_len-1)); + piece_beg = (uint32_t) (beg[0] % a2cf->piece_len); // find begin for (; index < a2cf->piece.index_end; index++) { @@ -503,7 +520,7 @@ if (piece) { if (a2cf_piece_lack (piece, &piece_beg, &piece_end)) { if (piece_end != piece->length) { - beg[0] = index * a2cf->piece_len; + beg[0] = (uint64_t)index * a2cf->piece_len; end[0] = beg[0] + piece_end; beg[0] = beg[0] + piece_beg; return TRUE; @@ -514,7 +531,8 @@ continue; } } - beg[0] = index * a2cf->piece_len + piece_beg; + beg[0] = (uint64_t)index * a2cf->piece_len + piece_beg; + // if current piece is the last piece if (index == a2cf->piece.index_end - 1) { end[0] = a2cf->total_len; return TRUE; @@ -528,7 +546,7 @@ for (index += 1; index < a2cf->piece.index_end; index++) { // test a2cf->bitfield if (test_bit (a2cf->bitfield, index) == TRUE) { - end[0] = index * a2cf->piece_len; + end[0] = (uint64_t)index * a2cf->piece_len; return TRUE; } // find end in piece @@ -538,11 +556,11 @@ piece_end = piece->length; a2cf_piece_lack (piece, &piece_beg, &piece_end); if (piece_beg != 0) { - end[0] = index * a2cf->piece_len; + end[0] = (uint64_t)index * a2cf->piece_len; return TRUE; } if (piece_end != piece->length) { - end[0] = index * a2cf->piece_len + piece_end; + end[0] = (uint64_t)index * a2cf->piece_len + piece_end; return TRUE; } } @@ -593,8 +611,8 @@ index_beg = (uint32_t) (beg / a2cf->piece_len); index_end = (uint32_t) (end / a2cf->piece_len); - piece_beg = beg & (a2cf->piece_len-1); - piece_end = end & (a2cf->piece_len-1); + piece_beg = (uint32_t) (beg % a2cf->piece_len); + piece_end = (uint32_t) (end % a2cf->piece_len); // first piece or only 1 piece if (index_beg == index_end) { @@ -644,7 +662,7 @@ for (index = 0; index < a2cf->piece.index_end; index++) { if (test_bit (a2cf->bitfield, index) == TRUE) { if (index == a2cf->piece.index_end - 1) { - last_piece_len = a2cf->total_len & (a2cf->piece_len-1); + last_piece_len = a2cf->total_len % a2cf->piece_len; if (last_piece_len) { completed += last_piece_len; break; @@ -702,7 +720,7 @@ piece = a2cf_piece_new (a2cf->piece_len); piece->index = piece_index; if (piece_index == a2cf->piece.index_end - 1) - a2cf_piece_truncate (piece, a2cf->total_len & (a2cf->piece_len-1)); + a2cf_piece_truncate (piece, a2cf->total_len % a2cf->piece_len); uget_a2cf_insert (a2cf, piece); } return piece; diff -Nru uget-2.0.2/uget/UgetA2cf.h uget-2.2.2/uget/UgetA2cf.h --- uget-2.0.2/uget/UgetA2cf.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetA2cf.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2011-2015 by C.H. Huang + * Copyright (C) 2011-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/uget/UgetApp.c uget-2.2.2/uget/UgetApp.c --- uget-2.0.2/uget/UgetApp.c 2015-09-11 12:12:53.000000000 +0000 +++ uget-2.2.2/uget/UgetApp.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -47,63 +47,105 @@ #include #endif +#if defined _WIN32 || defined _WIN64 +#include // Sleep() +#define ug_sleep Sleep +#else +#include // sleep(), usleep() +#define ug_sleep(millisecond) usleep (millisecond * 1000) +#endif // _WIN32 || _WIN64 + #ifdef HAVE_GLIB #include #else #define _(x) x #endif -static struct UgetNodeNotification notification_real = - {NULL, NULL, NULL, NULL, - (UgCompareFunc) NULL, FALSE, - NULL}; -static struct UgetNodeNotification notification_split = - {uget_node_create_split, NULL, NULL, NULL, - (UgCompareFunc) NULL, FALSE, - NULL}; -static struct UgetNodeNotification notification_sorted = - {uget_node_create_sorted, NULL, NULL, NULL, - (UgCompareFunc) NULL, FALSE, - NULL}; -static struct UgetNodeNotification notification_mix = - {uget_node_create_mix, NULL, NULL, NULL, - (UgCompareFunc) NULL, FALSE, - NULL}; -static struct UgetNodeNotification notification_mix_split = - {uget_node_create_mix_split, NULL, NULL, NULL, - (UgCompareFunc) NULL, FALSE, - NULL}; +static struct UgetNodeControl control_real = +{ +// NULL, // struct UgetNodeControl* children; + &uget_node_default_notifier, // struct UgetNodeNotifier* notifier; + {NULL, FALSE}, // struct UgetNodeSort sort; + NULL, // UgetNodeFunc filter; +}; + +static struct UgetNodeControl control_split = +{ +// NULL, // struct UgetNodeControl* children; + &uget_node_default_notifier, // struct UgetNodeNotifier* notifier; + {NULL, FALSE}, // struct UgetNodeSort sort; + uget_node_filter_split, // UgetNodeFunc filter; +}; + +static struct UgetNodeControl control_sorted = +{ +// NULL, // struct UgetNodeControl* children; + &uget_node_default_notifier, // struct UgetNodeNotifier* notifier; + {NULL, FALSE}, // struct UgetNodeSort sort; + uget_node_filter_sorted, // UgetNodeFunc filter; +}; + +static struct UgetNodeControl control_sorted_split = +{ +// NULL, // struct UgetNodeControl* children; + &uget_node_default_notifier, // struct UgetNodeNotifier* notifier; + {NULL, FALSE}, // struct UgetNodeSort sort; + uget_node_filter_split, // UgetNodeFunc filter; +}; + +static struct UgetNodeControl control_mix = +{ +// NULL, // struct UgetNodeControl* children; + &uget_node_default_notifier, // struct UgetNodeNotifier* notifier; + {NULL, FALSE}, // struct UgetNodeSort sort; + uget_node_filter_mix, // UgetNodeFunc filter; +}; + +static struct UgetNodeControl control_mix_split = +{ +// NULL, // struct UgetNodeControl* children; + &uget_node_default_notifier, // struct UgetNodeNotifier* notifier; + {NULL, FALSE}, // struct UgetNodeSort sort; + uget_node_filter_mix_split, // UgetNodeFunc filter; +}; void uget_app_init (UgetApp* app) { - UgetNode* node; + UgetCommon* common; + UgetNode* node; // real and virtual root nodes uget_node_init (&app->real, NULL); uget_node_init (&app->split, &app->real); uget_node_init (&app->sorted, &app->real); + uget_node_init (&app->sorted_split, &app->sorted); uget_node_init (&app->mix, &app->real); uget_node_init (&app->mix_split, &app->mix); - app->real.notification = ¬ification_real; - app->split.notification = ¬ification_split; - app->sorted.notification = ¬ification_sorted; - app->mix.notification = ¬ification_mix; - app->mix_split.notification = ¬ification_mix_split; - + app->real.control = &control_real; + app->split.control = &control_split; + app->sorted.control = &control_sorted; + app->sorted_split.control = &control_sorted_split; + app->mix.control = &control_mix; + app->mix_split.control = &control_mix_split; // add virtual category - "All Category" node = uget_node_new (NULL); - node->name = ug_strdup (_("All Category")); + common = ug_info_realloc(node->info, UgetCommonInfo); + common->name = ug_strdup (_("All Category")); uget_node_append (&app->mix, node); + uget_task_init (&app->task); + ug_array_init (&app->nodes, sizeof (void*), 32); + app->uri_hash = NULL; + app->config_dir = NULL; + // plug-in registry app->plugin_default = NULL; ug_registry_init (&app->plugins); - uget_task_init (&app->task); - // info registry ug_registry_init (&app->infos); ug_registry_add (&app->infos, UgetCommonInfo); + ug_registry_add (&app->infos, UgetFilesInfo); ug_registry_add (&app->infos, UgetProgressInfo); ug_registry_add (&app->infos, UgetProxyInfo); ug_registry_add (&app->infos, UgetHttpInfo); @@ -113,45 +155,78 @@ ug_registry_add (&app->infos, UgetCategoryInfo); ug_registry_sort (&app->infos); ug_info_set_registry (&app->infos); + // counter + app->n_error = 0; + app->n_moved = 0; + app->n_deleted = 0; + app->n_completed = 0; } void uget_app_final (UgetApp* app) { + ug_array_clear (&app->nodes); uget_task_final (&app->task); - uget_app_clear_plugins (app); + uget_app_clear_plugins (app); // clear app->plugins - uget_node_unref_children (&app->mix_split); - uget_node_unref_children (&app->mix); - uget_node_unref_children (&app->sorted); - uget_node_unref_children (&app->split); - uget_node_unref_children (&app->real); + uget_node_clear_children (&app->mix_split); + uget_node_clear_children (&app->mix); + uget_node_clear_children (&app->sorted_split); + uget_node_clear_children (&app->sorted); + uget_node_clear_children (&app->split); + uget_node_clear_children (&app->real); ug_registry_final (&app->plugins); ug_registry_final (&app->infos); uget_uri_hash_free (app->uri_hash); app->uri_hash = NULL; + ug_free(app->config_dir); + app->config_dir = NULL; +} + +static UgArrayPtr* uget_app_store_nodes (UgetApp* app, UgetNode* parent) +{ + UgetNode* dnode; + UgArrayPtr* array; + int index; + + array = &app->nodes; +// array->length = 0; + ug_array_alloc (array, parent->n_children); + for (index = 0, dnode = parent->children; dnode; dnode = dnode->next) + array->at[index++] = dnode->base; + + return array; +} + +static void uget_app_clear_nodes (UgetApp* app) +{ + app->nodes.length = 0; } static int uget_app_activate (UgetApp* app, UgetNode* cnode, UgetCategory* category) { - UgetNode* dnode; - UgetNode* sibling; - UgetNode* dfake; - UgetNode* dfake_next; - UgetLog* log; - - for (dfake = category->active->children; dfake; dfake = dfake_next) { - dfake_next = dfake->next; - dnode = dfake->real; + UgetRelation* relation; + UgetNode* dnode; + UgetNode* sibling; + UgetLog* log; + UgArrayPtr* array; + int index; + + // Because this function will change node linking, + // program must store active nodes to array. + array = uget_app_store_nodes (app, category->active); + for (index = 0; index < array->length; index++) { + dnode = array->at[index]; uget_node_updated (dnode); - if (dnode->state & UGET_STATE_ACTIVE) { - // remove and insert to resort node - if (app->mix.notification->compare) { + relation = ug_info_realloc(dnode->info, UgetRelationInfo); + if (relation->group & UGET_GROUP_ACTIVE) { + // remove node and insert it again to sort node + if (app->mix.control->sort.compare) { sibling = dnode->next; uget_node_remove (cnode, dnode); - uget_node_unref_fake (dnode); + uget_node_clear_fake (dnode); uget_node_insert (cnode, sibling, dnode); app->n_moved++; } @@ -160,19 +235,19 @@ uget_task_remove (&app->task, dnode); uget_node_remove (cnode, dnode); - uget_node_unref_fake (dnode); - if (dnode->state & UGET_STATE_COMPLETED) { - dnode->state |= UGET_STATE_FINISHED; + uget_node_clear_fake (dnode); + if (relation->group & UGET_GROUP_COMPLETED) { + relation->group |= UGET_GROUP_FINISHED; sibling = category->finished->children; // completed time - log = ug_info_realloc (&dnode->info, UgetLogInfo); + log = ug_info_realloc (dnode->info, UgetLogInfo); log->completed_time = time(NULL); // get current time app->n_completed++; } else { - dnode->state |= UGET_STATE_QUEUING; + relation->group |= UGET_GROUP_QUEUING; sibling = category->queuing->children; - if (dnode->state & UGET_STATE_ERROR) + if (relation->group & UGET_GROUP_ERROR) app->n_error++; } @@ -188,26 +263,33 @@ app->n_moved++; } + uget_app_clear_nodes (app); // clear stored nodes return category->active->n_children; } static void uget_app_queuing (UgetApp* app, UgetNode* cnode, UgetCategory* category) { - UgetNode* dnode; - UgetNode* dfake; - UgetNode* dfake_next; + UgetRelation* relation; + UgetNode* dnode; + UgArrayPtr* array; + int index; - for (dfake = category->queuing->children; dfake; dfake = dfake_next) { - dfake_next = dfake->next; - dnode = dfake->real; + // Because uget_app_activate_download() will change node linking, + // program must store queuing nodes to array before calling uget_app_activate_download() + array = uget_app_store_nodes (app, category->queuing); + for (index = 0; index < array->length; index++) { + dnode = array->at[index]; if (category->active->n_children >= category->active_limit) break; - if (dnode->state & UGET_STATE_INACTIVE) + relation = ug_info_realloc(dnode->info, UgetRelationInfo); + if (relation->group & UGET_GROUP_INACTIVE) continue; uget_app_activate_download (app, dnode); app->n_moved++; } + + uget_app_clear_nodes (app); // clear stored nodes } // return number of active download @@ -215,37 +297,56 @@ { UgetCategory* category; UgetNode* cnode; - UgetNode* dnode; int n_active = 0; - // dispatch plugin event, calc speed + // dispatch plug-in event, calc speed uget_task_dispatch (&app->task); // active, queuing, finished, recycled for (cnode = app->real.children; cnode; cnode = cnode->next) { - category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + category = ug_info_realloc (cnode->info, UgetCategoryInfo); if (category == NULL) continue; uget_app_activate (app, cnode, category); if (no_queuing == FALSE) uget_app_queuing (app, cnode, category); + n_active += category->active->n_children; + } + return n_active; +} + +int uget_app_trim(UgetApp* app, UgArrayPtr* deleted_nodes) +{ + UgetCategory* category; + UgetNode* cnode; + UgetNode* dnode; + int n_deleted_prev = app->n_deleted; + + for (cnode = app->real.children; cnode; cnode = cnode->next) { + category = ug_info_realloc(cnode->info, UgetCategoryInfo); + if (category == NULL) + continue; while (category->finished->n_children > category->finished_limit) { dnode = category->finished->last->real; - uget_uri_hash_remove_download (app->uri_hash, dnode); - uget_node_remove (cnode, dnode); - uget_node_unref (dnode); + uget_uri_hash_remove_download(app->uri_hash, dnode->info); + uget_node_remove(cnode, dnode); + uget_node_free(dnode); app->n_deleted++; + // add deleted nodes to array + if (deleted_nodes) + *(void**)ug_array_alloc(deleted_nodes, 1) = dnode; } while (category->recycled->n_children > category->recycled_limit) { dnode = category->recycled->last->real; - uget_uri_hash_remove_download (app->uri_hash, dnode); - uget_node_remove (cnode, dnode); - uget_node_unref (dnode); + uget_uri_hash_remove_download(app->uri_hash, dnode->info); + uget_node_remove(cnode, dnode); + uget_node_free(dnode); app->n_deleted++; + // add deleted nodes to array + if (deleted_nodes) + *(void**)ug_array_alloc(deleted_nodes, 1) = dnode; } - n_active += category->active->n_children; } - - return n_active; + return app->n_deleted - n_deleted_prev; } void uget_app_set_config_dir (UgetApp* app, const char* dir) @@ -260,11 +361,12 @@ UgetNode* real; node = app->mix.children; - if (app->mix.notification->reversed != reversed) { - app->mix.notification->reversed = reversed; - app->mix_split.notification->reversed = reversed; - app->sorted.notification->reversed = reversed; - if (app->mix.notification->compare == compare && compare) { + if (app->mix.control->sort.reverse != reversed) { + app->mix.control->sort.reverse = reversed; + app->mix_split.control->sort.reverse = reversed; + app->sorted.control->sort.reverse = reversed; + app->sorted_split.control->sort.reverse = reversed; + if (app->mix.control->sort.compare == compare && compare) { // reverse first category in app->mix ug_node_reverse ((UgNode*) node); // reverse each category in app->mix_split @@ -273,14 +375,18 @@ // reverse each category in app->sorted for (node = app->sorted.children; node; node = node->next) ug_node_reverse ((UgNode*) node); + // reverse each category in app->sorted_split + for (node = app->sorted_split.children; node; node = node->next) + ug_node_reverse ((UgNode*) node); return; } } - if (app->mix.notification->compare != compare) { - app->mix.notification->compare = compare; - app->mix_split.notification->compare = compare; - app->sorted.notification->compare = compare; + if (app->mix.control->sort.compare != compare) { + app->mix.control->sort.compare = compare; + app->mix_split.control->sort.compare = compare; + app->sorted.control->sort.compare = compare; + app->sorted_split.control->sort.compare = compare; if (compare == NULL) { // reorder first category in app->mix for (real = app->real.last; real; real = real->prev) @@ -294,6 +400,9 @@ // reorder each category in app->sorted for (node = app->sorted.children; node; node = node->next) uget_node_reorder_by_real (node, NULL); + // reorder each category in app->sorted_split + for (node = app->sorted_split.children; node; node = node->next) + uget_node_reorder_by_real (node, NULL); } else { // sort first category in app->mix @@ -304,6 +413,9 @@ // sort each category in app->sorted for (node = app->sorted.children; node; node = node->next) uget_node_sort (node, compare, reversed); + // reorder each category in app->sorted_split + for (node = app->sorted_split.children; node; node = node->next) + uget_node_reorder_by_real (node, NULL); } } } @@ -313,30 +425,10 @@ UgetNodeFunc removed, UgNotifyFunc updated) { - notification_real.inserted = inserted; - notification_real.removed = removed; - notification_real.updated = updated; - notification_real.data = data; - - notification_split.inserted = inserted; - notification_split.removed = removed; - notification_split.updated = updated; - notification_split.data = data; - - notification_sorted.inserted = inserted; - notification_sorted.removed = removed; - notification_sorted.updated = updated; - notification_sorted.data = data; - - notification_mix.inserted = inserted; - notification_mix.removed = removed; - notification_mix.updated = updated; - notification_mix.data = data; - - notification_mix_split.inserted = inserted; - notification_mix_split.removed = removed; - notification_mix_split.updated = updated; - notification_mix_split.data = data; + uget_node_default_notifier.inserted = inserted; + uget_node_default_notifier.removed = removed; + uget_node_default_notifier.updated = updated; + uget_node_default_notifier.data = data; } void uget_app_add_category (UgetApp* app, UgetNode* cnode, int save_file) @@ -346,25 +438,24 @@ char* path_base; char* path; - cnode->type = UGET_NODE_CATEGORY; uget_node_append (&app->real, cnode); uget_uri_hash_add_category (app->uri_hash, cnode); - category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + category = ug_info_realloc (cnode->info, UgetCategoryInfo); for (node = cnode->fake; node; node = node->peer) { - switch (node->state) { - case UGET_STATE_ACTIVE: + switch (uget_node_get_group(node)) { + case UGET_GROUP_ACTIVE: category->active = node; break; - case UGET_STATE_QUEUING: + case UGET_GROUP_QUEUING: category->queuing = node; break; - case UGET_STATE_FINISHED: + case UGET_GROUP_FINISHED: category->finished = node; break; - case UGET_STATE_RECYCLED: + case UGET_GROUP_RECYCLED: category->recycled = node; break; @@ -383,7 +474,7 @@ path = ug_strdup_printf ("%s%c%.4d.json", path_base, '/', uget_node_child_position (&app->real, cnode)); #endif // defined - uget_app_save_category ((UgetApp*) app, cnode, path); + uget_app_save_category ((UgetApp*) app, cnode, path, NULL); ug_free (path_base); ug_free (path); } @@ -448,7 +539,7 @@ uget_app_stop_category (app, cnode); uget_uri_hash_remove_category (app->uri_hash, cnode); uget_node_remove (&app->real, cnode); - uget_node_unref (cnode); + uget_node_free (cnode); if (app->config_dir == NULL) path_base = ug_strdup ("category"); @@ -478,17 +569,109 @@ ug_free (path_base); } +// move downloads from active to queuing void uget_app_stop_category (UgetApp* app, UgetNode* cnode) { UgetCategory* category; UgetNode* dnode; + UgArrayPtr* array; + int index; + + category = ug_info_realloc (cnode->info, UgetCategoryInfo); - category = ug_info_realloc (&cnode->info, UgetCategoryInfo); - for (dnode = category->active->children; dnode; dnode = dnode->next) - uget_app_queue_download (app, dnode->data); + // Because uget_app_queue_download() will change node linking, + // program must store active nodes to array before calling uget_app_queue_download() + array = uget_app_store_nodes (app, category->active); + + for (index = array->length-1; index >= 0; index--) { + dnode = array->at[index]; + uget_app_queue_download (app, dnode); + } + + uget_app_clear_nodes (app); // clear stored nodes } -UgetNode* uget_app_match_category (UgetApp* app, UgUri* uuri) +// pause active and queuing downloads +void uget_app_pause_category (UgetApp* app, UgetNode* cnode) +{ + UgetCategory* category; + UgetNode* dnode; + UgArrayPtr* array; + int index; + + category = ug_info_realloc (cnode->info, UgetCategoryInfo); + + // Because uget_app_queue_download() will change node linking, + // program must store active nodes to array before calling uget_app_queue_download() + + // pause all download in queuing ------------ + array = uget_app_store_nodes (app, category->queuing); + + for (index = array->length-1; index >= 0; index--) { + dnode = array->at[index]; + uget_app_pause_download (app, dnode); + } + + uget_app_clear_nodes (app); // clear stored nodes + + // pause all download in active ------------- + array = uget_app_store_nodes (app, category->active); + + for (index = array->length-1; index >= 0; index--) { + dnode = array->at[index]; + uget_app_pause_download (app, dnode); + } + + uget_app_clear_nodes (app); // clear stored nodes +} + +// set (error and paused) downloads in queuing runnable +void uget_app_resume_category (UgetApp* app, UgetNode* cnode) +{ + UgetCategory* category; + UgetNode* dnode; + UgArrayPtr* array; + int index; + + category = ug_info_realloc (cnode->info, UgetCategoryInfo); + + // Because uget_app_queue_download() will change node linking, + // program must store active nodes to array before calling uget_app_queue_download() + array = uget_app_store_nodes (app, category->queuing); + + for (index = array->length-1; index >= 0; index--) { + dnode = array->at[index]; + uget_app_queue_download (app, dnode); + } + + uget_app_clear_nodes (app); // clear stored nodes +} + +static int ug_match_file_exts (const char* file, char** exts) +{ + const char* beg = NULL; + const char* end; + int index; + + // get file ext + for (end = file + strlen (file) - 1; end >= file; end--) { + if (end[0] == '.') { + beg = end + 1; // + '.' + break; + } + } + + if (beg == NULL) + return -1; + + for (index = 0; *exts; exts++, index++) { + if (strcasecmp (beg, *exts) == 0) + return index; + } + return -1; +} + +UgetNode* uget_app_match_category (UgetApp* app, UgUri* uuri, const char* file) { UgetCategory* category; UgetNode* cnode; @@ -502,7 +685,7 @@ matched.count = 0; for (cnode = app->real.children; cnode; cnode = cnode->next) { - category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + category = ug_info_realloc (cnode->info, UgetCategoryInfo); if (category == NULL) continue; // null-terminated @@ -520,6 +703,8 @@ count++; if (ug_uri_match_file_exts (uuri, category->file_exts.at) >= 0) count++; + else if (file && ug_match_file_exts (file, category->file_exts.at) >= 0) + count++; if (matched.count < count) { matched.count = count; @@ -538,57 +723,75 @@ UgetCommon* common; dnode = uget_node_new (NULL); - common = ug_info_realloc (&dnode->info, UgetCommonInfo); + common = ug_info_realloc (dnode->info, UgetCommonInfo); common->uri = ug_strdup (uri); return uget_app_add_download (app, dnode, cnode, apply); } int uget_app_add_download (UgetApp* app, UgetNode* dnode, UgetNode* cnode, int apply) { + UgetRelation* relation; + UgetRelation* relation_c; UgetNode* sibling; UgetLog* log; - UgUri uuri; + UgUri* uuri; + char* fattch; int value; struct { UgetCommon* common; UgetCategory* category; } temp; - temp.common = ug_info_realloc (&dnode->info, UgetCommonInfo); + temp.common = ug_info_realloc (dnode->info, UgetCommonInfo); // replace invalid characters \/:*?"<>| by _ in filename. if (temp.common->file) ug_str_replace_chars (temp.common->file, "\\/:*?\"<>|", '_'); // decode name, filename, and category if (temp.common->uri) { - ug_uri_init (&uuri, temp.common->uri); - if (dnode->name == NULL) { + uuri = ug_malloc(sizeof (UgUri)); + ug_uri_init(uuri, temp.common->uri); + // set UgetCommon::name if it's name is NULL + if (temp.common->name == NULL) { if (temp.common->file) - dnode->name = ug_strdup (temp.common->file); + temp.common->name = ug_strdup(temp.common->file); else - uget_node_set_name_by_uri (dnode, &uuri); + temp.common->name = uget_name_from_uri(uuri); + } + // backup file + if (ug_uri_is_file(uuri)) { + fattch = uget_app_save_attachment(app, dnode->info, + temp.common->uri + uuri->path, NULL); + if (fattch) { + // uuri will failure + ug_free(temp.common->uri); + temp.common->uri = fattch; + } } + ug_free(uuri); + // if (cnode == NULL) - cnode = uget_app_match_category (app, &uuri); + cnode = uget_app_match_category (app, uuri, temp.common->file); } if (cnode == NULL) cnode = app->real.children; if (cnode) { - dnode->type = UGET_NODE_DOWNLOAD; - dnode->state &= UGET_STATE_CATEGORY | UGET_STATE_PAUSED; - dnode->state |= UGET_STATE_QUEUING; - log = ug_info_realloc (&dnode->info, UgetLogInfo); + relation = ug_info_realloc(dnode->info, UgetRelationInfo); + relation->group &= UGET_GROUP_MAJOR | UGET_GROUP_PAUSED; + relation->group |= UGET_GROUP_QUEUING; + log = ug_info_realloc (dnode->info, UgetLogInfo); log->added_time = time (NULL); // get current time if (apply) { value = temp.common->keeping.enable; temp.common->keeping.enable = TRUE; temp.common->keeping.uri = TRUE; - ug_info_assign (&dnode->info, &cnode->info, UgetCategoryInfo); + ug_info_assign (dnode->info, cnode->info, UgetCategoryInfo); temp.common->keeping.enable = value; - if (cnode->state & UGET_STATE_PAUSED) - dnode->state |= UGET_STATE_PAUSED; + relation_c = ug_info_realloc(cnode->info, UgetRelationInfo); + if (relation_c->group & UGET_GROUP_PAUSED) + relation->group |= UGET_GROUP_PAUSED; } - temp.category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + temp.category = ug_info_realloc (cnode->info, UgetCategoryInfo); // try to insert download before finished and recycled sibling = temp.category->finished->children; if (sibling == NULL) @@ -597,7 +800,7 @@ if (sibling) sibling = sibling->real; uget_node_insert (cnode, sibling, dnode); - uget_uri_hash_add_download (app->uri_hash, dnode); + uget_uri_hash_add_download(app->uri_hash, dnode->info); return TRUE; } return FALSE; @@ -624,13 +827,15 @@ { UgetNode* sibling; UgetCategory* category; + UgetRelation* relation; if (dnode->parent == cnode) return FALSE; - category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + category = ug_info_realloc(cnode->info, UgetCategoryInfo); + relation = ug_info_realloc(dnode->info, UgetRelationInfo); - switch (dnode->state & UGET_STATE_CATEGORY) { - case UGET_STATE_ACTIVE: + switch (relation->group & UGET_GROUP_MAJOR) { + case UGET_GROUP_ACTIVE: sibling = category->queuing->children; if (sibling == NULL) sibling = category->finished->children; @@ -638,53 +843,92 @@ sibling = category->recycled->children; break; - case UGET_STATE_QUEUING: default: + case UGET_GROUP_QUEUING: + case UGET_GROUP_FINISHED: sibling = category->finished->children; if (sibling == NULL) sibling = category->recycled->children; break; - case UGET_STATE_FINISHED: + case UGET_GROUP_RECYCLED: sibling = category->recycled->children; break; - - case UGET_STATE_RECYCLED: - sibling = NULL; - break; } if (sibling) sibling = sibling->real; uget_node_remove (dnode->parent, dnode); - uget_node_unref_fake (dnode); + uget_node_clear_fake (dnode); uget_node_insert (cnode, sibling, dnode); return TRUE; } -void uget_app_delete_download (UgetApp* app, UgetNode* dnode, int delete_file) +// used by uget_app_delete_download() +static int delete_files(UgetFiles* files, int has_temp_file) { - UgetNode* fnode; // filenode - UgetNode* cnode; + UgetFile* file1; + int n_error; - cnode = dnode->parent; - uget_task_remove (&app->task, dnode); - uget_node_remove (cnode, dnode); - uget_uri_hash_remove_download (app->uri_hash, dnode); + for (n_error = 0, file1 = (UgetFile*)files->list.head; file1; file1 = file1->next) { + if (file1->state & UGET_FILE_STATE_DELETED) + continue; - if (delete_file) { - for (fnode = dnode->children; fnode; fnode = fnode->next) { - if (fnode->name == NULL) - continue; -// if (ug_file_is_exist (fnode->name) == FALSE) -// continue; - if (ug_file_is_dir (fnode->name) == FALSE) - ug_unlink (fnode->name); - else - ug_delete_dir (fnode->name); + if (ug_file_is_exist(file1->path) == FALSE) + file1->state |= UGET_FILE_STATE_DELETED; + else if (ug_remove(file1->path) != 0) + n_error++; + else if (file1->type != UGET_FILE_TEMPORARY) + file1->state |= UGET_FILE_STATE_DELETED; + } + + return (n_error == 0) ? TRUE : FALSE; +} + +// used by uget_app_delete_download() +static UgThreadResult delete_files_thread(UgetFiles* files) +{ + int count; + +#ifdef USE__ANDROID__SAF + if (delete_files(files, TRUE) == FALSE) +#endif + for (count = 0; count < 3; count++) { + ug_sleep(2 * 1000); // sleep 2 seconds + if (delete_files(files, FALSE)) + break; + } + + ug_data_free(files); + return UG_THREAD_RESULT; +} + +int uget_app_delete_download (UgetApp* app, UgetNode* dnode, int delete_file) +{ + UgThread thread; + UgetFiles* files; + int is_active; + + is_active = uget_task_remove(&app->task, dnode); +#ifdef USE__ANDROID__SAF + is_active = TRUE; // delete files in thread if program use Android SAF +#endif + uget_uri_hash_remove_download(app->uri_hash, dnode->info); + files = ug_info_set(dnode->info, UgetFilesInfo, NULL); + uget_node_free(dnode); + + if (delete_file == TRUE && files) { + if (is_active == TRUE || delete_files(files, TRUE) == FALSE) { + // delete files and free 'files' in thread + ug_thread_create(&thread, (UgThreadFunc) delete_files_thread, files); + ug_thread_unjoin(&thread); + return FALSE; } } - uget_node_unref (dnode); + + if (files) + ug_data_free(files); + return TRUE; } int uget_app_recycle_download (UgetApp* app, UgetNode* dnode) @@ -692,24 +936,26 @@ UgetNode* cnode; UgetNode* sibling; UgetCategory* category; + UgetRelation* relation; cnode = dnode->parent; uget_task_remove (&app->task, dnode); uget_node_remove (cnode, dnode); - if (dnode->state & UGET_STATE_RECYCLED) { - uget_node_unref (dnode); + relation = ug_info_realloc(dnode->info, UgetRelationInfo); + if (relation->group & UGET_GROUP_RECYCLED) { + uget_node_free (dnode); return FALSE; } else { - dnode->state &= ~UGET_STATE_CATEGORY; - dnode->state |= UGET_STATE_RECYCLED; - uget_node_unref_fake (dnode); - category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + relation->group &= ~UGET_GROUP_MAJOR; + relation->group |= UGET_GROUP_RECYCLED; + uget_node_clear_fake (dnode); + category = ug_info_realloc (cnode->info, UgetCategoryInfo); // try to insert download before recycled sibling = category->recycled->children; if (sibling) - sibling = sibling->data; + sibling = sibling->base; uget_node_insert (cnode, sibling, dnode); return TRUE; } @@ -718,6 +964,8 @@ int uget_app_activate_download (UgetApp* app, UgetNode* dnode) { UgetLog* log; + UgetCommon* common; + UgetRelation* relation; UgetNode* cnode; UgetNode* sibling; union { @@ -725,15 +973,19 @@ UgetPluginInfo* pinfo; } temp; - if (dnode->state & UGET_STATE_ACTIVE) + relation = ug_info_realloc(dnode->info, UgetRelationInfo); + if (relation->group & UGET_GROUP_ACTIVE) return FALSE; - // match plugin - log = ug_info_realloc (&dnode->info, UgetLogInfo); - temp.pinfo = uget_app_match_plugin (app, dnode); + common = ug_info_get (dnode->info, UgetCommonInfo); + if (common == NULL || common->uri == NULL) + return FALSE; + // match plug-in + log = ug_info_realloc (dnode->info, UgetLogInfo); + temp.pinfo = uget_app_match_plugin (app, common->uri, NULL); if (temp.pinfo == NULL) { - // no plugin support + // no plug-in support uget_app_queue_download (app, dnode); - dnode->state |= UGET_STATE_ERROR; + relation->group |= UGET_GROUP_ERROR; ug_list_prepend (&log->messages, (UgLink*) uget_event_new_error ( UGET_EVENT_ERROR_UNSUPPORTED_SCHEME, NULL)); @@ -748,22 +1000,20 @@ log->messages.head = NULL; log->messages.tail = NULL; } - // start node with plugin + // start node with plug-in cnode = dnode->parent; if (uget_task_add (&app->task, dnode, temp.pinfo) == FALSE) { - // plugin start failed. + // plug-in start failed. uget_app_queue_download (app, dnode); - dnode->state |= UGET_STATE_ERROR; + relation->group |= UGET_GROUP_ERROR; uget_node_updated (dnode); return FALSE; } // change node state and move node position uget_node_remove (cnode, dnode); - uget_node_unref_fake (dnode); - dnode->state &= ~UGET_STATE_UNRUNNABLE; - dnode->state &= ~UGET_STATE_CATEGORY; - dnode->state |= UGET_STATE_ACTIVE; - temp.category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + uget_node_clear_fake (dnode); + relation->group = UGET_GROUP_ACTIVE; + temp.category = ug_info_realloc (cnode->info, UgetCategoryInfo); // try to insert download before queuing, finished, and recycled sibling = temp.category->queuing->children; if (sibling == NULL) @@ -781,23 +1031,25 @@ { #if 0 UgetCategory* category; + UgetRelation* relation; UgetNode* sibling; UgetNode* cnode; UgetNode* fake; - if (dnode->state & UGET_STATE_UNRUNNABLE) + relation = ug_info_realloc(dnode->info, UgetRelationInfo); + if (relation->group & UGET_GROUP_UNRUNNABLE) return FALSE; uget_task_remove (&app->task, dnode); - dnode->state |= UGET_STATE_PAUSED; + relation->group |= UGET_GROUP_PAUSED; cnode = dnode->parent; - category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + category = ug_info_realloc (cnode->info, UgetCategoryInfo); for (fake = dnode->fake; fake; fake = fake->peer) { if (fake->parent == category->active) { uget_node_remove (cnode, dnode); - uget_node_unref_fake (dnode); + uget_node_clear_fake (dnode); - dnode->state |= UGET_STATE_QUEUING; + relation->group |= UGET_GROUP_QUEUING; // try to insert download before queuing, finished, and recycled sibling = category->queuing->children; if (sibling == NULL) @@ -812,11 +1064,18 @@ } } #else - if (dnode->state & UGET_STATE_ACTIVE) - uget_task_remove (&app->task, dnode); - else if (dnode->state & UGET_STATE_UNRUNNABLE) + UgetRelation* relation; + + relation = ug_info_realloc(dnode->info, UgetRelationInfo); + if (relation->group & UGET_GROUP_ACTIVE) { +// uget_task_remove (&app->task, dnode); + if (relation && relation->task) + uget_plugin_stop (relation->task->plugin); + relation->group &= ~UGET_GROUP_ACTIVE; + } + else if (relation->group & UGET_GROUP_UNRUNNABLE) return FALSE; - dnode->state |= UGET_STATE_PAUSED; + relation->group |= UGET_GROUP_PAUSED; #endif return TRUE; } @@ -826,32 +1085,37 @@ UgetNode* cnode; UgetNode* sibling; UgetCategory* category; + UgetRelation* relation; - if (dnode->state & UGET_STATE_ACTIVE) - uget_task_remove (&app->task, dnode); - else if ((dnode->state & UGET_STATE_UNRUNNABLE) == 0) + relation = ug_info_realloc(dnode->info, UgetRelationInfo); + if ((relation->group & UGET_GROUP_ACTIVE) == 0 && + (relation->group & UGET_GROUP_UNRUNNABLE) == 0) return FALSE; - if (dnode->state & UGET_STATE_QUEUING) - dnode->state = UGET_STATE_QUEUING; + if (relation->group & UGET_GROUP_QUEUING) + relation->group = UGET_GROUP_QUEUING; else { cnode = dnode->parent; uget_node_remove (cnode, dnode); - uget_node_unref_fake (dnode); + uget_node_clear_fake (dnode); - category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + // --- decide sibling position & insert before it --- // if current download is in active, insert it before queuing, // otherwise insert it before finished and recycled. - if (dnode->state & UGET_STATE_ACTIVE) + category = ug_info_realloc (cnode->info, UgetCategoryInfo); + sibling = NULL; + if (relation->group & UGET_GROUP_ACTIVE) { + uget_task_remove (&app->task, dnode); sibling = category->queuing->children; - else + } + if (sibling == NULL) sibling = category->finished->children; if (sibling == NULL) sibling = category->recycled->children; // get real sibling if (sibling) sibling = sibling->real; - dnode->state = UGET_STATE_QUEUING; + relation->group = UGET_GROUP_QUEUING; uget_node_insert (cnode, sibling, dnode); } return TRUE; @@ -860,23 +1124,21 @@ void uget_app_reset_download_name (UgetApp* app, UgetNode* dnode) { UgetCommon* common; - UgUri uuri; - UgetNode* cnode = NULL; UgetNode* sibling; + UgetNode* cnode = NULL; - common = ug_info_realloc (&dnode->info, UgetCommonInfo); + common = ug_info_realloc(dnode->info, UgetCommonInfo); if (common->file) { - if (dnode->name && strcmp (common->file, dnode->name) == 0) + if (common->name && strcmp(common->file, common->name) == 0) return; - ug_free (dnode->name); - dnode->name = ug_strdup (common->file); + ug_free(common->name); + common->name = ug_strdup(common->file); cnode = dnode->parent; } else if (common->uri) { - if (dnode->name && strcmp (common->uri, dnode->name) == 0) + if (common->name && strcmp(common->uri, common->name) == 0) return; - ug_uri_init (&uuri, common->uri); - uget_node_set_name_by_uri (dnode, &uuri); + common->name = uget_name_from_uri_str(common->uri); cnode = dnode->parent; } @@ -884,9 +1146,9 @@ if (cnode) { // cnode = dnode->parent; sibling = dnode->next; - uget_node_remove (cnode, dnode); - uget_node_unref_fake (dnode); - uget_node_insert (cnode, sibling, dnode); + uget_node_remove(cnode, dnode); + uget_node_clear_fake(dnode); + uget_node_insert(cnode, sibling, dnode); } } @@ -901,10 +1163,112 @@ uget_uri_hash_add_category (app->uri_hash, cnode); } +char* uget_app_save_attachment(UgetApp* app, UgInfo* info, + const char* src_path, const char* rename) +{ + char* dest_path; + int count; + UgetFile* file1; + UgetFiles* files; + + if (rename == NULL) { + rename = strrchr(src_path, UG_DIR_SEPARATOR); +#if defined _WIN32 || defined _WIN64 + if (rename == NULL) + rename = strrchr(src_path, '/'); +#endif + if (rename == NULL) + rename = src_path; + else + rename++; + } + + dest_path = ug_strdup_printf( + "%s" UG_DIR_SEPARATOR_S "attachment" UG_DIR_SEPARATOR_S "%s", + app->config_dir, rename); + + for (count = 0; ug_file_is_exist(dest_path); count++) { + ug_free(dest_path); + dest_path = ug_strdup_printf( + "%s" UG_DIR_SEPARATOR_S "attachment" UG_DIR_SEPARATOR_S "%d) %s", + app->config_dir, count, rename); + } + + if (ug_file_copy(src_path, dest_path) == -1) { + ug_free(dest_path); + return NULL; + } + // add new path to UgetFiles + files = ug_info_realloc(info, UgetFilesInfo); + file1 = uget_files_realloc(files, dest_path); + file1->type = UGET_FILE_ATTACHMENT; + + return dest_path; +} + +/* +void uget_app_store_attachment(UgetApp* app, UgInfo* info) +{ + int num; + char* fname; + char* fattch; + UgUri* uuri; + union { + UgetHttp* http; + UgetCommon* common; + } tmp; + + tmp.common = ug_info_get(info, UgetCommonInfo); + if (tmp.common && tmp.common->uri) { + uuri = ug_malloc(sizeof(UgUri)); + ug_uri_init(uuri, tmp.common->uri); + if (ug_uri_is_file(uuri)) { + fattch = uget_app_save_attachment(app, info, + tmp.common->uri + uuri->path, NULL); + if (fattch) { + ug_free(tmp.common->uri); + tmp.common->uri = fattch; + } + } + ug_free(uuri); + } + + srand((unsigned int) time(NULL)); + num = rand(); + + tmp.http = ug_info_get(info, UgetHttpInfo); + // backup cookie file + if (tmp.http && tmp.http->cookie_file) { + fname = ug_strdup_printf("%X.cookie", num); + fattch = uget_app_save_attachment(app, info, + tmp.http->cookie_file, fname); + ug_free(fname); + if (fattch) { + ug_free(tmp.http->cookie_file); + tmp.http->cookie_file = fattch; + } + } + + // backup post file + if (tmp.http && tmp.http->post_file) { + fname = ug_strdup_printf("%X.post", num); + fattch = uget_app_save_attachment(app, info, + tmp.http->post_file, fname); + ug_free(fname); + if (fattch) { + ug_free(tmp.http->post_file); + tmp.http->post_file = fattch; + } + } +} + */ + void uget_app_clear_attachment (UgetApp* app) { UgetNode* dnode; UgetHttp* http; + UgetFiles* files; + UgetFile* file1; UgDir* dir; void* hash; const char* name; @@ -914,12 +1278,20 @@ hash = uget_uri_hash_new (); // add attachment for (dnode = app->mix.children->children; dnode; dnode = dnode->next) { - if ((http = ug_info_get (&dnode->data->info, UgetHttpInfo)) == NULL) - continue; - if (http->cookie_file) - uget_uri_hash_add (hash, http->cookie_file); - if (http->post_file) - uget_uri_hash_add (hash, http->post_file); + // UgetFiles + if ((files = ug_info_get(dnode->info, UgetFilesInfo)) != NULL ) { + for (file1 = (UgetFile*)files->list.head; file1; file1 = file1->next) { + if (file1->type == UGET_FILE_ATTACHMENT) + uget_uri_hash_add(hash, file1->path); + } + } + // UgetHttp + if ((http = ug_info_get(dnode->info, UgetHttpInfo)) != NULL) { + if (http->cookie_file) + uget_uri_hash_add(hash, http->cookie_file); + if (http->post_file) + uget_uri_hash_add(hash, http->post_file); + } } folder = ug_build_filename (app->config_dir, "attachment", NULL); @@ -961,7 +1333,8 @@ pend = app->plugins.at + app->plugins.length; for (pair = app->plugins.at; pair < pend; pair++) { if (pair->data) { - uget_plugin_set (pair->data, UGET_PLUGIN_INIT, (void*) FALSE); + uget_plugin_global_set(pair->data, UGET_PLUGIN_GLOBAL_INIT, + (void*) FALSE); pair->data = NULL; } } @@ -974,9 +1347,9 @@ pair = ug_registry_find (&app->plugins, pinfo->name, NULL); if (pair == NULL || pair->data == NULL) - uget_plugin_set (pinfo, UGET_PLUGIN_INIT, (void*) TRUE); + uget_plugin_global_set(pinfo, UGET_PLUGIN_GLOBAL_INIT, (void*) TRUE); if (pair == NULL) - ug_registry_add (&app->plugins, (const UgDataInfo*)pinfo); + ug_registry_add (&app->plugins, (const UgTypeInfo*)pinfo); } void uget_app_remove_plugin (UgetApp* app, const UgetPluginInfo* pinfo) @@ -985,7 +1358,7 @@ pair = ug_registry_find (&app->plugins, pinfo->name, NULL); if (pair && pair->data) { - uget_plugin_set (pair->data, UGET_PLUGIN_INIT, (void*) FALSE); + uget_plugin_global_set(pair->data, UGET_PLUGIN_GLOBAL_INIT, (void*) FALSE); pair->data = NULL; } } @@ -1009,9 +1382,10 @@ app->plugin_default = (UgetPluginInfo*) pinfo; } -UgetPluginInfo* uget_app_match_plugin (UgetApp* app, UgetNode* node) +UgetPluginInfo* uget_app_match_plugin (UgetApp* app, + const char* uri, + const UgetPluginInfo* exclude) { - UgetCommon* common; UgetPluginInfo* info; int count; UgUri uuri; @@ -1021,25 +1395,26 @@ int count; } matched = {NULL, 0}; - common = ug_info_get (&node->info, UgetCommonInfo); - if (common == NULL || common->uri == NULL) + if (uri == NULL) return NULL; - ug_uri_init (&uuri, common->uri); - if (app->plugin_default) { + ug_uri_init (&uuri, uri); + if (app->plugin_default && app->plugin_default != exclude) { matched.info = app->plugin_default; matched.count = uget_plugin_match (matched.info, &uuri); - if (matched.count == 3) + if (matched.count >= 3) return matched.info; } for (index = 0; index < app->plugins.length; index++) { - info = app->plugins.at[index].data; - count = uget_plugin_match (info, &uuri); - if (matched.count < count) { - matched.count = count; - matched.info = info; - if (matched.count == 3) - break; + info = app->plugins.at[index].data; + if (info != exclude) { + count = uget_plugin_match (info, &uuri); + if (matched.count < count) { + matched.count = count; + matched.info = info; + if (matched.count >= 3) + break; + } } } @@ -1057,13 +1432,55 @@ // ---------------------------------------------------------------------------- // save/load categories -int uget_app_save_category (UgetApp* app, UgetNode* cnode, const char* filename) +// convert old format to new +static void remove_file_node(UgetNode* cnode) +{ + UgetNode* dnode; + + for (dnode = cnode->children; dnode; dnode = dnode->next) { + while (dnode->children) + uget_node_free(dnode->children); + } +} + +int uget_app_save_category (UgetApp* app, UgetNode* cnode, const char* filename, void* jsonfile) +{ + int fd; + +// fd = open (filename, O_CREAT | O_WRONLY | O_TRUNC, +// S_IREAD | S_IWRITE | S_IRGRP | S_IROTH); + fd = ug_open (filename, UG_O_CREAT | UG_O_WRONLY | UG_O_TRUNC | UG_O_TEXT, + UG_S_IREAD | UG_S_IWRITE | UG_S_IRGRP | UG_S_IROTH); + if (fd == -1) + return FALSE; + + return uget_app_save_category_fd (app, cnode, fd, jsonfile); +} + +UgetNode* uget_app_load_category (UgetApp* app, const char* filename, void* jsonfile) +{ + int fd; + +// fd = open (filename, O_RDONLY, 0); + fd = ug_open (filename, UG_O_RDONLY | UG_O_TEXT, 0); + if (fd == -1) + return NULL; + + return uget_app_load_category_fd (app, fd, jsonfile); +} + +int uget_app_save_category_fd (UgetApp* app, UgetNode* cnode, int fd, void* jsonfile) { UgJsonFile* jfile; - jfile = ug_json_file_new (4096); - if (ug_json_file_begin_write (jfile, filename, UG_JSON_FORMAT_ALL) == FALSE) { - ug_json_file_free (jfile); + if (jsonfile == NULL) + jfile = ug_json_file_new (4096); + else + jfile = jsonfile; + + if (ug_json_file_begin_write_fd (jfile, fd, UG_JSON_FORMAT_ALL) == FALSE) { + if (jsonfile == NULL) + ug_json_file_free (jfile); return FALSE; } @@ -1072,19 +1489,25 @@ ug_json_write_object_tail (&jfile->json); ug_json_file_end_write (jfile); - ug_json_file_free (jfile); + if (jsonfile == NULL) + ug_json_file_free (jfile); return TRUE; } -UgetNode* uget_app_load_category (UgetApp* app, const char* filename) +UgetNode* uget_app_load_category_fd (UgetApp* app, int fd, void* jsonfile) { UgJsonFile* jfile; UgJsonError error; UgetNode* cnode; - jfile = ug_json_file_new (4096); - if (ug_json_file_begin_parse (jfile, filename) == FALSE) { - ug_json_file_free (jfile); + if (jsonfile == NULL) + jfile = ug_json_file_new (4096); + else + jfile = jsonfile; + + if (ug_json_file_begin_parse_fd (jfile, fd) == FALSE) { + if (jsonfile == NULL) + ug_json_file_free (jfile); return FALSE; } @@ -1095,18 +1518,21 @@ NULL, NULL); error = ug_json_file_end_parse (jfile); - ug_json_file_free (jfile); + if (jsonfile == NULL) + ug_json_file_free (jfile); if (error == UG_JSON_ERROR_NONE) { uget_app_add_category (app, cnode, FALSE); // create fake node uget_node_make_fake (cnode); - // move all downloads from active to queuing in this categoey + // move all downloads from active to queuing in this category uget_app_stop_category (app, cnode); + // convert old format to new + remove_file_node(cnode); return cnode; } else { - uget_node_unref (cnode); + uget_node_free (cnode); return NULL; } } @@ -1137,16 +1563,7 @@ path = ug_strdup_printf ("%s%c%.4d.temp", path_base, '/', count); #endif // _WIN32 || _WIN64 - if (ug_json_file_begin_write (jfile, path, UG_JSON_FORMAT_ALL) == FALSE) { - ug_free (path); - break; - } - - ug_json_write_object_head (&jfile->json); - ug_json_write_entry (&jfile->json, cnode, UgetNodeEntry); - ug_json_write_object_tail (&jfile->json); - - ug_json_file_end_write (jfile); + uget_app_save_category (app, cnode, path, jfile); #if defined _WIN32 || defined _WIN64 path_new = ug_strdup_printf ("%s%c%.4d.json", path_base, '\\', count); @@ -1167,11 +1584,10 @@ int uget_app_load_categories (UgetApp* app, const char* folder) { - int count, file_ok; + int count, fd; char* path; char* path_base; char* path_temp; - UgetNode* cnode; UgJsonFile* jfile; if (folder) @@ -1192,29 +1608,18 @@ path_temp = ug_strdup_printf ("%s%c%.4d.temp", path_base, '/', count); #endif // _WIN32 || _WIN64 - file_ok = ug_json_file_begin_parse (jfile, path); - if (file_ok) +// fd = open (filename, O_RDONLY, 0); + fd = ug_open (path, UG_O_RDONLY | UG_O_TEXT, 0); + if (fd != -1) ug_unlink (path_temp); else if (ug_rename (path_temp, path) != -1) - file_ok = ug_json_file_begin_parse (jfile, path); + fd = ug_open (path, UG_O_RDONLY | UG_O_TEXT, 0); ug_free (path_temp); ug_free (path); - if (file_ok == FALSE) + if (fd == -1) break; - // parse and add category node - cnode = uget_node_new (NULL); - ug_json_push (&jfile->json, ug_json_parse_entry, - cnode, (void*)UgetNodeEntry); - ug_json_push (&jfile->json, ug_json_parse_object, - NULL, NULL); - ug_json_file_end_parse (jfile); - - uget_app_add_category (app, cnode, FALSE); - // create fake node - uget_node_make_fake (cnode); - // move all downloads from active to queuing in this categoey - uget_app_stop_category (app, cnode); + uget_app_load_category_fd (app, fd, jfile); } ug_json_file_free (jfile); @@ -1234,7 +1639,7 @@ UgetFtp* ftp; } temp; - temp.common = ug_info_realloc (&node->info, UgetCommonInfo); + temp.common = ug_info_realloc (node->info, UgetCommonInfo); if (temp.common) { temp.common->keeping.enable = enable; if (enable) { @@ -1272,7 +1677,7 @@ } } - temp.proxy = ug_info_get (&node->info, UgetProxyInfo); + temp.proxy = ug_info_get (node->info, UgetProxyInfo); if (temp.proxy) { temp.proxy->keeping.enable = enable; if (enable) { @@ -1289,7 +1694,7 @@ } } - temp.http = ug_info_get (&node->info, UgetHttpInfo); + temp.http = ug_info_get (node->info, UgetHttpInfo); if (temp.http) { temp.http->keeping.enable = enable; if (enable) { @@ -1314,7 +1719,7 @@ } } - temp.ftp = ug_info_get (&node->info, UgetFtpInfo); + temp.ftp = ug_info_get (node->info, UgetFtpInfo); if (temp.ftp) { temp.ftp->keeping.enable = enable; if (enable) { diff -Nru uget-2.0.2/uget/UgetApp.h uget-2.2.2/uget/UgetApp.h --- uget-2.0.2/uget/UgetApp.h 2015-03-25 09:15:43.000000000 +0000 +++ uget-2.2.2/uget/UgetApp.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -57,12 +57,14 @@ UgetNode real; \ UgetNode split; \ UgetNode sorted; \ + UgetNode sorted_split; \ UgetNode mix; \ UgetNode mix_split; \ UgRegistry infos; \ UgRegistry plugins; \ UgetPluginInfo* plugin_default; \ UgetTask task; \ + UgArrayPtr nodes; \ void* uri_hash; \ char* config_dir; \ int n_error; \ @@ -73,28 +75,37 @@ struct UgetApp { UGET_APP_MEMBERS; -// UgetNode real; // real root node for real nodes -// UgetNode split; // virtual root -// UgetNode sorted; // virtual root -// UgetNode mix; // virtual root -// UgetNode mix_split; // virtual root -// UgRegistry infos; -// UgRegistry plugins; -// UgetPluginInfo* plugin; -// UgetTask task; -// void* uri_hash; -// char* config_dir; -// int n_error; // these n_xxxx increase by uget_app_grow() -// int n_moved; -// int n_deleted; -// int n_completed; +/* // ------ UgetApp members ------ + UgetNode real; // real root node for real nodes + UgetNode split; // virtual root + UgetNode sorted; // virtual root + UgetNode sorted_split; // virtual root + UgetNode mix; // virtual root + UgetNode mix_split; // virtual root + UgRegistry infos; + UgRegistry plugins; + UgetPluginInfo* plugin_default; + UgetTask task; + UgArrayPtr nodes; + void* uri_hash; + char* config_dir; + int n_error; // uget_app_grow() will count these value: + int n_moved; // n_error, n_moved, n_deleted, and + int n_deleted; // n_completed + int n_completed; // + */ }; void uget_app_init (UgetApp* app); void uget_app_final (UgetApp* app); -// uget_app_grow() return number of active download +// uget_app_grow() activate queue download +// return number of active download int uget_app_grow (UgetApp* app, int no_queuing); +// uget_app_trim() remove finished/recycled download that over capacity +// return number of trimmed download +int uget_app_trim (UgetApp* app, UgArrayPtr* deleted_nodes); + void uget_app_set_config_dir (UgetApp* app, const char* dir); void uget_app_set_sorting (UgetApp* app, UgCompareFunc func, int reversed); void uget_app_set_notification (UgetApp* app, void* data, @@ -108,14 +119,16 @@ int uget_app_move_category (UgetApp* app, UgetNode* cnode, UgetNode* position); void uget_app_delete_category (UgetApp* app, UgetNode* cnode); void uget_app_stop_category (UgetApp* app, UgetNode* cnode); -UgetNode* uget_app_match_category (UgetApp* app, UgUri* uuri); +void uget_app_pause_category (UgetApp* app, UgetNode* cnode); +void uget_app_resume_category (UgetApp* app, UgetNode* cnode); +UgetNode* uget_app_match_category (UgetApp* app, UgUri* uuri, const char* file); // download functions: return TRUE or FALSE int uget_app_add_download_uri (UgetApp* app, const char* uri, UgetNode* cnode, int apply); int uget_app_add_download (UgetApp* app, UgetNode* dnode, UgetNode* cnode, int apply); int uget_app_move_download (UgetApp* app, UgetNode* dnode, UgetNode* dnode_position); int uget_app_move_download_to (UgetApp* app, UgetNode* dnode, UgetNode* cnode); -void uget_app_delete_download (UgetApp* app, UgetNode* dnode, int delete_file); +int uget_app_delete_download (UgetApp* app, UgetNode* dnode, int delete_file); int uget_app_recycle_download (UgetApp* app, UgetNode* dnode); int uget_app_activate_download (UgetApp* app, UgetNode* dnode); int uget_app_pause_download (UgetApp* app, UgetNode* dnode); @@ -124,27 +137,34 @@ #ifdef NO_URI_HASH #define uget_app_use_uri_hash(app) +#define uget_app_save_attachment(app, info, file, rename) #define uget_app_clear_attachment(app) #else void uget_app_use_uri_hash (UgetApp* app); +char* uget_app_save_attachment(UgetApp* app, UgInfo* info, + const char* file, const char* rename); void uget_app_clear_attachment (UgetApp* app); #endif -// plugin functions +// plug-in functions // uget_app_find_plugin() return TRUE or FALSE void uget_app_clear_plugins (UgetApp* app); void uget_app_add_plugin (UgetApp* app, const UgetPluginInfo* pinfo); void uget_app_remove_plugin (UgetApp* app, const UgetPluginInfo* pinfo); int uget_app_find_plugin (UgetApp* app, const char* name, const UgetPluginInfo** pinfo); void uget_app_set_default_plugin (UgetApp* app, const UgetPluginInfo* pinfo); -UgetPluginInfo* uget_app_match_plugin (UgetApp* app, UgetNode* node); +UgetPluginInfo* uget_app_match_plugin (UgetApp* app, + const char* uri, + const UgetPluginInfo* exclude); // ---------------------------------------------------------------------------- // save/load categories // uget_app_save_category() return TRUE or FALSE -int uget_app_save_category (UgetApp* app, UgetNode* cnode, const char* filename); -UgetNode* uget_app_load_category (UgetApp* app, const char* filename); +int uget_app_save_category (UgetApp* app, UgetNode* cnode, const char* filename, void* jsonfile); +UgetNode* uget_app_load_category (UgetApp* app, const char* filename, void* jsonfile); +int uget_app_save_category_fd (UgetApp* app, UgetNode* cnode, int fd, void* jsonfile); +UgetNode* uget_app_load_category_fd (UgetApp* app, int fd, void* jsonfile); // return number of category save/load int uget_app_save_categories (UgetApp* app, const char* folder); int uget_app_load_categories (UgetApp* app, const char* folder); @@ -166,10 +186,95 @@ namespace Uget { +// This one is for derived use only. No data members here. +// Your derived struct/class must be C++11 standard-layout struct AppMethod { + inline void init(void) + { uget_app_init((UgetApp*)this); } + inline void final(void) + { uget_app_final((UgetApp*)this); } + + inline void grow(int noQueuing) + { uget_app_grow((UgetApp*)this, noQueuing); } + inline void trim(UgArrayPtr* deleted_nodes = NULL) + { uget_app_trim((UgetApp*)this, deleted_nodes); } + + inline void setConfigDir(const char* dir) + { uget_app_set_config_dir((UgetApp*)this, dir); } + inline void setSorting(UgCompareFunc func, int reversed) + { uget_app_set_sorting((UgetApp*)this, func, reversed); } + inline void setNotification(void* data, UgetNodeFunc inserted, UgetNodeFunc removed, UgNotifyFunc updated) + { uget_app_set_notification((UgetApp*)this, data, inserted, removed, updated); } + + inline void addCategory(UgetNode* cnode, int saveFile) + { uget_app_add_category((UgetApp*)this, cnode, saveFile); } + inline void moveCategory(UgetNode* cnode, UgetNode* position) + { uget_app_move_category((UgetApp*)this, cnode, position); } + inline void deleteCategory(UgetNode* cnode) + { uget_app_delete_category((UgetApp*)this, cnode); } + inline void stopCategory(UgetNode* cnode) + { uget_app_stop_category((UgetApp*)this, cnode); } + inline void pauseCategory(UgetNode* cnode) + { uget_app_pause_category((UgetApp*)this, cnode); } + inline void resumeCategory(UgetNode* cnode) + { uget_app_resume_category((UgetApp*)this, cnode); } + inline UgetNode* matchCategory(UgUri* uuri, const char* file) + { return uget_app_match_category((UgetApp*)this, uuri, file); } + + inline int addDownload(const char* uri, UgetNode* cnode, int apply) + { return uget_app_add_download_uri((UgetApp*)this, uri, cnode, apply); } + inline int addDownload(UgetNode* dnode, UgetNode* cnode, int apply) + { return uget_app_add_download((UgetApp*)this, dnode, cnode, apply); } + inline int moveDownload(UgetNode* dnode, UgetNode* dnode_position) + { return uget_app_move_download((UgetApp*)this, dnode, dnode_position); } + inline int moveDownloadTo(UgetNode* dnode, UgetNode* cnode) + { return uget_app_move_download_to((UgetApp*)this, dnode, cnode); } + inline int deleteDownload(UgetNode* dnode, int deleteFile) + { return uget_app_delete_download((UgetApp*)this, dnode, deleteFile); } + inline int recycleDownload(UgetNode* dnode) + { return uget_app_recycle_download((UgetApp*)this, dnode); } + inline int activateDownload(UgetNode* dnode) + { return uget_app_activate_download((UgetApp*)this, dnode); } + inline int pauseDownload(UgetNode* dnode) + { return uget_app_pause_download((UgetApp*)this, dnode); } + inline int queueDownload(UgetNode* dnode) + { return uget_app_queue_download((UgetApp*)this, dnode); } + inline void resetDownloadName(UgetNode* dnode) + { uget_app_reset_download_name((UgetApp*)this, dnode); } + + inline void useUriHash(void) + { uget_app_use_uri_hash((UgetApp*)this); } + inline void clearAttachment(void) + { uget_app_clear_attachment((UgetApp*)this); } + + inline void clearPlugins(void) + { uget_app_clear_plugins((UgetApp*)this); } + inline void addPlugin(const UgetPluginInfo* pinfo) + { uget_app_add_plugin((UgetApp*)this, pinfo); } + inline void removePlugin(const UgetPluginInfo* pinfo) + { uget_app_remove_plugin((UgetApp*)this, pinfo); } + inline int findPlugin(const char* name, const UgetPluginInfo** pinfo) + { return uget_app_find_plugin((UgetApp*)this, name, pinfo); } + inline void setDefaultPlugin(const UgetPluginInfo* pinfo) + { return uget_app_set_default_plugin((UgetApp*)this, pinfo); } + inline UgetPluginInfo* matchPlugin(const char* uri, const UgetPluginInfo* exclude) + { return uget_app_match_plugin((UgetApp*)this, uri, exclude); } + + inline int saveCategory(UgetNode* cnode, const char* filename, void* jsonfile) + { return uget_app_save_category((UgetApp*)this, cnode, filename, jsonfile); } + inline UgetNode* loadCategory(const char* filename, void* jsonfile) + { return uget_app_load_category((UgetApp*)this, filename, jsonfile); } + // return number of category save/load + inline int saveCategories(const char* folder) + { return uget_app_save_categories((UgetApp*)this, folder); } + inline int loadCategories(const char* folder) + { return uget_app_load_categories((UgetApp*)this, folder); } }; +// This one is for directly use only. You can NOT derived it. +struct App : AppMethod, UgetApp {}; + }; // namespace Uget #endif // __cplusplus diff -Nru uget-2.0.2/uget/UgetAria2.c uget-2.2.2/uget/UgetAria2.c --- uget-2.0.2/uget/UgetAria2.c 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uget/UgetAria2.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2011-2015 by C.H. Huang + * Copyright (C) 2011-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -43,6 +43,7 @@ #if defined _WIN32 || defined _WIN64 #include +#include // ShellExecuteW() #else #include // fork(), execlp() #include @@ -80,7 +81,7 @@ int finalized; }; -static UG_THREAD_RETURN_TYPE uget_aria2_thread (UgetAria2Thread* uathread); +static UgThreadResult uget_aria2_thread (UgetAria2Thread* uathread); static UgetAria2Thread* uget_aria2_thread_new (UgetAria2* uaria2) { @@ -94,7 +95,7 @@ ug_jsonrpc_array_init (&uat->response, 16); ug_jsonrpc_curl_init (&uat->json); ug_jsonrpc_curl_set_url (&uat->json, uaria2->uri); - uat->finalized = 0; + uat->finalized = FALSE; uget_aria2_ref (uaria2); ug_thread_create (&thread, (UgThreadFunc) uget_aria2_thread, uat); @@ -284,7 +285,7 @@ uget_aria2_recycle (uaria2, jres); } -static UG_THREAD_RETURN_TYPE uget_aria2_thread (UgetAria2Thread* uathread) +static UgThreadResult uget_aria2_thread (UgetAria2Thread* uathread) { UgetAria2* uaria2; UgJsonrpcObject* jreq = NULL; @@ -297,7 +298,7 @@ for (counts = 0; ; counts++) { // finalize - if (uathread->finalized) { + if (uathread->finalized == TRUE) { // shutdown request if (uaria2->shutdown && jreq_shutdown == NULL) { jreq_shutdown = uget_aria2_alloc (uaria2, TRUE, TRUE); @@ -358,13 +359,13 @@ uget_aria2_thread_free (uathread); uget_aria2_unref (uaria2); - return UG_THREAD_RETURN_VALUE; + return UG_THREAD_RESULT; } // ---------------------------------------------------------------------------- // UgetAria2 -UgetAria2* uget_aria2_new () +UgetAria2* uget_aria2_new (void) { UgetAria2* uaria2; UgValue* value; @@ -545,7 +546,7 @@ char cmd[1]; } Aria2LaunchData; -static UG_THREAD_RETURN_TYPE aria2_launch_thread (Aria2LaunchData* uald) +static UgThreadResult aria2_launch_thread (Aria2LaunchData* uald) { int result; @@ -555,7 +556,7 @@ else uald->uaria2->launched = TRUE; ug_free (uald); - return UG_THREAD_RETURN_VALUE; + return UG_THREAD_RESULT; } int uget_aria2_launch (UgetAria2* uaria2) @@ -635,7 +636,7 @@ temp = -1; } else if (pid == 0) { - // child process + // child process, [0] input, [1] output close (execpipe[0]); // on success, never returns execvp (uaria2->path, argv); @@ -645,7 +646,7 @@ exit(0); } else { - // parent process + // parent process, [0] input, [1] output close (execpipe[1]); // if exec failed, read the child's errno value if (read (execpipe[0], &temp, sizeof(temp)) == sizeof(temp)) @@ -768,6 +769,7 @@ if (jobject->params.type == UG_VALUE_ARRAY) { rpc_token = jobject->params.c.array->at; if (rpc_token->type == UG_VALUE_STRING && + rpc_token->c.string != NULL && strncmp (rpc_token->c.string, "token:", 6) == 0) { ug_free (rpc_token->c.string); diff -Nru uget-2.0.2/uget/UgetAria2.h uget-2.2.2/uget/UgetAria2.h --- uget-2.0.2/uget/UgetAria2.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetAria2.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2011-2015 by C.H. Huang + * Copyright (C) 2011-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -109,7 +109,7 @@ int limit_count; }; -UgetAria2* uget_aria2_new (); +UgetAria2* uget_aria2_new (void); void uget_aria2_ref (UgetAria2* ua2); void uget_aria2_unref (UgetAria2* ua2); diff -Nru uget-2.0.2/uget/UgetCurl.c uget-2.2.2/uget/UgetCurl.c --- uget-2.0.2/uget/UgetCurl.c 2015-08-18 01:17:31.000000000 +0000 +++ uget-2.2.2/uget/UgetCurl.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -44,6 +44,8 @@ #endif // HAVE_LIBPWMD #define PROGRESS_COUNT_LIMIT 2 +#define LOW_SPEED_LIMIT 128 +#define LOW_SPEED_TIME 60 enum SchemeType { @@ -65,7 +67,7 @@ static size_t uget_curl_output_none (char *buffer, size_t size, size_t nmemb, void* data); static size_t uget_curl_output_default (char *buffer, size_t size, - size_t nmemb, void* data); + size_t nmemb, void* data); static int uget_curl_progress (UgetCurl* ugcurl, double dltotal, double dlnow, double ultotal, double ulnow); @@ -102,7 +104,7 @@ ug_free (ugcurl); } -static UG_THREAD_RETURN_TYPE uget_curl_thread (UgetCurl* ugcurl) +static UgThreadResult uget_curl_thread (UgetCurl* ugcurl) { char* tempstr; CURLcode code; @@ -122,7 +124,7 @@ ugcurl->event = NULL; } - // response error + // HTTP response error code: 4xx Client Error, 5xx Server Error if (ugcurl->response >= 400 && ugcurl->scheme_type == SCHEME_HTTP) { ugcurl->state = UGET_CURL_ERROR; tempstr = ug_strdup_printf ("Server response code : %ld", @@ -130,6 +132,9 @@ ugcurl->event = uget_event_new_error ( UGET_EVENT_ERROR_CUSTOM, tempstr); ug_free (tempstr); + // discard data if remote site response error. + ugcurl->pos = ugcurl->beg; + ugcurl->size[0] = 0; goto exit; } @@ -144,10 +149,6 @@ ugcurl->state = UGET_CURL_ERROR; ugcurl->event = uget_event_new_error (ugcurl->event_code, NULL); ugcurl->test_ok = FALSE; - goto exit; - } - if (ugcurl->end > 0 && ugcurl->pos >= ugcurl->end) { - ugcurl->state = UGET_CURL_OK; break; } // Don't break here @@ -155,13 +156,17 @@ case CURLE_OUT_OF_MEMORY: ugcurl->state = UGET_CURL_ERROR; ugcurl->event = uget_event_new_error ( - UGET_EVENT_ERROR_OUT_OF_RESOURCE, ugcurl->error_string); - goto exit; + UGET_EVENT_ERROR_OUT_OF_RESOURCE, NULL); + break; - // abort by user (exit) + // abort download in progress callback case CURLE_ABORTED_BY_CALLBACK: - ugcurl->state = UGET_CURL_ABORT; - goto exit; + // segment is completed or paused by user + if (ugcurl->paused == FALSE) + ugcurl->state = UGET_CURL_OK; + else + ugcurl->state = UGET_CURL_ABORT; + break; // can resume (retry) case CURLE_RECV_ERROR: @@ -203,14 +208,14 @@ ugcurl->state = UGET_CURL_ERROR; ugcurl->event = uget_event_new_error ( UGET_EVENT_ERROR_CUSTOM, ugcurl->error_string); - goto exit; + break; // exit case CURLE_UNSUPPORTED_PROTOCOL: ugcurl->state = UGET_CURL_ERROR; ugcurl->event = uget_event_new_error ( UGET_EVENT_ERROR_UNSUPPORTED_SCHEME, ugcurl->error_string); - goto exit; + break; // other error (exit) #ifdef NO_RETRY_IF_CONNECT_FAILED @@ -225,18 +230,14 @@ ugcurl->state = UGET_CURL_ERROR; ugcurl->event = uget_event_new_error ( UGET_EVENT_ERROR_CUSTOM, ugcurl->error_string); - goto exit; + break; } exit: - // if user stop downloading, set state to UGET_CURL_ABORT - if (ugcurl->stopped == TRUE) - ugcurl->state = UGET_CURL_ABORT; - if (ugcurl->state == UGET_CURL_ERROR) ugcurl->test_ok = FALSE; ugcurl->stopped = TRUE; - return UG_THREAD_RETURN_VALUE; + return UG_THREAD_RESULT; } void uget_curl_run (UgetCurl* ugcurl, int joinable) @@ -248,19 +249,41 @@ ugcurl->pos = ugcurl->beg; ugcurl->state = UGET_CURL_READY; + ugcurl->paused = FALSE; ugcurl->stopped = FALSE; // if thread stop, this value will be TRUE. ugcurl->response = 0; ugcurl->event_code = 0; ugcurl->progress_count = PROGRESS_COUNT_LIMIT; - // reset speed + // reset download/upload speed ugcurl->speed[0] = 0; ugcurl->speed[1] = 0; + // reset downloaded/uploaded size + ugcurl->size[0] = 0; + ugcurl->size[1] = 0; ug_free (ugcurl->header.uri); ug_free (ugcurl->header.filename); ugcurl->header.uri = NULL; ugcurl->header.filename = NULL; + // Others ----------------------------------------------------------------- + curl_easy_setopt (curl, CURLOPT_NOSIGNAL, 1L); + curl_easy_setopt (curl, CURLOPT_FILETIME, 1L); + // disable peer SSL certificate verification + curl_easy_setopt (curl, CURLOPT_SSL_VERIFYHOST, 0L); + curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, 0L); + // SSL version and cipher +// curl_easy_setopt (curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_DEFAULT); +// curl_easy_setopt (curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_SSLv3); +// curl_easy_setopt (curl, CURLOPT_SSL_CIPHER_LIST, "ALL:!aNULL:!LOW:!EXPORT:!SSLv2"); +// curl_easy_setopt (curl, CURLOPT_SSL_CIPHER_LIST, "ALL"); +// curl_easy_setopt (curl, CURLOPT_SSL_CIPHER_LIST, "SSLv3"); + + // low speed limit for unstable network + curl_easy_setopt (curl, CURLOPT_LOW_SPEED_LIMIT, LOW_SPEED_LIMIT); + curl_easy_setopt (curl, CURLOPT_LOW_SPEED_TIME, LOW_SPEED_TIME); + + // resume curl_easy_setopt (ugcurl->curl, CURLOPT_RESUME_FROM_LARGE, (curl_off_t) ugcurl->beg); // Progress -------------------------------------------------------------- @@ -309,6 +332,15 @@ } } + // Speed limit ------------------------------------------------------------ + if (ugcurl->limit_changed) { + curl_easy_setopt (ugcurl->curl, CURLOPT_MAX_RECV_SPEED_LARGE, + (curl_off_t) ugcurl->limit[0]); + curl_easy_setopt (ugcurl->curl, CURLOPT_MAX_SEND_SPEED_LARGE, + (curl_off_t) ugcurl->limit[1]); + ugcurl->limit_changed = FALSE; + } + // Output ----------------------------------------------------------------- curl_easy_setopt (curl, CURLOPT_NOBODY, 0L); curl_easy_setopt (curl, CURLOPT_WRITEFUNCTION, @@ -365,26 +397,10 @@ curl = ugcurl->curl; ugcurl->common = common; - // Others ----------------------------------------------------------------- - curl_easy_setopt (curl, CURLOPT_NOSIGNAL, 1L); - // use with CURLINFO_FILETIME - curl_easy_setopt (curl, CURLOPT_FILETIME, 1L); - // disable peer SSL certificate verification - curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, FALSE); - // SSL Version and cipher -// curl_easy_setopt (curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_DEFAULT); -// curl_easy_setopt (curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_SSLv3); -// curl_easy_setopt (curl, CURLOPT_SSL_CIPHER_LIST, "ALL:!aNULL:!LOW:!EXPORT:!SSLv2"); -// curl_easy_setopt (curl, CURLOPT_SSL_CIPHER_LIST, "ALL"); -// curl_easy_setopt (curl, CURLOPT_SSL_CIPHER_LIST, "SSLv3"); - - // low speed limit for unstable network - curl_easy_setopt (curl, CURLOPT_LOW_SPEED_LIMIT, 128); - curl_easy_setopt (curl, CURLOPT_LOW_SPEED_TIME, 60); - curl_easy_setopt (curl, CURLOPT_CONNECTTIMEOUT, common->connect_timeout); if (common == NULL) return; + curl_easy_setopt (curl, CURLOPT_CONNECTTIMEOUT, common->connect_timeout); curl_easy_setopt (curl, CURLOPT_URL, common->uri); uget_curl_decide_scheme (ugcurl, common->uri); // debug @@ -408,59 +424,14 @@ void uget_curl_set_proxy (UgetCurl* ugcurl, UgetProxy* proxy) { - CURL* curl; - - curl = ugcurl->curl; - if (proxy == NULL) - return; - - // proxy type - switch (proxy->type) { - case UGET_PROXY_NONE: - curl_easy_setopt (curl, CURLOPT_PROXYTYPE, 0); - break; - - default: - case UGET_PROXY_DEFAULT: - case UGET_PROXY_HTTP: - curl_easy_setopt (curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); - break; - - case UGET_PROXY_SOCKS4: - curl_easy_setopt (curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4); - break; - - case UGET_PROXY_SOCKS5: - curl_easy_setopt (curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); - break; - #ifdef HAVE_LIBPWMD - case UGET_PROXY_PWMD: + if (proxy->type == UGET_PROXY_PWMD) { uget_curl_set_proxy_pwmd (ugcurl, proxy); return; -#endif } +#endif - curl_easy_setopt (curl, CURLOPT_PROXY, proxy->host); - if (proxy->port) - curl_easy_setopt (curl, CURLOPT_PROXYPORT, proxy->port); - else - curl_easy_setopt (curl, CURLOPT_PROXYPORT, 80); - // proxy user and password - if ((proxy->user && proxy->user[0]) || - (proxy->password && proxy->password[0]) || - proxy->type == UGET_PROXY_SOCKS4 || - proxy->type == UGET_PROXY_SOCKS5) - { - curl_easy_setopt (curl, CURLOPT_PROXYUSERNAME, - (proxy->user) ? proxy->user : ""); - curl_easy_setopt (curl, CURLOPT_PROXYPASSWORD, - (proxy->password) ? proxy->password : ""); - } - else { - curl_easy_setopt (curl, CURLOPT_PROXYUSERNAME, NULL); - curl_easy_setopt (curl, CURLOPT_PROXYPASSWORD, NULL); - } + ug_curl_set_proxy (ugcurl->curl, proxy); } int uget_curl_set_http (UgetCurl* ugcurl, UgetHttp* http) @@ -585,6 +556,7 @@ curl = ugcurl->curl; +// curl_easy_setopt (curl, CURLOPT_LOGIN_OPTIONS, "AUTH=NTLM"); // ------------------------------------------------------------------------ // common temp.common = ugcurl->common; @@ -597,13 +569,16 @@ (temp.common->user) ? temp.common->user : ""); curl_easy_setopt (curl, CURLOPT_PASSWORD, (temp.common->password) ? temp.common->password : ""); - curl_easy_setopt (curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + // Don't set CURLOPT_HTTPAUTH to a bitmask + // Don't use CURLAUTH_ANY, it causes authentication failed. +// curl_easy_setopt (curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); +// curl_easy_setopt (curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); +// curl_easy_setopt (curl, CURLOPT_HTTPAUTH, CURLAUTH_NTLM); } else { // clear user & password (for HTTP redirection) curl_easy_setopt (curl, CURLOPT_USERNAME, NULL); curl_easy_setopt (curl, CURLOPT_PASSWORD, NULL); - curl_easy_setopt (curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); } } @@ -619,7 +594,11 @@ (temp.http->user) ? temp.http->user : ""); curl_easy_setopt (curl, CURLOPT_PASSWORD, (temp.http->password) ? temp.http->password : ""); - curl_easy_setopt (curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + // Don't set CURLOPT_HTTPAUTH to a bitmask + // Don't use CURLAUTH_ANY, it causes authentication failed. +// curl_easy_setopt (curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); +// curl_easy_setopt (curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); +// curl_easy_setopt (curl, CURLOPT_HTTPAUTH, CURLAUTH_NTLM); return; } } @@ -641,6 +620,54 @@ } } +void ug_curl_set_proxy (CURL* curl, UgetProxy* proxy) +{ + if (proxy == NULL) + return; + + // proxy type + switch (proxy->type) { + case UGET_PROXY_NONE: + curl_easy_setopt (curl, CURLOPT_PROXYTYPE, 0); + break; + + default: + case UGET_PROXY_DEFAULT: + case UGET_PROXY_HTTP: + curl_easy_setopt (curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); + break; + + case UGET_PROXY_SOCKS4: + curl_easy_setopt (curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4); + break; + + case UGET_PROXY_SOCKS5: + curl_easy_setopt (curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); + break; + } + + curl_easy_setopt (curl, CURLOPT_PROXY, proxy->host); + if (proxy->port) + curl_easy_setopt (curl, CURLOPT_PROXYPORT, proxy->port); + else + curl_easy_setopt (curl, CURLOPT_PROXYPORT, 80); + // proxy user and password + if ((proxy->user && proxy->user[0]) || + (proxy->password && proxy->password[0]) || + proxy->type == UGET_PROXY_SOCKS4 || + proxy->type == UGET_PROXY_SOCKS5) + { + curl_easy_setopt (curl, CURLOPT_PROXYUSERNAME, + (proxy->user) ? proxy->user : ""); + curl_easy_setopt (curl, CURLOPT_PROXYPASSWORD, + (proxy->password) ? proxy->password : ""); + } + else { + curl_easy_setopt (curl, CURLOPT_PROXYUSERNAME, NULL); + curl_easy_setopt (curl, CURLOPT_PROXYPASSWORD, NULL); + } +} + // ---------------------------------------------------------------------------- // static functions @@ -765,7 +792,7 @@ ug_free (buffer); } - return nmemb; + return nmemb * size; } static size_t uget_curl_header_ftp0 (char *buffer, size_t size, @@ -779,13 +806,13 @@ curl_easy_setopt (ugcurl->curl, CURLOPT_HEADERDATA, NULL); } - return nmemb; + return nmemb * size; } static size_t uget_curl_output_none (char *buffer, size_t size, size_t nmemb, void* data) { - return nmemb; + return nmemb * size; } static size_t uget_curl_output_default (char *buffer, size_t size, @@ -857,11 +884,12 @@ // to abort the transfer and return CURLE_ABORTED_BY_CALLBACK. if (ugcurl->end > 0 && ugcurl->pos >= ugcurl->end) { ugcurl->pos = ugcurl->end; - ugcurl->stopped = TRUE; + ugcurl->size[0] = ugcurl->pos - ugcurl->beg; + return 1; } - ugcurl->size[0] = ugcurl->pos - ugcurl->beg; - if (ugcurl->stopped) + ugcurl->size[0] = ugcurl->pos - ugcurl->beg; + if (ugcurl->paused) return 1; return 0; } @@ -870,7 +898,7 @@ // PWMD // #ifdef HAVE_LIBPWMD -static int uget_curl_set_proxy_pwmd (UgetCurl* ugcurl, UgetProxy* proxy) +static int uget_curl_set_proxy_pwmd (UgetCurl* ugcurl, UgetProxy* proxy) { CURL* curl; struct pwmd_proxy_s pwmd; @@ -909,11 +937,9 @@ fail: ug_close_pwmd(&pwmd); - gchar *e = ug_strdup_printf("Pwmd ERR %i: %s", rc, gpg_strerror(rc)); - if (ugcurl->event) - uget_event_free (ugcurl->event); + ugcurl->state = UGET_CURL_ERROR; + gchar *e = ug_strdup_printf("Pwmd ERR %u: %s", rc, gpg_strerror(rc)); ugcurl->event = uget_event_new_error (UGET_EVENT_ERROR_CUSTOM, e); - fprintf(stderr, "%s\n", e); g_free(e); return FALSE; } diff -Nru uget-2.0.2/uget/UgetCurl.h uget-2.2.2/uget/UgetCurl.h --- uget-2.0.2/uget/UgetCurl.h 2015-08-18 01:17:31.000000000 +0000 +++ uget-2.2.2/uget/UgetCurl.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -61,25 +61,33 @@ typedef int (*UgetCurlFunc) (UgetCurl* ugcurl, void* data); // UgetCurlState flow: -// UGET_CURL_READY -+-> UGET_CURL_RUN -> UGET_CURL_OK -> UGET_CURL_READY -// +-> UGET_CURL_ERROR -> UGET_CURL_RECYCLED -// +-> UGET_CURL_RETRY -> UGET_CURL_READY -// +-> UGET_CURL_ABORT -> UGET_CURL_READY -// +-> UGET_CURL_NOT_RESUMABLE -> UGET_CURL_READY +// +// UGET_CURL_READY +// | +// `--> UGET_CURL_RUN -+-> UGET_CURL_OK ---> UGET_CURL_RESPLIT +// | +// +-> UGET_CURL_ABORT +// | +// +-> UGET_CURL_ERROR +// | +// +-> UGET_CURL_RETRY +// | +// `-> UGET_CURL_NOT_RESUMABLE + enum UgetCurlState { - UGET_CURL_RECYCLED, + UGET_CURL_RESPLIT, // used by curl plug-in UGET_CURL_READY, UGET_CURL_RUN, - UGET_CURL_OK, // alloc block to download, if alloc fail, clear it - UGET_CURL_ERROR, // clear and free, set limit? - UGET_CURL_RETRY, // retry - UGET_CURL_ABORT, - UGET_CURL_NOT_RESUMABLE, // redownload - retry + UGET_CURL_OK, + UGET_CURL_ABORT, // paused by user + UGET_CURL_ERROR, + UGET_CURL_RETRY, + UGET_CURL_NOT_RESUMABLE, // redownload + retry }; // ---------------------------------------------------------------------------- -// UgetCurl +// UgetCurl: used by UgetPluginCurl struct UgetCurl { @@ -146,11 +154,12 @@ uint8_t limit_changed:1; // speed limit changed uint8_t header_store:1; // save uri and filename from header. uint8_t resumable:1; // get resumable in header callback - uint8_t stopped:1; // running control & status - uint8_t tested:1; // URI tested - uint8_t test_ok:1; // URI test ok - uint8_t split:1; // split previous - uint8_t html:1; // "Content-Type: text/html" + uint8_t stopped:1; // downloading thread is stopped + uint8_t paused:1; // paused by user + uint8_t tested:1; // URI tested + uint8_t test_ok:1; // URI test ok + uint8_t split:1; // split previous segment + uint8_t html:1; // "Content-Type: text/html" char error_string[CURL_ERROR_SIZE]; }; @@ -173,6 +182,10 @@ void uget_curl_decide_scheme (UgetCurl* ugcurl, const char* uri); void uget_curl_decide_login (UgetCurl* ugcurl); +#define uget_curl_join_thread(ugcurl) ug_thread_join (&(ugcurl)->thread) + +void ug_curl_set_proxy (CURL* curl, UgetProxy* proxy); + #ifdef __cplusplus } #endif diff -Nru uget-2.0.2/uget/UgetData.c uget-2.2.2/uget/UgetData.c --- uget-2.0.2/uget/UgetData.c 2015-08-18 01:17:31.000000000 +0000 +++ uget-2.2.2/uget/UgetData.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -37,48 +37,49 @@ #include #include #include +#include #include #include // ---------------------------------------------------------------------------- // UgetCommon -static void uget_common_init (UgetCommon* common); -static void uget_common_final (UgetCommon* common); -static void uget_common_assign (UgetCommon* common, UgetCommon* src); +static void uget_common_init(UgetCommon* common); +static void uget_common_final(UgetCommon* common); +static int uget_common_assign(UgetCommon* common, UgetCommon* src); static const UgEntry UgetCommonEntry[] = { -// {"name", offsetof (UgetCommon, name), UG_ENTRY_STRING, -// UG_ENTRY_SKIP_IF_NULL, NULL}, - {"uri", offsetof (UgetCommon, uri), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"mirrors", offsetof (UgetCommon, mirrors), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"file", offsetof (UgetCommon, file), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"folder", offsetof (UgetCommon, folder), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"user", offsetof (UgetCommon, user), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"password", offsetof (UgetCommon, password), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"connect-timeout", offsetof (UgetCommon, connect_timeout), + {"name", offsetof(UgetCommon, name), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"uri", offsetof(UgetCommon, uri), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"mirrors", offsetof(UgetCommon, mirrors), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"file", offsetof(UgetCommon, file), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"folder", offsetof(UgetCommon, folder), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"user", offsetof(UgetCommon, user), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"password", offsetof(UgetCommon, password), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"connect-timeout", offsetof(UgetCommon, connect_timeout), UG_ENTRY_UINT, NULL, NULL}, - {"transmit-timeout", offsetof (UgetCommon, transmit_timeout), + {"transmit-timeout", offsetof(UgetCommon, transmit_timeout), UG_ENTRY_UINT, NULL, NULL}, - {"retry-delay", offsetof (UgetCommon, retry_delay), + {"retry-delay", offsetof(UgetCommon, retry_delay), UG_ENTRY_INT, NULL, NULL}, - {"retry-limit", offsetof (UgetCommon, retry_limit), + {"retry-limit", offsetof(UgetCommon, retry_limit), UG_ENTRY_INT, NULL, NULL}, - {"retry-count", offsetof (UgetCommon, retry_count), + {"retry-count", offsetof(UgetCommon, retry_count), UG_ENTRY_INT, NULL, NULL}, - {"max-connections", offsetof (UgetCommon, max_connections), + {"max-connections", offsetof(UgetCommon, max_connections), UG_ENTRY_UINT, NULL, NULL}, - {"max-upload-speed", offsetof (UgetCommon, max_upload_speed), + {"max-upload-speed", offsetof(UgetCommon, max_upload_speed), UG_ENTRY_INT, NULL, NULL}, - {"max-download-speed", offsetof (UgetCommon, max_download_speed), + {"max-download-speed", offsetof(UgetCommon, max_download_speed), UG_ENTRY_INT, NULL, NULL}, - {"timestamp", offsetof (UgetCommon, timestamp), + {"timestamp", offsetof(UgetCommon, timestamp), UG_ENTRY_INT, NULL, NULL}, {NULL} // null-terminated }; @@ -86,16 +87,16 @@ static const UgDataInfo UgetCommonInfoStatic = { "common", // name - sizeof (UgetCommon), // size - UgetCommonEntry, + sizeof(UgetCommon), // size (UgInitFunc) uget_common_init, (UgFinalFunc) uget_common_final, (UgAssignFunc) uget_common_assign, + UgetCommonEntry, }; // extern const UgDataInfo* UgetCommonInfo = &UgetCommonInfoStatic; -static void uget_common_init (UgetCommon* common) +static void uget_common_init(UgetCommon* common) { common->connect_timeout = 15; common->transmit_timeout = 30; @@ -108,51 +109,54 @@ #endif } -static void uget_common_final (UgetCommon* common) +static void uget_common_final(UgetCommon* common) { -// ug_free (common->name); - ug_free (common->uri); - ug_free (common->mirrors); - ug_free (common->file); - ug_free (common->folder); - ug_free (common->user); - ug_free (common->password); -} - -static void uget_common_assign (UgetCommon* common, UgetCommon* src) -{ -// if (common->keeping.enable == FALSE || common->keeping.name == FALSE) { -// ug_free (common->name); -// common->name = (src->name) ? ug_strdup (src->name) : NULL; -// } + ug_free(common->name); + ug_free(common->uri); + ug_free(common->mirrors); + ug_free(common->file); + ug_free(common->folder); + ug_free(common->user); + ug_free(common->password); +} + +static int uget_common_assign(UgetCommon* common, UgetCommon* src) +{ +#if 0 + // Program can NOT copy UgetCommon::name to other one. + if (common->keeping.enable == FALSE || common->keeping.name == FALSE) { + ug_free(common->name); + common->name = (src->name) ? ug_strdup(src->name) : NULL; + } +#endif if (common->keeping.enable == FALSE || common->keeping.uri == FALSE) { - ug_free (common->uri); - common->uri = (src->uri) ? ug_strdup (src->uri) : NULL; + ug_free(common->uri); + common->uri = (src->uri) ? ug_strdup(src->uri) : NULL; common->keeping.uri = src->keeping.uri; } if (common->keeping.enable == FALSE || common->keeping.mirrors == FALSE) { - ug_free (common->mirrors); - common->mirrors = (src->mirrors) ? ug_strdup (src->mirrors) : NULL; + ug_free(common->mirrors); + common->mirrors = (src->mirrors) ? ug_strdup(src->mirrors) : NULL; common->keeping.mirrors = src->keeping.mirrors; } if (common->keeping.enable == FALSE || common->keeping.file == FALSE) { - ug_free (common->file); - common->file = (src->file) ? ug_strdup (src->file) : NULL; + ug_free(common->file); + common->file = (src->file) ? ug_strdup(src->file) : NULL; common->keeping.file = src->keeping.file; } if (common->keeping.enable == FALSE || common->keeping.folder == FALSE) { - ug_free (common->folder); - common->folder = (src->folder) ? ug_strdup (src->folder) : NULL; + ug_free(common->folder); + common->folder = (src->folder) ? ug_strdup(src->folder) : NULL; common->keeping.folder = src->keeping.folder; } if (common->keeping.enable == FALSE || common->keeping.user == FALSE) { - ug_free (common->user); - common->user = (src->user) ? ug_strdup (src->user) : NULL; + ug_free(common->user); + common->user = (src->user) ? ug_strdup(src->user) : NULL; common->keeping.user = src->keeping.user; } if (common->keeping.enable == FALSE || common->keeping.password == FALSE) { - ug_free (common->password); - common->password = (src->password) ? ug_strdup (src->password) : NULL; + ug_free(common->password); + common->password = (src->password) ? ug_strdup(src->password) : NULL; common->keeping.password = src->keeping.password; } // timeout @@ -200,6 +204,45 @@ if (common->keeping.enable == FALSE) common->keeping = src->keeping; + + return TRUE; +} + +// helper functions +char* uget_name_from_uri_str(const char* uri) +{ + UgUri uuri; + + ug_uri_init(&uuri, uri); + return uget_name_from_uri(&uuri); +} + +char* uget_name_from_uri(UgUri* uuri) +{ + const char* filename; + char* name = NULL; + int length; + + if (uuri->scheme_len == 6 && strncmp(uuri->uri, "magnet", 6) == 0) { + length = 0; + filename = strstr(uuri->uri + uuri->file, "dn="); + if (filename) { + filename = filename + 3; + length = strcspn(filename, "&"); + name = ug_malloc(length + 1); + ug_decode_uri(filename, length, name); + if (ug_utf8_get_invalid(name, NULL) != -1) + name = ug_strndup(filename, length); + } + } + if (name == NULL) { + length = ug_uri_file(uuri, &filename); + if (length == 0) + name = ug_strdup(uuri->uri); + else + name = ug_uri_get_file(uuri); + } + return name; } // ---------------------------------------------------------------------------- @@ -207,23 +250,23 @@ static const UgEntry UgetProgressEntry[] = { - {"complete", offsetof (UgetProgress, complete), UG_ENTRY_INT64, NULL, NULL}, - {"total", offsetof (UgetProgress, total), UG_ENTRY_INT64, NULL, NULL}, - {"elapsed", offsetof (UgetProgress, consume_time),UG_ENTRY_INT64, NULL, NULL}, - {"uploaded", offsetof (UgetProgress, uploaded), UG_ENTRY_INT64, NULL, NULL}, - {"percent", offsetof (UgetProgress, percent), UG_ENTRY_INT, NULL, NULL}, -// {"ratio", offsetof (UgetProgress, ratio), UG_ENTRY_DOUBLE, NULL, NULL}, + {"complete", offsetof(UgetProgress, complete), UG_ENTRY_INT64, NULL, NULL}, + {"total", offsetof(UgetProgress, total), UG_ENTRY_INT64, NULL, NULL}, + {"elapsed", offsetof(UgetProgress, elapsed), UG_ENTRY_INT64, NULL, NULL}, + {"uploaded", offsetof(UgetProgress, uploaded), UG_ENTRY_INT64, NULL, NULL}, + {"percent", offsetof(UgetProgress, percent), UG_ENTRY_INT, NULL, NULL}, +// {"ratio", offsetof(UgetProgress, ratio), UG_ENTRY_DOUBLE, NULL, NULL}, {NULL} // null-terminated }; static const UgDataInfo UgetProgressInfoStatic = { "progress", // name - sizeof (UgetProgress), // size - UgetProgressEntry, + sizeof(UgetProgress), // size (UgInitFunc) NULL, (UgFinalFunc) NULL, (UgAssignFunc) NULL, + UgetProgressEntry, }; // extern const UgDataInfo* UgetProgressInfo = &UgetProgressInfoStatic; @@ -232,36 +275,36 @@ // UgetProxy static void uget_proxy_final (UgetProxy* proxy); -static void uget_proxy_assign (UgetProxy* proxy, UgetProxy* src); +static int uget_proxy_assign (UgetProxy* proxy, UgetProxy* src); #ifdef HAVE_LIBPWMD static const UgEntry UgetProxyPwmdEntry[] = { - {"socket", offsetof (struct UgetProxyPwmd, socket), + {"socket", offsetof(struct UgetProxyPwmd, socket), + UG_ENTRY_STRING, NULL, NULL}, + {"socket-args", offsetof(struct UgetProxyPwmd, socket_args), UG_ENTRY_STRING, NULL, NULL}, - {"socket-args", offsetof (struct UgetProxyPwmd, socket_args), - UG_TYPE_STRING, NULL, NULL}, - {"file", offsetof (struct UgetProxyPwmd, file), + {"file", offsetof(struct UgetProxyPwmd, file), UG_ENTRY_STRING, NULL, NULL}, - {"element", offsetof (struct UgetProxyPwmd, element), + {"element", offsetof(struct UgetProxyPwmd, element), UG_ENTRY_STRING, NULL, NULL}, }; #endif // End of HAVE_LIBPWMD static const UgEntry UgetProxyEntry[] = { - {"host", offsetof (UgetProxy, host), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"port", offsetof (UgetProxy, port), UG_ENTRY_UINT, + {"host", offsetof(UgetProxy, host), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"port", offsetof(UgetProxy, port), UG_ENTRY_UINT, NULL, NULL}, - {"type", offsetof (UgetProxy, type), UG_ENTRY_UINT, + {"type", offsetof(UgetProxy, type), UG_ENTRY_UINT, NULL, NULL}, - {"user", offsetof (UgetProxy, user), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"password", offsetof (UgetProxy, password), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, + {"user", offsetof(UgetProxy, user), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"password", offsetof(UgetProxy, password), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, #ifdef HAVE_LIBPWMD - {"pwmd", offsetof (UgetProxy, pwmd), + {"pwmd", offsetof(UgetProxy, pwmd), UG_ENTRY_OBJECT, (void*) UgetProxyPwmdEntry, NULL}, #endif {NULL}, // null-terminated @@ -270,35 +313,34 @@ static const UgDataInfo UgetProxyInfoStatic = { "proxy", // name - sizeof (UgetProxy), // size - UgetProxyEntry, // entry - + sizeof(UgetProxy), // size (UgInitFunc) NULL, (UgFinalFunc) uget_proxy_final, (UgAssignFunc) uget_proxy_assign, + UgetProxyEntry, // entry }; // extern const UgDataInfo* UgetProxyInfo = &UgetProxyInfoStatic; -static void uget_proxy_final (UgetProxy* proxy) +static void uget_proxy_final(UgetProxy* proxy) { - ug_free (proxy->host); - ug_free (proxy->user); - ug_free (proxy->password); + ug_free(proxy->host); + ug_free(proxy->user); + ug_free(proxy->password); #ifdef HAVE_LIBPWMD - ug_free (proxy->pwmd.socket); - ug_free (proxy->pwmd.socket_args); - ug_free (proxy->pwmd.file); - ug_free (proxy->pwmd.element); + ug_free(proxy->pwmd.socket); + ug_free(proxy->pwmd.socket_args); + ug_free(proxy->pwmd.file); + ug_free(proxy->pwmd.element); #endif // HAVE_LIBPWMD } -static void uget_proxy_assign (UgetProxy* proxy, UgetProxy* src) +static int uget_proxy_assign(UgetProxy* proxy, UgetProxy* src) { if (proxy->keeping.enable == FALSE || proxy->keeping.host == FALSE) { - ug_free (proxy->host); - proxy->host = (src->host) ? ug_strdup (src->host) : NULL; + ug_free(proxy->host); + proxy->host = (src->host) ? ug_strdup(src->host) : NULL; proxy->keeping.host = src->keeping.host; } if (proxy->keeping.enable == FALSE || proxy->keeping.port == FALSE) { @@ -311,41 +353,43 @@ } if (proxy->keeping.enable == FALSE || proxy->keeping.user == FALSE) { - ug_free (proxy->user); - proxy->user = (src->user) ? ug_strdup (src->user) : NULL; + ug_free(proxy->user); + proxy->user = (src->user) ? ug_strdup(src->user) : NULL; proxy->keeping.user = src->keeping.user; } if (proxy->keeping.enable == FALSE || proxy->keeping.password == FALSE) { - ug_free (proxy->password); - proxy->password = (src->password) ? ug_strdup (src->password) : NULL; + ug_free(proxy->password); + proxy->password = (src->password) ? ug_strdup(src->password) : NULL; proxy->keeping.password = src->keeping.password; } #ifdef HAVE_LIBPWMD if (proxy->keeping.enable == FALSE || proxy->pwmd.keeping.socket == FALSE) { - ug_free (proxy->pwmd.socket); - proxy->pwmd.socket = (src->pwmd.socket) ? ug_strdup (src->pwmd.socket) : NULL; + ug_free(proxy->pwmd.socket); + proxy->pwmd.socket = (src->pwmd.socket) ? ug_strdup(src->pwmd.socket) : NULL; proxy->pwmd.keeping.socket = src->pwmd.keeping.socket; } if (proxy->keeping.enable == FALSE || proxy->pwmd.keeping.socket_args == FALSE) { - ug_free (proxy->pwmd.socket_args); - proxy->pwmd.socket_args = (src->pwmd.socket_args) ? ug_strdup (src->pwmd.socket_args) : NULL; + ug_free(proxy->pwmd.socket_args); + proxy->pwmd.socket_args = (src->pwmd.socket_args) ? ug_strdup(src->pwmd.socket_args) : NULL; proxy->pwmd.keeping.socket_args = src->pwmd.keeping.socket_args; } if (proxy->keeping.enable == FALSE || proxy->pwmd.keeping.file == FALSE) { - ug_free (proxy->pwmd.file); - proxy->pwmd.file = (src->pwmd.file) ? ug_strdup (src->pwmd.file) : NULL; + ug_free(proxy->pwmd.file); + proxy->pwmd.file = (src->pwmd.file) ? ug_strdup(src->pwmd.file) : NULL; proxy->pwmd.keeping.file = src->pwmd.keeping.file; } if (proxy->keeping.enable == FALSE || proxy->pwmd.keeping.element == FALSE) { - ug_free (proxy->pwmd.element); - proxy->pwmd.element = (src->pwmd.element) ? ug_strdup (src->pwmd.element) : NULL; + ug_free(proxy->pwmd.element); + proxy->pwmd.element = (src->pwmd.element) ? ug_strdup(src->pwmd.element) : NULL; proxy->pwmd.keeping.element = src->pwmd.keeping.element; } #endif // HAVE_LIBPWMD if (proxy->keeping.enable == FALSE) proxy->keeping = src->keeping; + + return TRUE; } // --------------------------------------------------------------------------- @@ -353,27 +397,27 @@ static void uget_http_init (UgetHttp* http); static void uget_http_final (UgetHttp* http); -static void uget_http_assign (UgetHttp* http, UgetHttp* src); +static int uget_http_assign (UgetHttp* http, UgetHttp* src); static const UgEntry UgetHttpEntry[] = { - {"user", offsetof (UgetHttp, user), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"password", offsetof (UgetHttp, password), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"referrer", offsetof (UgetHttp, referrer), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"user-agent", offsetof (UgetHttp, user_agent), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"post-data", offsetof (UgetHttp, post_data), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"post-file", offsetof (UgetHttp, post_file), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"cookie-data", offsetof (UgetHttp, cookie_data), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"cookie-file", offsetof (UgetHttp, cookie_file), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"redirection-limit", offsetof (UgetHttp, redirection_limit),UG_ENTRY_UINT, + {"user", offsetof(UgetHttp, user), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"password", offsetof(UgetHttp, password), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"referrer", offsetof(UgetHttp, referrer), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"user-agent", offsetof(UgetHttp, user_agent), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"post-data", offsetof(UgetHttp, post_data), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"post-file", offsetof(UgetHttp, post_file), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"cookie-data", offsetof(UgetHttp, cookie_data), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"cookie-file", offsetof(UgetHttp, cookie_file), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"redirection-limit", offsetof(UgetHttp, redirection_limit),UG_ENTRY_UINT, NULL, NULL}, {NULL}, // null-terminated }; @@ -381,73 +425,72 @@ static const UgDataInfo UgetHttpInfoStatic = { "http", // name - sizeof (UgetHttp), // size - UgetHttpEntry, // entry - + sizeof(UgetHttp), // size (UgInitFunc) uget_http_init, (UgFinalFunc) uget_http_final, (UgAssignFunc) uget_http_assign, + UgetHttpEntry, // entry }; // extern const UgDataInfo* UgetHttpInfo = &UgetHttpInfoStatic; -static void uget_http_init (UgetHttp* http) +static void uget_http_init(UgetHttp* http) { http->redirection_limit = 30; } -static void uget_http_final (UgetHttp* http) +static void uget_http_final(UgetHttp* http) { - ug_free (http->user); - ug_free (http->password); - ug_free (http->referrer); - ug_free (http->user_agent); - ug_free (http->post_data); - ug_free (http->post_file); - ug_free (http->cookie_data); - ug_free (http->cookie_file); + ug_free(http->user); + ug_free(http->password); + ug_free(http->referrer); + ug_free(http->user_agent); + ug_free(http->post_data); + ug_free(http->post_file); + ug_free(http->cookie_data); + ug_free(http->cookie_file); } -static void uget_http_assign (UgetHttp* http, UgetHttp* src) +static int uget_http_assign(UgetHttp* http, UgetHttp* src) { if (http->keeping.enable == FALSE || http->keeping.user == FALSE) { - ug_free (http->user); - http->user = (src->user) ? ug_strdup (src->user) : NULL; + ug_free(http->user); + http->user = (src->user) ? ug_strdup(src->user) : NULL; http->keeping.user = src->keeping.user; } if (http->keeping.enable == FALSE || http->keeping.password == FALSE) { - ug_free (http->password); - http->password = (src->password) ? ug_strdup (src->password) : NULL; + ug_free(http->password); + http->password = (src->password) ? ug_strdup(src->password) : NULL; http->keeping.password = src->keeping.password; } if (http->keeping.enable == FALSE || http->keeping.referrer == FALSE) { - ug_free (http->referrer); - http->referrer = (src->referrer) ? ug_strdup (src->referrer) : NULL; + ug_free(http->referrer); + http->referrer = (src->referrer) ? ug_strdup(src->referrer) : NULL; http->keeping.referrer = src->keeping.referrer; } if (http->keeping.enable == FALSE || http->keeping.user_agent == FALSE) { - ug_free (http->user_agent); - http->user_agent = (src->user_agent) ? ug_strdup (src->user_agent) : NULL; + ug_free(http->user_agent); + http->user_agent = (src->user_agent) ? ug_strdup(src->user_agent) : NULL; http->keeping.user_agent = src->keeping.user_agent; } if (http->keeping.enable == FALSE || http->keeping.post_data == FALSE) { - ug_free (http->post_data); - http->post_data = (src->post_data) ? ug_strdup (src->post_data) : NULL; + ug_free(http->post_data); + http->post_data = (src->post_data) ? ug_strdup(src->post_data) : NULL; http->keeping.post_data = src->keeping.post_data; } if (http->keeping.enable == FALSE || http->keeping.post_file == FALSE) { - ug_free (http->post_file); - http->post_file = (src->post_file) ? ug_strdup (src->post_file) : NULL; + ug_free(http->post_file); + http->post_file = (src->post_file) ? ug_strdup(src->post_file) : NULL; http->keeping.post_file = src->keeping.post_file; } if (http->keeping.enable == FALSE || http->keeping.cookie_data == FALSE) { ug_free (http->cookie_data); - http->cookie_data = (src->cookie_data) ? ug_strdup (src->cookie_data) : NULL; + http->cookie_data = (src->cookie_data) ? ug_strdup(src->cookie_data) : NULL; http->keeping.cookie_data = src->keeping.cookie_data; } if (http->keeping.enable == FALSE || http->keeping.cookie_file == FALSE) { - ug_free (http->cookie_file); - http->cookie_file = (src->cookie_file) ? ug_strdup (src->cookie_file) : NULL; + ug_free(http->cookie_file); + http->cookie_file = (src->cookie_file) ? ug_strdup(src->cookie_file) : NULL; http->keeping.cookie_file = src->keeping.cookie_file; } if (http->keeping.enable == FALSE || http->keeping.redirection_limit == FALSE) { @@ -457,21 +500,23 @@ if (http->keeping.enable == FALSE) http->keeping = src->keeping; + + return TRUE; } // --------------------------------------------------------------------------- // UgetFtp static void uget_ftp_final (UgetFtp* ftp); -static void uget_ftp_assign (UgetFtp* ftp, UgetFtp* src); +static int uget_ftp_assign (UgetFtp* ftp, UgetFtp* src); static const UgEntry UgetFtpEntry[] = { - {"user", offsetof (UgetFtp, user), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"password", offsetof (UgetFtp, password), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"active-mode", offsetof (UgetFtp, active_mode), UG_ENTRY_INT, + {"user", offsetof(UgetFtp, user), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"password", offsetof(UgetFtp, password), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"active-mode", offsetof(UgetFtp, active_mode), UG_ENTRY_INT, NULL, NULL}, {NULL}, // null-terminated }; @@ -479,32 +524,31 @@ static const UgDataInfo UgetFtpInfoStatic = { "ftp", // name - sizeof (UgetFtp), // size - UgetFtpEntry, // entry - + sizeof(UgetFtp), // size (UgInitFunc) NULL, (UgFinalFunc) uget_ftp_final, (UgAssignFunc) uget_ftp_assign, + UgetFtpEntry, // entry }; // extern const UgDataInfo* UgetFtpInfo = &UgetFtpInfoStatic; -static void uget_ftp_final (UgetFtp* ftp) +static void uget_ftp_final(UgetFtp* ftp) { - ug_free (ftp->user); - ug_free (ftp->password); + ug_free(ftp->user); + ug_free(ftp->password); } -static void uget_ftp_assign (UgetFtp* ftp, UgetFtp* src) +static int uget_ftp_assign(UgetFtp* ftp, UgetFtp* src) { if (ftp->keeping.enable == FALSE || ftp->keeping.user == FALSE) { - ug_free (ftp->user); - ftp->user = (src->user) ? ug_strdup (src->user) : NULL; + ug_free(ftp->user); + ftp->user = (src->user) ? ug_strdup(src->user) : NULL; ftp->keeping.user = src->keeping.user; } if (ftp->keeping.enable == FALSE || ftp->keeping.password == FALSE) { - ug_free (ftp->password); - ftp->password = (src->password) ? ug_strdup (src->password) : NULL; + ug_free(ftp->password); + ftp->password = (src->password) ? ug_strdup(src->password) : NULL; ftp->keeping.password = src->keeping.password; } @@ -515,24 +559,26 @@ if (ftp->keeping.enable == FALSE) ftp->keeping = src->keeping; + + return TRUE; } // --------------------------------------------------------------------------- // UgetLog -static void uget_log_final (UgetLog* log); -static void ug_json_write_list_message (UgJson* json, UgList* list); -static UgJsonError ug_json_parse_list_message (UgJson* json, const char* name, - const char* value, - void* list, void* none); +static void uget_log_final(UgetLog* log); +static void ug_json_write_list_message(UgJson* json, UgList* list); +static UgJsonError ug_json_parse_list_message(UgJson* json, const char* name, + const char* value, + void* list, void* none); static const UgEntry UgetLogEntry[] = { - {"added-time", offsetof (UgetLog, added_time), UG_ENTRY_CUSTOM, + {"added-time", offsetof(UgetLog, added_time), UG_ENTRY_CUSTOM, ug_json_parse_time_t, ug_json_write_time_t}, - {"completed-time", offsetof (UgetLog, completed_time), UG_ENTRY_CUSTOM, + {"completed-time", offsetof(UgetLog, completed_time), UG_ENTRY_CUSTOM, ug_json_parse_time_t, ug_json_write_time_t}, - {"messages", offsetof (UgetLog, messages), UG_ENTRY_ARRAY, + {"messages", offsetof(UgetLog, messages), UG_ENTRY_ARRAY, ug_json_parse_list_message, ug_json_write_list_message}, {NULL}, // null-terminated }; @@ -540,111 +586,127 @@ static const UgDataInfo UgetLogInfoStatic = { "log", // name - sizeof (UgetLog), // size - UgetLogEntry, // entry - + sizeof(UgetLog), // size (UgInitFunc) NULL, (UgFinalFunc) uget_log_final, (UgAssignFunc) NULL, + UgetLogEntry, // entry }; // extern const UgDataInfo* UgetLogInfo = &UgetLogInfoStatic; -static void uget_log_final (UgetLog* log) +static void uget_log_final(UgetLog* log) { - ug_list_foreach (&log->messages, (UgForeachFunc) uget_event_free, NULL); + ug_list_foreach(&log->messages, (UgForeachFunc) uget_event_free, NULL); } -static UgJsonError ug_json_parse_list_message (UgJson* json, const char* name, - const char* value, - void* list, void* none) +static UgJsonError ug_json_parse_list_message(UgJson* json, const char* name, + const char* value, + void* list, void* none) { UgetEvent* event; if (json->type != UG_JSON_OBJECT) return UG_JSON_ERROR_TYPE_NOT_MATCH; - event = uget_event_new (UGET_EVENT_EMPTY); - ug_list_append (list, (UgLink*) event); - ug_json_push (json, ug_json_parse_entry, event, (void*) UgetEventEntry); + event = uget_event_new(UGET_EVENT_EMPTY); + ug_list_append(list, (UgLink*) event); + ug_json_push(json, ug_json_parse_entry, event, (void*) UgetEventEntry); return UG_JSON_ERROR_NONE; } -void ug_json_write_list_message (UgJson* json, UgList* list) +void ug_json_write_list_message(UgJson* json, UgList* list) { UgetEvent* link; for (link = (void*)list->head; link; link = link->next) { - ug_json_write_object_head (json); - ug_json_write_entry (json, link, UgetEventEntry); - ug_json_write_object_tail (json); + ug_json_write_object_head(json); + ug_json_write_entry(json, link, UgetEventEntry); + ug_json_write_object_tail(json); } } // ---------------------------------------------------------------------------- // UgetRelation -static void uget_relation_init (UgetRelation* relation); +static void uget_relation_init(UgetRelation* relation); +static void uget_relation_final(UgetRelation* relation); -static const UgEntry UgetRelationTaskEntry[] = -{ - {"plugin-name", - offsetof (struct UgetRelationTask, plugin_name), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, - NULL}, - {"priority", - offsetof (struct UgetRelationTask, priority), UG_ENTRY_INT, - NULL, - NULL}, - {NULL} // null-terminated -}; +// deprecated +static UgJsonError ug_json_parse_task_priority (UgJson* json, + const char* name, const char* value, + void* prelation, void* none); static const UgEntry UgetRelationEntry[] = { - {"task", offsetof (UgetRelation, task), UG_ENTRY_OBJECT, - (void*) UgetRelationTaskEntry, - (UgInitFunc) NULL}, + {"group", offsetof(UgetRelation, group), UG_ENTRY_INT, + NULL, NULL}, + {"priority", offsetof(UgetRelation, priority), UG_ENTRY_INT, + NULL, NULL}, + + // deprecated + {"task", 0, UG_ENTRY_CUSTOM, ug_json_parse_task_priority, NULL}, {NULL} // null-terminated }; static const UgDataInfo UgetRelationInfoStatic = { "relation", // name - sizeof (UgetRelation), // size - UgetRelationEntry, + sizeof(UgetRelation), // size (UgInitFunc) uget_relation_init, - (UgFinalFunc) NULL, + (UgFinalFunc) uget_relation_final, (UgAssignFunc) NULL, + UgetRelationEntry, }; // extern const UgDataInfo* UgetRelationInfo = &UgetRelationInfoStatic; -static void uget_relation_init (UgetRelation* relation) +static void uget_relation_init(UgetRelation* relation) +{ + relation->priority = UGET_PRIORITY_NORMAL; +} + +static void uget_relation_final(UgetRelation* relation) { - relation->task.priority = UGET_PRIORITY_NORMAL; + ug_free(relation->task); +} + +// deprecated - convert old format to new +static UgJsonError ug_json_parse_task_priority (UgJson* json, + const char* name, const char* value, + void* prelation, void* none) +{ + UgetRelation* relation = prelation; + + if (strcmp(name, "task") == 0 && json->type == UG_JSON_OBJECT) + ug_json_push(json, ug_json_parse_task_priority, relation, none); + else if (strcmp(name, "priority") == 0 && json->type == UG_JSON_NUMBER) + relation->priority = strtol(value, NULL, 10); + + return UG_JSON_ERROR_NONE; } // ---------------------------------------------------------------------------- // UgetCategory -static void uget_category_init (UgetCategory* category); -static void uget_category_final (UgetCategory* category); -static void uget_category_assign (UgetCategory* category, UgetCategory* src); -static void ug_array_str_copy (UgArrayStr* dest, UgArrayStr* src); +static void uget_category_init(UgetCategory* category); +static void uget_category_final(UgetCategory* category); +static int uget_category_assign(UgetCategory* category, UgetCategory* src); +static void ug_array_str_copy(UgArrayStr* dest, UgArrayStr* src); static const UgEntry UgetCategoryEntry[] = { - {"hosts", offsetof (UgetCategory, hosts), UG_ENTRY_ARRAY, + {"hosts", offsetof(UgetCategory, hosts), UG_ENTRY_ARRAY, ug_json_parse_array_string, ug_json_write_array_string}, - {"schemes", offsetof (UgetCategory, schemes), UG_ENTRY_ARRAY, + {"schemes", offsetof(UgetCategory, schemes), UG_ENTRY_ARRAY, ug_json_parse_array_string, ug_json_write_array_string}, - {"file-exts", offsetof (UgetCategory, file_exts), UG_ENTRY_ARRAY, + {"file-exts", offsetof(UgetCategory, file_exts), UG_ENTRY_ARRAY, ug_json_parse_array_string, ug_json_write_array_string}, - {"active-limit", offsetof (UgetCategory, active_limit), UG_ENTRY_UINT, + {"active-limit", offsetof(UgetCategory, active_limit), UG_ENTRY_INT, NULL, NULL}, - {"finished-limit", offsetof (UgetCategory, finished_limit), UG_ENTRY_UINT, + {"finished-limit", offsetof(UgetCategory, finished_limit), UG_ENTRY_INT, NULL, NULL}, - {"recycled-limit", offsetof (UgetCategory, recycled_limit), UG_ENTRY_UINT, + {"recycled-limit", offsetof(UgetCategory, recycled_limit), UG_ENTRY_INT, NULL, NULL}, {NULL} // null-terminated }; @@ -652,53 +714,55 @@ static const UgDataInfo UgetCategoryInfoStatic = { "category", // name - sizeof (UgetCategory), // size - UgetCategoryEntry, + sizeof(UgetCategory), // size (UgInitFunc) uget_category_init, (UgFinalFunc) uget_category_final, (UgAssignFunc) uget_category_assign, + UgetCategoryEntry, }; // extern const UgDataInfo* UgetCategoryInfo = &UgetCategoryInfoStatic; -static void uget_category_init (UgetCategory* category) +static void uget_category_init(UgetCategory* category) { - ug_array_init (&category->hosts, sizeof (char*), 8); - ug_array_init (&category->schemes, sizeof (char*), 8); - ug_array_init (&category->file_exts, sizeof (char*), 8); + ug_array_init(&category->hosts, sizeof(char*), 8); + ug_array_init(&category->schemes, sizeof(char*), 8); + ug_array_init(&category->file_exts, sizeof(char*), 8); category->active_limit = 3; category->finished_limit = 300; category->recycled_limit = 300; } -static void uget_category_final (UgetCategory* category) +static void uget_category_final(UgetCategory* category) { - ug_array_foreach_str (&category->hosts, (UgForeachFunc) ug_free, NULL); - ug_array_foreach_str (&category->schemes, (UgForeachFunc) ug_free, NULL); - ug_array_foreach_str (&category->file_exts, (UgForeachFunc) ug_free, NULL); - ug_array_clear (&category->hosts); - ug_array_clear (&category->schemes); - ug_array_clear (&category->file_exts); + ug_array_foreach_str(&category->hosts, (UgForeachFunc) ug_free, NULL); + ug_array_foreach_str(&category->schemes, (UgForeachFunc) ug_free, NULL); + ug_array_foreach_str(&category->file_exts, (UgForeachFunc) ug_free, NULL); + ug_array_clear(&category->hosts); + ug_array_clear(&category->schemes); + ug_array_clear(&category->file_exts); } -static void uget_category_assign (UgetCategory* category, UgetCategory* src) +static int uget_category_assign(UgetCategory* category, UgetCategory* src) { category->active_limit = src->active_limit; category->finished_limit = src->finished_limit; category->recycled_limit = src->recycled_limit; - ug_array_str_copy (&category->schemes, &src->schemes); - ug_array_str_copy (&category->hosts, &src->hosts); - ug_array_str_copy (&category->file_exts, &src->file_exts); + ug_array_str_copy(&category->schemes, &src->schemes); + ug_array_str_copy(&category->hosts, &src->hosts); + ug_array_str_copy(&category->file_exts, &src->file_exts); + + return TRUE; } -static void ug_array_str_copy (UgArrayStr* dest, UgArrayStr* src) +static void ug_array_str_copy(UgArrayStr* dest, UgArrayStr* src) { int index; - ug_array_foreach_str (dest, (UgForeachFunc) ug_free, NULL); + ug_array_foreach_str(dest, (UgForeachFunc) ug_free, NULL); dest->length = 0; for (index = 0; index < src->length; index++) - *(char**) ug_array_alloc (dest, 1) = ug_strdup (src->at[index]); + *(char**) ug_array_alloc(dest, 1) = ug_strdup(src->at[index]); } diff -Nru uget-2.0.2/uget/UgetData.h uget-2.2.2/uget/UgetData.h --- uget-2.0.2/uget/UgetData.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetData.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -38,13 +38,16 @@ #define UGET_DATA_H #include +#include #include +#include #include #ifdef __cplusplus extern "C" { #endif +// group data typedef struct UgetCommon UgetCommon; typedef struct UgetProgress UgetProgress; typedef struct UgetProxy UgetProxy; @@ -63,15 +66,22 @@ extern const UgDataInfo* UgetRelationInfo; extern const UgDataInfo* UgetCategoryInfo; -// ---------------------------------------------------------------------------- -// UgetCommon: It derived from UgData and store in UgInfo. +/* ---------------------------------------------------------------------------- + UgetCommon: It derived from UgData and store in UgInfo. + + UgType + | + `-- UgData + | + `-- UgetCommon + */ struct UgetCommon { - UG_DATA_MEMBERS; // It derived from UgData -// const UgDataInfo* info; + UG_DATA_MEMBERS; +// const UgDataInfo* info; // UgData(UgType) member -// char* name; + char* name; char* uri; char* mirrors; char* file; @@ -96,11 +106,12 @@ // debug int debug_level; - // used by ug_data_assign () + // keeping flags used by ug_data_assign () + // They works like read-only struct { uint8_t enable:1; -// uint8_t name:1; + uint8_t name:1; uint8_t uri:1; uint8_t mirrors:1; uint8_t file:1; @@ -122,18 +133,29 @@ } keeping; }; -// ---------------------------------------------------------------------------- -// UgetProgress: It derived from UgData and store in UgInfo. +// helper functions for UgetCommon::name +char* uget_name_from_uri(UgUri* uri); +char* uget_name_from_uri_str(const char* uri); + +/* ---------------------------------------------------------------------------- + UgetProgress: It derived from UgData and store in UgInfo. + + UgType + | + `-- UgData + | + `-- UgetProgress + */ struct UgetProgress { - UG_DATA_MEMBERS; // It derived from UgData -// const UgDataInfo* info; + UG_DATA_MEMBERS; +// const UgDataInfo* info; // UgData(UgType) member - int64_t consume_time; // Elapsed (seconds) - int64_t remain_time; // Left (seconds) - int64_t complete; - int64_t total; + int64_t elapsed; // consume time (seconds) + int64_t left; // remain time (seconds) + int64_t complete; // complete size + int64_t total; // total size // torrent - upload int64_t uploaded; double ratio; @@ -143,8 +165,15 @@ int percent; }; -// ---------------------------------------------------------------------------- -// UgetProxy: It derived from UgData and store in UgInfo. +/* ---------------------------------------------------------------------------- + UgetProxy: It derived from UgData and store in UgInfo. + + UgType + | + `-- UgData + | + `-- UgetProxy + */ typedef enum { @@ -162,8 +191,8 @@ struct UgetProxy { - UG_DATA_MEMBERS; // It derived from UgData -// const UgDataInfo* info; + UG_DATA_MEMBERS; +// const UgDataInfo* info; // UgData(UgType) member char* host; unsigned int port; @@ -200,13 +229,20 @@ #endif // HAVE_LIBPWMD }; -// ---------------------------------------------------------------------------- -// UgetHttp: It derived from UgData and store in UgInfo. +/* ---------------------------------------------------------------------------- + UgetHttp: It derived from UgData and store in UgInfo. + + UgType + | + `-- UgData + | + `-- UgetHttp + */ struct UgetHttp { - UG_DATA_MEMBERS; // It derived from UgData -// const UgDataInfo* info; + UG_DATA_MEMBERS; +// const UgDataInfo* info; // UgData(UgType) member char* user; char* password; @@ -237,13 +273,20 @@ } keeping; }; -// ---------------------------------------------------------------------------- -// UgetFtp: It derived from UgData and store in UgInfo. +/* ---------------------------------------------------------------------------- + UgetFtp: It derived from UgData and store in UgInfo. + + UgType + | + `-- UgData + | + `-- UgetFtp + */ struct UgetFtp { - UG_DATA_MEMBERS; // It derived from UgData -// const UgDataInfo* iface; + UG_DATA_MEMBERS; +// const UgDataInfo* info; // UgData(UgType) member char* user; char* password; @@ -259,13 +302,20 @@ } keeping; }; -// --------------------------------------------------------------------------- -// UgetLog +/* --------------------------------------------------------------------------- + UgetLog + + UgType + | + `-- UgData + | + `-- UgetLog + */ struct UgetLog { - UG_DATA_MEMBERS; // It derived from UgData -// const UgDataInfo* info; + UG_DATA_MEMBERS; +// const UgDataInfo* info; // UgData(UgType) member time_t added_time; time_t completed_time; @@ -273,8 +323,15 @@ UgList messages; // List for UgetEvent }; -// ---------------------------------------------------------------------------- -// UgetRelation: It derived from UgData and store in UgInfo. +/* ---------------------------------------------------------------------------- + UgetRelation: It derived from UgData and store in UgInfo. + + UgType + | + `-- UgData + | + `-- UgetRelation + */ typedef enum { @@ -285,42 +342,36 @@ struct UgetRelation { - UG_DATA_MEMBERS; // It derived from UgData -// const UgDataInfo* info; + UG_DATA_MEMBERS; +// const UgDataInfo* info; // UgData(UgType) member + + int group; // UgetGroup + int priority; // UgetPriority // used by UgetTask struct UgetRelationTask { UgetRelation* prev; UgetPlugin* plugin; - char* plugin_name; - int priority; // UgetPriority // speed control int speed[2]; // current speed int limit[2]; // current speed limit - } task; - - // call destroy.func(destroy.data) when destroying. - struct { - UgNotifyFunc func; - void* data; - } destroy; - - // used by user application - struct { - void* pointer; - void* storage; - void* position; - void* data[4]; - } user; + }* task; }; -// ---------------------------------------------------------------------------- -// UgetCategory: It derived from UgData and store in UgInfo. +/* ---------------------------------------------------------------------------- + UgetCategory: It derived from UgData and store in UgInfo. + + UgType + | + `-- UgData + | + `-- UgetCategory + */ struct UgetCategory { - UG_DATA_MEMBERS; // It derived from UgData -// const UgDataInfo* info; + UG_DATA_MEMBERS; +// const UgDataInfo* info; // UgData(UgType) member // use these to classify download UgArrayStr hosts; @@ -329,10 +380,10 @@ // limit int active_limit; - int finished_limit; // finished: completed and paused + int finished_limit; // finished: completed and stopped int recycled_limit; - // 4 fake sub-category tree + // subcategory in UgetNode::fake UgetNode* active; UgetNode* queuing; UgetNode* finished; @@ -352,15 +403,63 @@ namespace Uget { +const UgDataInfo* const CommonInfo = UgetCommonInfo; +const UgDataInfo* const ProgressInfo = UgetProgressInfo; +const UgDataInfo* const ProxyInfo = UgetProxyInfo; +const UgDataInfo* const HttpInfo = UgetHttpInfo; +const UgDataInfo* const FtpInfo = UgetFtpInfo; +const UgDataInfo* const LogInfo = UgetLogInfo; +const UgDataInfo* const RelationInfo = UgetRelationInfo; +const UgDataInfo* const CategoryInfo = UgetCategoryInfo; + // These are for directly use only. You can NOT derived it. -struct Common : Ug::DataMethod, UgetCommon {}; -struct Progress : Ug::DataMethod, UgetProgress {}; -struct Proxy : Ug::DataMethod, UgetProxy {}; -struct Http : Ug::DataMethod, UgetHttp {}; -struct Ftp : Ug::DataMethod, UgetFtp {}; -struct Log : Ug::DataMethod, UgetLog {}; -struct Relation : Ug::DataMethod, UgetRelation {}; -struct Category : Ug::DataMethod, UgetCategory {}; +struct Common : Ug::DataMethod, UgetCommon +{ + inline void* operator new(size_t size) + { return ug_data_new(UgetCommonInfo); } +}; + +struct Progress : Ug::DataMethod, UgetProgress +{ + inline void* operator new(size_t size) + { return ug_data_new(UgetProgressInfo); } +}; + +struct Proxy : Ug::DataMethod, UgetProxy +{ + inline void* operator new(size_t size) + { return ug_data_new(UgetProxyInfo); } +}; + +struct Http : Ug::DataMethod, UgetHttp +{ + inline void* operator new(size_t size) + { return ug_data_new(UgetHttpInfo); } +}; + +struct Ftp : Ug::DataMethod, UgetFtp +{ + inline void* operator new(size_t size) + { return ug_data_new(UgetFtpInfo); } +}; + +struct Log : Ug::DataMethod, UgetLog +{ + inline void* operator new(size_t size) + { return ug_data_new(UgetLogInfo); } +}; + +struct Relation : Ug::DataMethod, UgetRelation +{ + inline void* operator new(size_t size) + { return ug_data_new(UgetRelationInfo); } +}; + +struct Category : Ug::DataMethod, UgetCategory +{ + inline void* operator new(size_t size) + { return ug_data_new(UgetCategoryInfo); } +}; }; // namespace Uget diff -Nru uget-2.0.2/uget/UgetEvent.c uget-2.2.2/uget/UgetEvent.c --- uget-2.0.2/uget/UgetEvent.c 2015-08-18 01:17:31.000000000 +0000 +++ uget-2.2.2/uget/UgetEvent.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -162,16 +162,7 @@ #endif // HAVE_GLIB } break; -/* - case UGET_EVENT_INSERT: - case UGET_EVENT_REMOVE: - event->value.child = va_arg (arg_list, UgetNode*); - break; - case UGET_EVENT_INFO: - event->value.info = va_arg (arg_list, const UgDataInfo*); - break; -*/ default: break; } diff -Nru uget-2.0.2/uget/UgetEvent.h uget-2.2.2/uget/UgetEvent.h --- uget-2.0.2/uget/UgetEvent.h 2015-08-18 01:17:31.000000000 +0000 +++ uget-2.2.2/uget/UgetEvent.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -58,22 +58,15 @@ UGET_EVENT_NORMAL, // e.g. connecting to host UGET_EVENT_ERROR, - // plugin notifition + // plug-in notifition UGET_EVENT_STOP, UGET_EVENT_START, UGET_EVENT_COMPLETED, // Download completed UGET_EVENT_UPLOADING, // Uploading + UGET_EVENT_STOP_UPLOADING, // events for uget_task_dispatch() UGET_EVENT_NAME, // UgetNode's name changed - -/* - // events for uget_plugin_sync() - UGET_EVENT_INSERT, - UGET_EVENT_REMOVE, - UGET_EVENT_RENAME, - UGET_EVENT_INFO, - */ } UgetEventType; typedef enum @@ -127,9 +120,11 @@ struct UgetEvent { UG_LINK_MEMBERS (UgetEvent, UgetEvent, self); -// UgetEvent* self; -// UgetEvent* next; -// UgetEvent* prev; +/* // ------ UgLink members ------ + UgetEvent* self; + UgetEvent* next; + UgetEvent* prev; + */ int type; // UgetEventType time_t time; // date & time (seconds) @@ -137,10 +132,8 @@ // extra data union { - const UgDataInfo* info; // UGET_EVENT_INFO - UgetNode* node; // UGET_EVENT_INSERT or UGET_EVENT_REMOVE void* data; - int code; // UGET_EVENT_ERROR, UGET_EVENT_WARNING, UGET_EVENT_NORMAL + int code; // UGET_EVENT_ERROR, UGET_EVENT_WARNING, UGET_EVENT_NORMAL } value; // } value[3]; }; @@ -151,16 +144,10 @@ #define uget_event_new_error(code, string) uget_event_new (UGET_EVENT_ERROR, code, string) #define uget_event_new_normal(code, string) uget_event_new (UGET_EVENT_NORMAL, code, string) #define uget_event_new_warning(code, string) uget_event_new (UGET_EVENT_WARNING, code, string) -//UgetEvent* uget_event_new_error (int code, const char* string); -//UgetEvent* uget_event_new_normal (int code, const char* string); -//UgetEvent* uget_event_new_warning (int code, const char* string); - /* -// events for uget_plugin_sync() -UgetEvent* uget_event_new_info (UgetNode* node, const UgDataInfo* info, void* data); -UgetEvent* uget_event_new_inserted (UgetNode* node, UgetNode* child); -UgetEvent* uget_event_new_removed (UgetNode* node, UgetNode* child); -UgetEvent* uget_event_new_renamed (UgetNode* node, const char* name); +UgetEvent* uget_event_new_error (int code, const char* string); +UgetEvent* uget_event_new_normal (int code, const char* string); +UgetEvent* uget_event_new_warning (int code, const char* string); */ #ifdef __cplusplus diff -Nru uget-2.0.2/uget/UgetFiles.c uget-2.2.2/uget/UgetFiles.c --- uget-2.0.2/uget/UgetFiles.c 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetFiles.c 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,337 @@ +/* + * + * Copyright (C) 2018-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef HAVE_GLIB +#include // g_slice_xxx +#endif // HAVE_GLIB + +#include +#include +#include +#include +#include + +// ---------------------------------------------------------------------------- +// UgetFile + +UgetFile* uget_file_new(void) +{ +#ifdef HAVE_GLIB + return g_slice_alloc0(sizeof(UgetFile)); +#else + return ug_malloc0(sizeof(UgetFile)); +#endif // HAVE_GLIB +} + +void uget_file_free(UgetFile* file) +{ +#ifdef HAVE_GLIB + g_slice_free1(sizeof(UgetFile), file); +#else + ug_free(file); +#endif +} + +// ---------------------------------------------------------------------------- +// UgetFiles + +static void uget_files_init(UgetFiles* files); +static void uget_files_final(UgetFiles* files); +static void uget_files_copy(UgetFiles* files, UgetFiles* src); + +static void ug_json_write_list(UgJson* json, void* collection); +static UgJsonError ug_json_parse_list(UgJson* json, + const char* name, const char* value, + void* list, void* none); + +static const UgEntry UgetFilesEntry[] = +{ + {"list", offsetof(UgetFiles, list), UG_ENTRY_ARRAY, + ug_json_parse_list, ug_json_write_list}, + + // deprecated + {"collection", offsetof(UgetFiles, list), UG_ENTRY_ARRAY, + ug_json_parse_list, NULL}, + {NULL} // null-terminated +}; + +static const UgDataInfo UgetFilesInfoStatic = +{ + "files", // name + sizeof(UgetFiles), // size + (UgInitFunc) uget_files_init, + (UgFinalFunc) uget_files_final, + (UgAssignFunc) uget_files_assign, + UgetFilesEntry, +}; +// extern +const UgDataInfo* UgetFilesInfo = &UgetFilesInfoStatic; + +static void uget_files_init(UgetFiles* files) +{ + ug_list_init(&files->list); + files->sync_count = 0; +} + +static void uget_files_final(UgetFiles* files) +{ + // free UgetFile.path in list + ug_list_foreach(&files->list, (UgForeachFunc)ug_free, NULL); + ug_list_clear(&files->list, TRUE); +} + +int uget_files_assign(UgetFiles* files, UgetFiles* src) +{ + // free UgetFile.path in list + ug_list_foreach(&files->list, (UgForeachFunc)ug_free, NULL); + ug_list_clear(&files->list, TRUE); + + uget_files_copy(files, src); + files->sync_count = src->sync_count; + return TRUE; +} + +void uget_files_clear(UgetFiles* files) +{ + ug_list_foreach(&files->list, (UgForeachFunc)ug_free, NULL); + ug_list_clear(&files->list, TRUE); +} + +// sync UgetFile from 'src' to 'files. +// 1. all UgetFile in 'src' will insert/replace into 'files'. +// 2. remove deleted (state == UGET_FILE_STATE_DELETED) UgetFile in 'src'. +// return TRUE if 'files' have added or removed UgetFile. +int uget_files_sync(UgetFiles* files, UgetFiles* src) +{ + UgetFile* sibling; + UgetFile* file1; + UgetFile* file1_src; + UgetFile* src_next; + + if (files->sync_count == src->sync_count) + return FALSE; + + // sync UgetFile from 'src' + for (file1_src = (UgetFile*)src->list.head; file1_src; file1_src = src_next) { + src_next = file1_src->next; + file1 = uget_files_find(files, file1_src->path, &sibling); + // add new UgetFile in files + if (file1 == NULL) { + file1 = uget_file_new(); + ug_list_insert(&files->list, (UgLink*)sibling, (UgLink*)file1); + if (file1_src->path) + file1->path = ug_strdup(file1_src->path); + else + file1->path = NULL; + } + file1->type = file1_src->type; + file1->state = file1_src->state; +// file1->order = file1_src->order; + file1->total = file1_src->total; + file1->complete = file1_src->complete; + + // remove deleted UgetFile in 'src' + if (file1_src->type & UGET_FILE_STATE_DELETED) { + // delete file from src + ug_free(file1_src->path); + ug_list_remove(&src->list, (UgLink*)file1_src); + uget_file_free(file1_src); + } + } + files->sync_count = src->sync_count; + return TRUE; +} + +UgetFile* uget_files_find(UgetFiles* files, const char* path, UgetFile** sibling) +{ + UgetFile* file1; + int diff; + + for (file1 = (UgetFile*)files->list.head; file1; file1 = file1->next) { + diff = strcmp(file1->path, path); + if (diff > 0) { + if (sibling) + sibling[0] = file1; + return NULL; + } + if (diff == 0) + break; + } + + if (sibling) + sibling[0] = file1; + return file1; +} + +UgetFile* uget_files_realloc(UgetFiles* files, const char* path) +{ + UgetFile* file1; + UgetFile* sibling; + + file1 = uget_files_find(files, path, &sibling); + if (file1 == NULL) { + file1 = uget_file_new(); + ug_list_insert(&files->list, (UgLink*)sibling, (UgLink*)file1); + file1->path = ug_strdup(path); + file1->type = 0; + file1->state = 0; +// file1->order = 0; + file1->total = 0; + file1->complete = 0; + files->sync_count++; + } + return file1; +} + +UgetFile* uget_files_replace(UgetFiles* files, const char* path, + int type, int state) +{ + UgetFile* file1; + + file1 = uget_files_realloc(files, path); + file1->type = type; + file1->state = state; + files->sync_count++; + return file1; +} + +void uget_files_apply(UgetFiles* files, int type, int state) +{ + UgetFile* file1; + + for (file1 = (UgetFile*)files->list.head; file1; file1 = file1->next) { + if (file1->type == type || type == UGET_FILE_ALL) + file1->state |= state; + } + files->sync_count++; +} + +void uget_files_erase(UgetFiles* files, int type, int state) +{ + UgetFile* file1; + UgetFile* next; + + for (file1 = (UgetFile*)files->list.head; file1; file1 = next) { + next = file1->next; + if (file1->type != type && type != UGET_FILE_ALL) + continue; + if (file1->state & state) { + // delete file from src + ug_free(file1->path); + ug_list_remove(&files->list, (UgLink*)file1); + uget_file_free(file1); + } + } + files->sync_count -= 10; +} + +// copy UgetFile from 'src' to 'files'. +static void uget_files_copy(UgetFiles* files, UgetFiles* src) +{ + UgetFile* file1; + UgetFile* file1_src; + + for(file1_src = (UgetFile*)src->list.head; file1_src; file1_src = file1_src->next) { + file1 = uget_file_new(); + ug_list_append(&files->list, (UgLink*)file1); + + if (file1_src->path) + file1->path = ug_strdup(file1_src->path); + else + file1->path = NULL; + file1->type = file1_src->type; + file1->state = file1_src->state; +// file1->order = file1_src->order; + file1->total = file1_src->total; + file1->complete = file1_src->complete; + } + files->sync_count++; +} + +// ---------------------------------------------------------------------------- +// JSON + +static const UgEntry UgetFileEntry[] = +{ {"path", offsetof(UgetFile, path), UG_ENTRY_STRING, + NULL, NULL}, + {"type", offsetof(UgetFile, type), UG_ENTRY_CUSTOM, + ug_json_parse_int16, ug_json_write_int16}, + {"state", offsetof(UgetFile, state), UG_ENTRY_CUSTOM, + ug_json_parse_int16, ug_json_write_int16}, +// {"order", offsetof(UgetFile, order), UG_ENTRY_CUSTOM, +// ug_json_parse_int32, ug_json_write_int32}, + {"total", offsetof(UgetFile, total), UG_ENTRY_INT64, + NULL, NULL}, + {"complete", offsetof(UgetFile, complete), UG_ENTRY_INT64, + NULL, NULL}, + {NULL} // null-terminated +}; + +static void ug_json_write_list(UgJson* json, void* list) +{ + UgList* filelist = list; + UgetFile* file1; + + for (file1 = (UgetFile*)filelist->head; file1; file1 = file1->next) { + ug_json_write_object_head(json); + ug_json_write_entry(json, file1, UgetFileEntry); + ug_json_write_object_tail(json); + } +} + +static UgJsonError ug_json_parse_list(UgJson* json, + const char* name, const char* value, + void* list, void* none) +{ + UgList* filelist = list; + UgetFile* file1; + + if (json->type != UG_JSON_OBJECT) { +// if (json->type >= UG_JSON_OBJECT) +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); + return UG_JSON_ERROR_TYPE_NOT_MATCH; + } + + file1 = uget_file_new(); + ug_list_append(filelist, (UgLink*)file1); + ug_json_push(json, ug_json_parse_entry, + file1, (void*)UgetFileEntry); + return UG_JSON_ERROR_NONE; +} diff -Nru uget-2.0.2/uget/UgetFiles.h uget-2.2.2/uget/UgetFiles.h --- uget-2.0.2/uget/UgetFiles.h 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetFiles.h 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,210 @@ +/* + * + * Copyright (C) 2018-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#ifndef UGET_FILES_H +#define UGET_FILES_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct UgetFile UgetFile; +typedef struct UgetFiles UgetFiles; + +extern const UgDataInfo* UgetFilesInfo; + +enum UgetFileType +{ + UGET_FILE_REGULAR, + UGET_FILE_FOLDER, + UGET_FILE_ATTACHMENT, // torrent, metalink, or HTTP POST file + UGET_FILE_TEMPORARY, // temporary file. + + UGET_FILE_ALL, +}; + +enum UgetFileState +{ + // state for torrent or metalink +// UGET_FILE_STATE_IGNORE = 0x0001, +// UGET_FILE_STATE_SOURCE = 0x0002, + + // state for output (actually write into storage device) + UGET_FILE_STATE_DELETED = 0x0004, // this file was deleted/renamed + UGET_FILE_STATE_COMPLETED = 0x0008, + + UGET_FILE_STATE_ALL = 0x00FF, +}; + +// ---------------------------------------------------------------------------- +// UgetFile functions + +UgetFile* uget_file_new(void); +void uget_file_free(UgetFile* file); + +/* ---------------------------------------------------------------------------- + UgetFiles: It derived from UgData and store in UgInfo. + + UgType + | + `-- UgData + | + `-- UgetFiles + */ + +struct UgetFiles +{ + UG_DATA_MEMBERS; +// const UgDataInfo* info; // UgData(UgType) member + + UgList list; + + int sync_count; +}; + +int uget_files_assign(UgetFiles* files, UgetFiles* src); + +void uget_files_clear(UgetFiles* files); + +// sync elements from 'src' to 'files. +// 1. all elements in 'src' will insert/replace into 'files'. +// 2. remove deleted (state == UGET_FILE_STATE_DELETED) elements in 'src'. +// return TRUE if 'files' have added or removed elements. +int uget_files_sync(UgetFiles* files, UgetFiles* src); + +UgetFile* uget_files_find(UgetFiles* files, const char* path, + UgetFile** sibling); + +// realloc struct UgetFile by 'path' in array. +UgetFile* uget_files_realloc(UgetFiles* files, const char* path); + +UgetFile* uget_files_replace(UgetFiles* files, const char* path, + int type, int state); + +// apply state to element if type is matched. +void uget_files_apply(UgetFiles* files, int type, int state); +// erase element by state if type is matched. +void uget_files_erase(UgetFiles* files, int type, int state); + +#define uget_files_apply_deleted(files) \ + uget_files_apply(files, UGET_FILE_ALL, UGET_FILE_STATE_DELETED) +#define uget_files_erase_deleted(files) \ + uget_files_erase(files, UGET_FILE_ALL, UGET_FILE_STATE_DELETED) + +#ifdef __cplusplus +} +#endif + +// ---------------------------------------------------------------------------- +// UgetFile structure: file information with list link + +struct UgetFile +{ + UG_LINK_MEMBERS(UgetFile, char, path); +/* // ------ UgLink members ------ + char* path; // absolute file path + UgetFile* next; + UgetFile* prev; + */ + + int16_t type; // UgetFileType + int16_t state; // UgetFileState + + // save original index in torrent and metalink file. +// int32_t order; + + // progress + int64_t total; + int64_t complete; + +#ifdef __cplusplus + inline void* operator new(size_t size) + { return uget_file_new(); } + inline void operator delete(void* p) + { uget_file_free((UgetFile*)p); } +#endif // __cplusplus +}; + +// ---------------------------------------------------------------------------- +// C++11 standard-layout + +#ifdef __cplusplus + +namespace Uget +{ + +const UgDataInfo* const FilesInfo = UgetFilesInfo; + +// These are for directly use only. You can NOT derived it. +typedef struct UgetFile File; + +struct Files : Ug::DataMethod, UgetFiles +{ + inline void* operator new(size_t size) + { return ug_data_new(UgetFilesInfo); } + + inline int sync(UgetFiles* src) + { return uget_files_sync(this, src); } + inline UgetFile* find(const char* path, UgetFile** sibling) + { return uget_files_find(this, path, sibling); } + + inline UgetFile* realloc(const char* path) + { return uget_files_realloc(this, path); } + inline UgetFile* replace(const char* path,int type, int state) + { return uget_files_replace(this, path, type, state); } + + inline void apply(int type, int state) + { uget_files_apply(this, type, state); } + inline void erase(int type, int state) + { uget_files_erase(this, type, state); } + + inline void apply_deleted(void) + { uget_files_apply(this, UGET_FILE_ALL, UGET_FILE_STATE_DELETED); } + inline void erase_deleted(void) + { uget_files_erase(this, UGET_FILE_ALL, UGET_FILE_STATE_DELETED); } +}; + +}; // namespace Uget + +#endif // __cplusplus + + +#endif // End of UGET_FILES_H + diff -Nru uget-2.0.2/uget/UgetHash.c uget-2.2.2/uget/UgetHash.c --- uget-2.0.2/uget/UgetHash.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetHash.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -571,28 +571,28 @@ } } -void uget_uri_hash_add_download (void* uuhash, UgetNode* dnode) +void uget_uri_hash_add_download (void* uuhash, UgInfo* dnode_info) { UgetCommon* common; uintptr_t counts; if (uuhash == NULL) return; - common = ug_info_get (&dnode->info, UgetCommonInfo); + common = ug_info_get(dnode_info, UgetCommonInfo); if (common && common->uri) { counts = (uintptr_t) ug_hash_table_lookup (uuhash, common->uri); ug_hash_table_insert (uuhash, ug_strdup (common->uri), (void*) (++counts)); } } -void uget_uri_hash_remove_download (void* uuhash, UgetNode* dnode) +void uget_uri_hash_remove_download (void* uuhash, UgInfo* dnode_info) { UgetCommon* common; uintptr_t counts; if (uuhash == NULL) return; - common = ug_info_get (&dnode->info, UgetCommonInfo); + common = ug_info_get(dnode_info, UgetCommonInfo); if (common && common->uri) { counts = (uintptr_t) ug_hash_table_lookup (uuhash, common->uri); if (counts > 1) @@ -611,7 +611,7 @@ if (uuhash == NULL) return; for (dnode = cnode->children; dnode; dnode = dnode->next) { - common = ug_info_get (&dnode->info, UgetCommonInfo); + common = ug_info_get (dnode->info, UgetCommonInfo); if (common && common->uri) { counts = (uintptr_t) ug_hash_table_lookup (uuhash, common->uri); ug_hash_table_insert (uuhash, ug_strdup (common->uri), (void*) (++counts)); @@ -628,7 +628,7 @@ if (uuhash == NULL) return; for (dnode = cnode->children; dnode; dnode = dnode->next) { - common = ug_info_get (&dnode->info, UgetCommonInfo); + common = ug_info_get (dnode->info, UgetCommonInfo); if (common && common->uri) { counts = (uintptr_t) ug_hash_table_lookup (uuhash, common->uri); if (counts > 1) diff -Nru uget-2.0.2/uget/UgetHash.h uget-2.2.2/uget/UgetHash.h --- uget-2.0.2/uget/UgetHash.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetHash.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -70,8 +70,8 @@ void uget_uri_hash_add (void* uuhash, const char* uri); void uget_uri_hash_remove (void* uuhash, const char* uri); -void uget_uri_hash_add_download (void* uuhash, UgetNode* dnode); -void uget_uri_hash_remove_download (void* uuhash, UgetNode* dnode); +void uget_uri_hash_add_download (void* uuhash, UgInfo* dnode_info); +void uget_uri_hash_remove_download (void* uuhash, UgInfo* dnode_info); void uget_uri_hash_add_category (void* uuhash, UgetNode* cnode); void uget_uri_hash_remove_category (void* uuhash, UgetNode* cnode); diff -Nru uget-2.0.2/uget/UgetMedia.c uget-2.2.2/uget/UgetMedia.c --- uget-2.0.2/uget/UgetMedia.c 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetMedia.c 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,193 @@ +/* + * + * Copyright (C) 2015-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#include +#include +#include +#include + +#ifndef ABS +#define ABS(a) (((a) < 0) ? -(a) : (a)) +#endif + +// ---------------------------------------------------------------------------- +// UgetMedia + +int uget_media_grab_youtube(UgetMedia* umedia, UgetProxy* proxy); + +UgetMedia* uget_media_new(const char* url, UgetSiteId site_id) +{ + UgetMedia* umedia; + + umedia = ug_malloc0(sizeof(UgetMedia)); + umedia->url = ug_strdup(url); + if (site_id == UGET_SITE_UNKNOWN) + site_id = uget_site_get_id(url); + umedia->site_id = site_id; + + return umedia; +} + +void uget_media_free(UgetMedia* umedia) +{ + uget_media_clear(umedia, TRUE); + ug_free(umedia); +} + +void uget_media_clear(UgetMedia* umedia, int free_items) +{ + if (free_items== TRUE) { + ug_list_foreach((UgList*) umedia, + (UgForeachFunc) uget_media_item_free, NULL); + ug_list_clear((UgList*) umedia, FALSE); + } + + ug_free(umedia->url); + umedia->url = NULL; + + ug_free(umedia->title); + umedia->title = NULL; + + if (umedia->event) { + uget_event_free(umedia->event); + umedia->event = NULL; + } +} + +int uget_media_grab_items(UgetMedia* umedia, UgetProxy* proxy) +{ + int n_items = 0; + + switch (umedia->site_id) { + case UGET_SITE_YOUTUBE: + n_items = uget_media_grab_youtube(umedia, proxy); + break; + + case UGET_SITE_UNKNOWN: + default: + break; + } + + return n_items; +} + +UgetMediaItem* uget_media_match(UgetMedia* umedia, + UgetMediaMatchMode mode, + UgetMediaQuality quality, + UgetMediaType type) +{ + UgetMediaItem* cur; + UgetMediaItem* prev; + UgetMediaItem* result = NULL; + int abs_cur, abs_res; + int count_cur, count_res; + + if (mode == UGET_MEDIA_MATCH_0) + return umedia->head; + + for (cur = umedia->tail; cur; cur = prev) { + prev = cur->prev; + count_cur = 0; + if (cur->quality == quality) + count_cur++; + if (cur->type == type) + count_cur++; + + if ((mode == UGET_MEDIA_MATCH_1 && count_cur >= 1) || + (mode == UGET_MEDIA_MATCH_2 && count_cur >= 2)) + { + // move matched items to tail of list + ug_list_remove((UgList*) umedia, (UgLink*) cur); + ug_list_append((UgList*) umedia, (UgLink*) cur); + if (result == NULL) + result = cur; + } + else if (mode == UGET_MEDIA_MATCH_NEAR) { + if (result == NULL) { + result = cur; + count_res = count_cur; + continue; + } + abs_res = ABS(quality - result->quality); + abs_cur = ABS(quality - cur->quality); + if (abs_res == abs_cur) { + if (count_res < count_cur) { + result = cur; + count_res = count_cur; + } + // choose near (or less) quality media file. + else if (result->quality > cur->quality) { + result = cur; + count_res = count_cur; + } + } + else if (abs_res > abs_cur) { + result = cur; + count_res = count_cur; + } + } + } + + if (mode == UGET_MEDIA_MATCH_NEAR && result) { + // move matched items to tail of list + ug_list_remove((UgList*) umedia, (UgLink*) result); + ug_list_append((UgList*) umedia, (UgLink*) result); + } + + return result; +} + +// ---------------------------------------------------------------------------- +// UgetMediaItem + +UgetMediaItem* uget_media_item_new(UgetMedia* umedia) +{ + UgetMediaItem* umitem; + + umitem = ug_malloc0(sizeof(UgetMediaItem)); + umitem->self = umitem; + umitem->type = UGET_MEDIA_TYPE_UNKNOWN; + umitem->quality = UGET_MEDIA_QUALITY_UNKNOWN; + ug_list_append((UgList*) umedia, (UgLink*) umitem); + return umitem; +} + +void uget_media_item_free(UgetMediaItem* umitem) +{ + ug_free(umitem->url); + ug_free(umitem); +} + diff -Nru uget-2.0.2/uget/UgetMedia.h uget-2.2.2/uget/UgetMedia.h --- uget-2.0.2/uget/UgetMedia.h 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetMedia.h 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,172 @@ +/* + * + * Copyright (C) 2015-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +// YouTube support +#ifndef UGET_MEDIA_H +#define UGET_MEDIA_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct UgetMedia UgetMedia; +typedef struct UgetMediaItem UgetMediaItem; + +typedef enum UgetMediaMatchMode +{ + UGET_MEDIA_MATCH_0 = 0, + UGET_MEDIA_MATCH_1 = 1, + UGET_MEDIA_MATCH_2, + UGET_MEDIA_MATCH_NEAR, // near quality + + UGET_MEDIA_N_MATCH_MODE, +} UgetMediaMatchMode; + +typedef enum UgetMediaQuality +{ + UGET_MEDIA_QUALITY_UNKNOWN = -1, + + UGET_MEDIA_QUALITY_240P, // YouTube small + UGET_MEDIA_QUALITY_360P, // YouTube medium + UGET_MEDIA_QUALITY_480P, // YouTube large + UGET_MEDIA_QUALITY_720P, // YouTube hd720 + UGET_MEDIA_QUALITY_1080P, // YouTube hd1080 + + UGET_MEDIA_N_QUALITY, +} UgetMediaQuality; + +typedef enum UgetMediaType +{ + UGET_MEDIA_TYPE_UNKNOWN = -1, + + UGET_MEDIA_TYPE_MP4, + UGET_MEDIA_TYPE_WEBM, + UGET_MEDIA_TYPE_3GPP, + UGET_MEDIA_TYPE_FLV, + + // YouTube MIME type: + // audio/mp4;+codecs="mp4a.40.2" + // audio/webm;+codecs="vorbis" + // audio/webm;+codecs="opus" + UGET_MEDIA_AUDIO_MP4, + UGET_MEDIA_AUDIO_WEBM, +// UGET_MEDIA_AUDIO_WEBM_VORBIS, // YouTube - audio/webm;+codecs="vorbis" +// UGET_MEDIA_AUDIO_WEBM_OPUS, // YouTube - audio/webm;+codecs="opus" + + UGET_MEDIA_N_TYPE, +} UgetMediaType; + + +struct UgetMedia +{ + UG_LIST_MEMBERS(UgetMediaItem); +// uintptr_t size; +// UgetMediaItem* head; +// UgetMediaItem* tail; + + UgUri uuri; + UgUriQuery uquery; + + int site_id; + char* url; + char* title; + + // error message + UgetEvent* event; + + // for internal use only + void* data; + void* data1; + void* data2; + void* data3; + void* data4; +}; + +UgetMedia* uget_media_new(const char* url, UgetSiteId site_id); +void uget_media_free(UgetMedia* umedia); +void uget_media_clear(UgetMedia* umedia, int free_items); + +int uget_media_grab_items(UgetMedia* umedia, UgetProxy* proxy); + +// return begin of matched items. Don't free it +UgetMediaItem* uget_media_match(UgetMedia* umedia, + UgetMediaMatchMode mode, + UgetMediaQuality quality, + UgetMediaType type); + +// ---------------------------------------------------------------------------- +// UgetMediaItem + +struct UgetMediaItem +{ + UG_LINK_MEMBERS(UgetMediaItem, UgetMediaItem, self); +// UgetMediaItem* self; +// UgetMediaItem* next; +// UgetMediaItem* prev; + + char* url; + int quality; // video - 480p, 720p + int bitrate; // audio + int type; // UgetMediaType + + // for internal use only + int order; + union { + int integer; + char* string; + void* pointer; + } data; + + union { + int integer; + char* string; + void* pointer; + } data1; +}; + +UgetMediaItem* uget_media_item_new(UgetMedia* umedia); +void uget_media_item_free(UgetMediaItem* umitem); + +#ifdef __cplusplus +} +#endif // __cplusplus + +#endif // End of UGET_MEDIA_H + diff -Nru uget-2.0.2/uget/UgetMedia-youtube.c uget-2.2.2/uget/UgetMedia-youtube.c --- uget-2.0.2/uget/UgetMedia-youtube.c 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetMedia-youtube.c 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,781 @@ +/* + * + * Copyright (C) 2015-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#include +#include +#include +#include + +#include +#include +#include + +#ifdef HAVE_GLIB +#include +#else +#define _(x) x +#endif + +// -------------------------------------------------------- +// UgetMedia for YouTube +// Youtube: +// https://www.youtube.com/watch?v=xxxxxxxxxxx +// https://youtu.be/xxxxxxxxxxx + +typedef struct UgetYouTube UgetYouTube; + +struct UgetYouTube +{ + UgUriQuery query; + char* video_id; + + // Method 1 + UgBuffer buffer; + char* reason; // VEVO + char* status; // VEVO + int error_code; + // errorcode = 100, This video has been removed. + // errorcode = 101 or 150, The video requested does not allow playback in an embedded player. + + // method 2 + UgHtml html; + UgJson json; + char* js; // JavaScript player URL +}; + +static UgetYouTube* uget_youtube_new(void) +{ + UgetYouTube* uyoutube; + + uyoutube = ug_malloc0(sizeof(UgetYouTube)); + + ug_buffer_init(&uyoutube->buffer, 4096); + uyoutube->reason = NULL; + uyoutube->status = NULL; + + ug_html_init(&uyoutube->html); + ug_json_init(&uyoutube->json); + uyoutube->js = NULL; + return uyoutube; +} + +static void uget_youtube_free(UgetYouTube* uyoutube) +{ + ug_buffer_clear(&uyoutube->buffer, TRUE); + ug_free(uyoutube->reason); + ug_free(uyoutube->status); + + ug_html_final(&uyoutube->html); + ug_json_final(&uyoutube->json); + ug_free(uyoutube->js); + + ug_free(uyoutube); +} + +static void uget_youtube_parse_map(UgetYouTube* uyoutube, UgetMedia* umedia, const char* field) +{ + UgetMediaItem* umitem = NULL; + char* temp; + + while (ug_uri_query_part(&uyoutube->query, field)) { + // debug +// printf(" %.*s=%.*s\n", +// uyoutube->query.field_len, field, +// uyoutube->query.value_len, uyoutube->query.value); + + if (umitem == NULL) + umitem = uget_media_item_new(umedia); + + if (strncmp("url", field, uyoutube->query.field_len) == 0) { + ug_decode_uri(uyoutube->query.value, uyoutube->query.value_len, + uyoutube->query.value); + umitem->url = ug_strdup(uyoutube->query.value); + } + else if (strncmp("sig", field, uyoutube->query.field_len) == 0) { + // signature. + // If it exist, append "&signature=xxxx" to umitem->url + umitem->data.string = ug_strndup(uyoutube->query.value, + uyoutube->query.value_len); + } + else if (strncmp("type", field, uyoutube->query.field_len) == 0) { + ug_decode_uri(uyoutube->query.value, uyoutube->query.value_len, + uyoutube->query.value); + if (strncmp("video/webm", uyoutube->query.value, 10) == 0) + umitem->type = UGET_MEDIA_TYPE_WEBM; + else if (strncmp("video/mp4", uyoutube->query.value, 9) == 0) + umitem->type = UGET_MEDIA_TYPE_MP4; + else if (strncmp("video/x-flv", uyoutube->query.value, 11) == 0) + umitem->type = UGET_MEDIA_TYPE_FLV; + else if (strncmp("video/3gpp", uyoutube->query.value, 10) == 0) + umitem->type = UGET_MEDIA_TYPE_3GPP; + else + umitem->type = UGET_MEDIA_TYPE_UNKNOWN; + } + else if (strncmp(field, "quality", uyoutube->query.field_len) == 0) { +// ug_decode_uri(uyoutube->query.value, uyoutube->query.value_len, uyoutube->query.value); + if (strncmp("small", uyoutube->query.value, uyoutube->query.value_len) == 0) + umitem->quality = UGET_MEDIA_QUALITY_240P; + else if (strncmp("medium", uyoutube->query.value, uyoutube->query.value_len) == 0) + umitem->quality = UGET_MEDIA_QUALITY_360P; + else if (strncmp("large", uyoutube->query.value, uyoutube->query.value_len) == 0) + umitem->quality = UGET_MEDIA_QUALITY_480P; + else if (strncmp("hd720", uyoutube->query.value, uyoutube->query.value_len) == 0) + umitem->quality = UGET_MEDIA_QUALITY_720P; + else if (strncmp("hd1080", uyoutube->query.value, uyoutube->query.value_len) == 0) + umitem->quality = UGET_MEDIA_QUALITY_1080P; + else + umitem->quality = UGET_MEDIA_QUALITY_UNKNOWN; + } + + if (uyoutube->query.value_next) { + // append "&signature=xxxx" to url + if (umitem->data.string) { + temp = ug_strdup_printf("%s" "&signature=%s", + umitem->url, umitem->data.string); + ug_free(umitem->url); + ug_free(umitem->data.string); + umitem->url = temp; + umitem->data.string = NULL; + } + umitem->order = 1; + field = uyoutube->query.value_next; + umitem = NULL; + } + else + field = uyoutube->query.field_next; + } +} + +static void uget_youtube_parse_adaptive_fmts(UgetYouTube* uyoutube, UgetMedia* umedia, const char* field) +{ + UgetMediaItem* umitem = NULL; + char* temp; + + while (ug_uri_query_part(&uyoutube->query, field)) { + // debug + printf(" %.*s=%.*s\n", + uyoutube->query.field_len, field, + uyoutube->query.value_len, uyoutube->query.value); + + if (umitem == NULL) + umitem = uget_media_item_new(umedia); + + if (strncmp("url", field, uyoutube->query.field_len) == 0) { + ug_decode_uri(uyoutube->query.value, uyoutube->query.value_len, + uyoutube->query.value); + umitem->url = ug_strdup(uyoutube->query.value); + } + else if (strncmp("sig", field, uyoutube->query.field_len) == 0) { + // signature. + // If it exist, append "&signature=xxxx" to umitem->url + umitem->data.string = ug_strndup(uyoutube->query.value, + uyoutube->query.value_len); + } + else if (strncmp("type", field, uyoutube->query.field_len) == 0) { + ug_decode_uri(uyoutube->query.value, uyoutube->query.value_len, + uyoutube->query.value); + if (strncmp("video/webm", uyoutube->query.value, 10) == 0) + umitem->type = UGET_MEDIA_TYPE_WEBM; + else if (strncmp("video/mp4", uyoutube->query.value, 9) == 0) + umitem->type = UGET_MEDIA_TYPE_MP4; + else if (strncmp("video/x-flv", uyoutube->query.value, 11) == 0) + umitem->type = UGET_MEDIA_TYPE_FLV; + else if (strncmp("video/3gpp", uyoutube->query.value, 10) == 0) + umitem->type = UGET_MEDIA_TYPE_3GPP; + else if (strncmp("audio/mp4", uyoutube->query.value, 9) == 0) + umitem->type = UGET_MEDIA_AUDIO_MP4; + else if (strncmp("audio/webm", uyoutube->query.value, 10) == 0) + umitem->type = UGET_MEDIA_AUDIO_WEBM; + else + umitem->type = UGET_MEDIA_TYPE_UNKNOWN; + } + else if (strncmp(field, "quality_label", uyoutube->query.field_len) == 0) { +// ug_decode_uri(uyoutube->query.value, uyoutube->query.value_len, uyoutube->query.value); + if (strncmp("240p", uyoutube->query.value, uyoutube->query.value_len) == 0) + umitem->quality = UGET_MEDIA_QUALITY_240P; + else if (strncmp("360p", uyoutube->query.value, uyoutube->query.value_len) == 0) + umitem->quality = UGET_MEDIA_QUALITY_360P; + else if (strncmp("480p", uyoutube->query.value, uyoutube->query.value_len) == 0) + umitem->quality = UGET_MEDIA_QUALITY_480P; + else if (strncmp("720p", uyoutube->query.value, uyoutube->query.value_len) == 0) + umitem->quality = UGET_MEDIA_QUALITY_720P; + else if (strncmp("1080p", uyoutube->query.value, uyoutube->query.value_len) == 0) + umitem->quality = UGET_MEDIA_QUALITY_1080P; + else + umitem->quality = UGET_MEDIA_QUALITY_UNKNOWN; + } + else if (strncmp(field, "bitrate", uyoutube->query.field_len) == 0) { +// ug_decode_uri(uyoutube->query.value, uyoutube->query.value_len, uyoutube->query.value); + umitem->bitrate = strtol(uyoutube->query.value, NULL, 10); + } + + if (uyoutube->query.value_next) { + // append "&signature=xxxx" to url + if (umitem->data.string) { + temp = ug_strdup_printf("%s" "&signature=%s", + umitem->url, umitem->data.string); + umitem->url = temp; + umitem->data.string = NULL; + } + field = uyoutube->query.value_next; + umitem = NULL; + } + else + field = uyoutube->query.field_next; + } +} + +// ---------------------------------------------------------------------------- +// method 1 +// https://www.youtube.com/get_video_info?video_id=xxxxxxxxxxx +// https://www.youtube.com/get_video_info?video_id=xxxxxxxxxxx&el=vevo&el=embedded&asv=3&sts=15902 + +static void uget_youtube_parse_query(UgetYouTube* uyoutube, UgetMedia* umedia) +{ + if (ug_uri_query_part(&uyoutube->query, uyoutube->buffer.beg) == 0) + return; + + // debug +// printf("%.*s\n", uyoutube->query.field_len, uyoutube->buffer.beg); + + if (uyoutube->query.field_len == 26 && + strncmp(uyoutube->buffer.beg, "url_encoded_fmt_stream_map", 26) == 0) + { + ug_decode_uri(uyoutube->query.value, uyoutube->query.value_len, uyoutube->query.value); + uget_youtube_parse_map(uyoutube, umedia, uyoutube->query.value); + } + else if (uyoutube->query.field_len == 13 && + strncmp(uyoutube->buffer.beg, "adaptive_fmts", 13) == 0) + { + ug_decode_uri(uyoutube->query.value, uyoutube->query.value_len, uyoutube->query.value); + uget_youtube_parse_adaptive_fmts(uyoutube, umedia, uyoutube->query.value); + } + else if (uyoutube->query.field_len == 5 && + strncmp(uyoutube->buffer.beg, "title", 5) == 0) + { + umedia->title = ug_strndup(uyoutube->query.value, uyoutube->query.value_len); + ug_decode_uri(umedia->title, uyoutube->query.value_len, umedia->title); + } + else if (uyoutube->query.field_len == 6 && + strncmp(uyoutube->buffer.beg, "reason", 6) == 0) + { + uyoutube->reason = ug_strndup(uyoutube->query.value, uyoutube->query.value_len); + ug_decode_uri(uyoutube->reason, uyoutube->query.value_len, uyoutube->reason); + } + else if (uyoutube->query.field_len == 6 && + strncmp(uyoutube->buffer.beg, "status", 6) == 0) + { + uyoutube->status = ug_strndup(uyoutube->query.value, uyoutube->query.value_len); + ug_decode_uri(uyoutube->status, uyoutube->query.value_len, uyoutube->status); + } + else if (uyoutube->query.field_len == 9 && + strncmp(uyoutube->buffer.beg, "errorcode", 9) == 0) + { + uyoutube->error_code = strtol(uyoutube->query.value, NULL, 10); + } +} + +static size_t curl_output_youtube(char* beg, size_t size, + size_t nmemb, void* data) +{ + UgetMedia* umedia = data; + UgBuffer* buffer = &((UgetYouTube*)umedia->data)->buffer; + char* end; + char* cur; + + size *= nmemb; + end = beg + size; + + for (cur = beg; cur < end; cur++) { + if (cur[0] == '&') { + ug_buffer_write_data(buffer, beg, cur - beg); + ug_buffer_write_char(buffer, 0); + uget_youtube_parse_query(umedia->data, umedia); + // next field + buffer->cur = buffer->beg; + beg = cur + 1; // + '&' + continue; + } + } + if (cur == end) + ug_buffer_write_data(buffer, beg, cur - beg); + + return size; +} + +int uget_media_grab_youtube_method_1(UgetMedia* umedia, UgetProxy* proxy) +{ + CURL* curl; + CURLcode code; + UgetYouTube* uyoutube; + char* string; + int retry = FALSE; + + uyoutube = umedia->data; + string = ug_strdup_printf( + "https://www.youtube.com/get_video_info?video_id=%s", + uyoutube->video_id); + + curl = curl_easy_init(); + if (proxy) + ug_curl_set_proxy(curl, proxy); + + curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_output_youtube); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, umedia); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); + + do { + curl_easy_setopt(curl, CURLOPT_URL, string); + code = curl_easy_perform(curl); + ug_free(string); + string = NULL; + + switch (code) { + case CURLE_OK: + if (uyoutube->buffer.beg != uyoutube->buffer.cur) { + ug_buffer_write_char(&uyoutube->buffer, 0); + uget_youtube_parse_query(umedia->data, umedia); + } + if (uyoutube->error_code == 100) { + umedia->event = uget_event_new_error( + UGET_EVENT_ERROR_CUSTOM, + _("This video has been removed.")); + goto break_do_loop; + } + break; + + case CURLE_OUT_OF_MEMORY: + umedia->event = uget_event_new_error( + UGET_EVENT_ERROR_OUT_OF_RESOURCE, NULL); + goto break_do_loop; + + default: + umedia->event = uget_event_new_error( + UGET_EVENT_ERROR_CUSTOM, + _("Error occurred during getting video info.")); + goto break_do_loop; + } + +#if 0 + if (retry == TRUE) { + retry = FALSE; + // decrypt_signature + } + else if (uyoutube->status && strcmp(uyoutube->status, "ok") != 0) { + if (uyoutube->reason && strstr(uyoutube->reason, "VEVO") == NULL) + break; + retry = TRUE; + // reset data if we need retry + ug_buffer_restart(&uyoutube->buffer); + ug_free(uyoutube->reason); + uyoutube->reason = NULL; + ug_free(uyoutube->status); + uyoutube->status = NULL; + string = ug_strdup_printf( + "https://www.youtube.com/get_video_info?video_id=%s&el=vevo&el=embedded&asv=3&sts=15902", + uyoutube->video_id); + } +#endif + } while (retry == TRUE); + +break_do_loop: + curl_easy_cleanup(curl); + return umedia->size; +} + +// ---------------------------------------------------------------------------- +// method 2 +// get HTML and parse it + +// ------------------------------------ +// JSON parser + +static UgJsonError ug_json_parse_assets_js(UgJson* json, + const char* name, + const char* value, + void* umedia, void* data) +{ + UgetYouTube* uyoutube; + + uyoutube = ((UgetMedia*)umedia)->data; + uyoutube->js = ug_strdup(value); + + return UG_JSON_ERROR_NONE; +} + +static UgJsonError ug_json_parse_args_map(UgJson* json, + const char* name, + const char* value, + void* umedia, void* data) +{ + UgetYouTube* uyoutube; + + uyoutube = ((UgetMedia*)umedia)->data; + uget_youtube_parse_map(uyoutube, (void*) umedia, value); + + return UG_JSON_ERROR_NONE; +} + +static UgJsonError ug_json_parse_args_adaptive_fmts(UgJson* json, + const char* name, + const char* value, + void* umedia, void* data) +{ + UgetYouTube* uyoutube; + + uyoutube = ((UgetMedia*)umedia)->data; + uget_youtube_parse_adaptive_fmts(uyoutube, (void*) umedia, value); + + return UG_JSON_ERROR_NONE; +} + +static const UgEntry youtube_assets_entry[] = +{ + {"js", 0, + UG_ENTRY_CUSTOM, ug_json_parse_assets_js, NULL}, + {NULL} // null-terminated +}; + +static const UgEntry youtube_args_entry[] = +{ + {"title", offsetof(UgetMedia, title), + UG_ENTRY_STRING, NULL, NULL}, + {"url_encoded_fmt_stream_map", 0, + UG_ENTRY_CUSTOM, ug_json_parse_args_map, NULL}, + {"adaptive_fmts", 0, + UG_ENTRY_CUSTOM, ug_json_parse_args_adaptive_fmts, NULL}, + {NULL} // null-terminated +}; + +static const UgEntry youtube_config_entry[] = +{ + {"assets", 0, + UG_ENTRY_OBJECT, (void*) youtube_assets_entry, NULL}, + {"args", 0, + UG_ENTRY_OBJECT, (void*) youtube_args_entry, NULL}, + {NULL} // null-terminated +}; + +// ------------------------------------ +// HTML parser + +static const UgHtmlParser youtube_html_parser; +static const UgHtmlParser youtube_script_parser; + +static void youtube_start_element(UgHtml* uhtml, + const char* element_name, + const char** attribute_names, + const char** attribute_values, + void* dest, + void* data) +{ + if (strcmp(element_name, "script") == 0) + ug_html_push(uhtml, &youtube_script_parser, dest, data); +} + +static void youtube_end_element(UgHtml* uhtml, + const char* element_name, + void* dest, + void* data) +{ + if (strcmp(element_name, "script") == 0) + ug_html_pop(uhtml); +} + +static void youtube_script_text(UgHtml* uhtml, + const char* text, + int text_len, + UgetMedia* umedia, + UgetYouTube* uyoutube) +{ + UgJson* json; + char* cur; + int cur_len; + int diff; + +// if (strncmp("var ytplayer", text, 12) != 0) +// return; + + for (cur = (char*)text, cur_len = text_len; ; ) { + cur = memchr(cur, 'y', cur_len); + if (cur == NULL) + return; + + cur_len = text_len - (cur - text); + if (cur_len < 15) // strlen("ytplayer.config") + return; + diff = memcmp(cur, "ytplayer.config", 15); + cur++; + cur_len--; + if (diff != 0) + continue; + + cur = memchr(cur, '=', cur_len); + if (cur == NULL) + return; + cur_len = text_len - (cur - text); + cur = memchr(cur, '{', cur_len); + if (cur == NULL) + return; + + break; + } + + json = &uyoutube->json; + ug_json_begin_parse(json); + ug_json_push(json, ug_json_parse_entry, umedia, (void*) youtube_config_entry); + ug_json_push(json, ug_json_parse_object, NULL, NULL); + ug_json_parse(json, cur, text_len - (cur - text)); + ug_json_end_parse(json); +} + +static const UgHtmlParser youtube_script_parser = +{ + NULL, + (UgHtmlParserEndElementFunc) youtube_end_element, + (UgHtmlParserTextFunc) youtube_script_text +}; + +static const UgHtmlParser youtube_html_parser = +{ + youtube_start_element, + NULL, + NULL +}; + +// ------------------------------------ +// curl + +static size_t curl_output_youtube_html(char* text, size_t size, + size_t nmemb, void* data) +{ + UgetMedia* umedia; + UgHtml* uhtml; + + umedia = data; + uhtml = &((UgetYouTube*)umedia->data)->html; + size *= nmemb; + + ug_html_parse(uhtml, text, size); + return size; +} + +int uget_media_grab_youtube_method_2(UgetMedia* umedia, UgetProxy* proxy) +{ + CURL* curl; + CURLcode code; + UgetYouTube* uyoutube; + char* string; + + ug_free(umedia->title); + umedia->title = NULL; + uyoutube = umedia->data; + + // create URL string + string = ug_strdup_printf("https://www.youtube.com/watch?v=%s", + uyoutube->video_id); + // setup option + curl = curl_easy_init(); + if (proxy) + ug_curl_set_proxy(curl, proxy); + curl_easy_setopt(curl, CURLOPT_URL, string); + curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_output_youtube_html); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, umedia); + // run & parse + ug_html_begin_parse(&uyoutube->html); + ug_html_push(&uyoutube->html, &youtube_html_parser, umedia, uyoutube); + code = curl_easy_perform(curl); + ug_html_end_parse(&uyoutube->html); + // free URL string + ug_free(string); + + switch (code) { + case CURLE_OK: + // player URL + if (uyoutube->js && strncmp(uyoutube->js, "//", 2) == 0) { + string = ug_malloc(strlen(uyoutube->js) + 6 + 1); // "https:" + '\0' + string[0] = 0; + strcat(string, "https:"); + strcat(string, uyoutube->js); + ug_free(uyoutube->js); + uyoutube->js = string; + } + break; + + case CURLE_OUT_OF_MEMORY: + umedia->event = uget_event_new_error( + UGET_EVENT_ERROR_OUT_OF_RESOURCE, NULL); + break; + + default: + umedia->event = uget_event_new_error( + UGET_EVENT_ERROR_CUSTOM, + _("Error occurred during getting video web page.")); + break; + } + + curl_easy_cleanup(curl); + return umedia->size; +} + +// ---------------------------------------------------------------------------- +// UgetMedia functions + +int uget_media_is_youtube(UgUri* uuri) +{ + int length; + const char* string; + + // youtube.com + // https://youtube.com/watch?=xxxxxxxxxxx + // https://youtu.be/xxxxxxxxxxx + + length = ug_uri_host(uuri, &string); + if (length >= 11 && strncmp(string + length - 11, "youtube.com", 11) == 0) + { + if (strncmp(uuri->uri + uuri->file , "watch?", 6) == 0) + return TRUE; + } + else if (length >= 8 && strncmp(string + length - 8, "youtu.be", 8) == 0) + { + if (uuri->file != -1) + return TRUE; + } + + return FALSE; +} + +int uget_media_grab_youtube_method_1(UgetMedia* umedia, UgetProxy* proxy); +int uget_media_grab_youtube_method_2(UgetMedia* umedia, UgetProxy* proxy); + +static void erase_duplicate(UgetMedia* umedia) +{ + UgList list; + UgetMediaItem* cur; + UgetMediaItem* cur_next; + UgetMediaItem* matched; + UgetMediaItem* matched_next; + + ug_list_init(&list); + // grab media from YouTube's 'url_encoded_fmt_stream_map' + for (cur = umedia->head; cur; cur = cur_next) { + cur_next = cur->next; + if (cur->order == 1) { + // move items to list + ug_list_remove((UgList*) umedia, (UgLink*) cur); + ug_list_append(&list, (UgLink*) cur); + } + } + // preserve media from YouTube's 'url_encoded_fmt_stream_map' + for (cur = (UgetMediaItem*)list.head; cur; cur = cur_next) { + cur_next = cur->next; + matched = uget_media_match(umedia, UGET_MEDIA_MATCH_2, + cur->quality, cur->type); + for (; matched; matched = matched_next) { + matched_next = matched->next; + ug_list_remove((UgList*) umedia, (UgLink*) matched); + uget_media_item_free(matched); + } + ug_list_remove(&list, (UgLink*) cur); + ug_list_prepend((UgList*) umedia, (UgLink*) cur); + } + ug_list_clear(&list, FALSE); +} + +int uget_media_grab_youtube(UgetMedia* umedia, UgetProxy* proxy) +{ + int n; + char* string; + char* video_id_str; + int video_id_len; + UgUriQuery* query; + UgetYouTube* uyoutube; + + ug_uri_init(&umedia->uuri, umedia->url); + query = &umedia->uquery; + video_id_str = NULL; + video_id_len = 0; + + // get youtube video_id + if (umedia->uuri.query != -1) { + // https://www.youtube.com/watch?v=xxxxxxxxxxx + string = umedia->url + umedia->uuri.query; + while (ug_uri_query_part(query, string)) { + if (strncmp("v", string, query->field_len) == 0 && query->value) { + video_id_str = query->value; + video_id_len = query->value_len; + break; + } + string = query->field_next; + } + } + else { + // http://youtu.be/xxxxxxxxxxx + video_id_len = ug_uri_file(&umedia->uuri, (const char**)&video_id_str); + } + + if (video_id_str == NULL || video_id_len == 0) { + umedia->event = uget_event_new_error(UGET_EVENT_ERROR_CUSTOM, + _("No video_id found in URL of YouTube.")); + return 0; + } + + uyoutube = uget_youtube_new(); + uyoutube->video_id = ug_strndup(video_id_str, video_id_len); + umedia->data = uyoutube; + + n = uget_media_grab_youtube_method_1(umedia, proxy); + if (n == 0 && uyoutube->error_code != 100) { + ug_free(umedia->title); + umedia->title = NULL; + if (umedia->event) { + uget_event_free(umedia->event); + umedia->event = NULL; + } + n = uget_media_grab_youtube_method_2(umedia, proxy); + } + + uget_youtube_free(uyoutube); + erase_duplicate(umedia); + umedia->data = NULL; + + return n; +} diff -Nru uget-2.0.2/uget/UgetNode.c uget-2.2.2/uget/UgetNode.c --- uget-2.0.2/uget/UgetNode.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetNode.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -38,12 +38,6 @@ #include #endif -#ifdef _MSC_VER -#define _CRT_SECURE_NO_WARNINGS -#endif - -#include -#include #include #include #include @@ -52,23 +46,46 @@ #include // g_slice_xxx #endif +static void uget_node_call_fake_filter (UgetNode* parent, UgetNode* sibling, UgetNode* child); +static UgJsonError ug_json_parse_state2group (UgJson* json, + const char* name, const char* value, + void* node, void* none); +static UgJsonError ug_json_parse_name2data (UgJson* json, + const char* name, const char* value, + void* node, void* none); // ---------------------------------------------------------------------------- // UgetNode -static struct UgetNodeNotification notification = { - (UgetNodeFunc) NULL, NULL, NULL, - (UgNotifyFunc) NULL, NULL, 0, NULL +struct UgetNodeNotifier uget_node_default_notifier = +{ + NULL, // UgetNodeFunc inserted; + NULL, // UgetNodeFunc removed; + NULL, // UgNotifyFunc updated; + NULL, // void* data; // extra data for user +}; + +struct UgetNodeControl uget_node_default_control = +{ +// NULL, // struct UgetNodeControl* children; + &uget_node_default_notifier, // struct UgetNodeNotifier* notifier; + {NULL, FALSE}, // struct UgetNodeSort sort; + NULL, // UgetNodeFunc filter; }; const UgEntry UgetNodeEntry[] = { - {"name", offsetof (UgetNode, name), UG_ENTRY_STRING, NULL, NULL}, - {"type", offsetof (UgetNode, type), UG_ENTRY_INT, NULL, NULL}, - {"state", offsetof (UgetNode, state), UG_ENTRY_INT, NULL, NULL}, {"info", offsetof (UgetNode, info), UG_ENTRY_CUSTOM, - ug_json_parse_info, ug_json_write_info}, + ug_json_parse_info_ptr, ug_json_write_info_ptr}, {"children", 0, UG_ENTRY_ARRAY, ug_json_parse_uget_node_children, ug_json_write_uget_node_children}, + + // deprecated + {"name", 0, UG_ENTRY_CUSTOM, + ug_json_parse_name2data, NULL}, + {"state", 0, UG_ENTRY_CUSTOM, + ug_json_parse_state2group, NULL}, + {"data", offsetof (UgetNode, info), UG_ENTRY_CUSTOM, + ug_json_parse_info_ptr, NULL}, {NULL} // null-terminated }; @@ -85,81 +102,76 @@ return node; } +void uget_node_free(UgetNode* node) +{ + uget_node_final(node); +#ifdef HAVE_GLIB + g_slice_free1(sizeof(UgetNode), node); +#else + ug_free(node); +#endif // HAVE_GLIB +} + void uget_node_init (UgetNode* node, UgetNode* node_real) { memset (node, 0, sizeof (UgetNode)); - node->ref_count = 1; - node->notification = ¬ification; + node->control = &uget_node_default_control; if (node_real == NULL) { - node->data = node; // pointer to self - ug_info_init (&node->info, 8, 2); - node->info.at[0].key = (void*) UgetRelationInfo; - node->info.at[1].key = (void*) UgetProgressInfo; + node->base = node; // pointer to self + node->info = ug_info_new(8, 2); + node->info->at[0].key = (void*) UgetRelationInfo; + node->info->at[1].key = (void*) UgetProgressInfo; } else { // this is a fake node. -// node->state = 0; - node->data = node_real->data; - node->type = node_real->type; +// node->group = 0; + node->base = node_real->base; node->real = node_real; node->peer = node_real->fake; node_real->fake = node; - ug_info_init (&node->info, 0, 0); + node->info = node_real->info; + ug_info_ref(node->info); } } -void uget_node_ref (UgetNode* node) -{ - node->ref_count++; -} - -void uget_node_unref (UgetNode* node) +void uget_node_final(UgetNode* node) { - if (--node->ref_count == 0) { - if (node->parent) - uget_node_remove (node->parent, node); - if (node->real) - uget_node_remove_fake (node->real, node); + if (node->parent) + uget_node_remove(node->parent, node); + if (node->real) + uget_node_remove_fake(node->real, node); - uget_node_unref_fake (node); - uget_node_unref_children (node); -// ug_node_unlink ((UgNode*)node); - ug_info_final (&node->info); - ug_free (node->name); - -#ifdef HAVE_GLIB - g_slice_free1 (sizeof (UgetNode), node); -#else - ug_free (node); -#endif // HAVE_GLIB - } + uget_node_clear_fake(node); + uget_node_clear_children(node); +// ug_node_unlink((UgNode*)node); + ug_info_unref(node->info); } -void uget_node_unref_children (UgetNode* node) +void uget_node_clear_children (UgetNode* node) { UgetNode* next; UgetNode* children; for (children = node->children; children; children = next) { next = children->next; - uget_node_unref (children); + uget_node_free(children); } node->children = NULL; } -void uget_node_unref_fake (UgetNode* node) +void uget_node_clear_fake (UgetNode* node) { UgetNode* peer; UgetNode* fake; for (fake = node->fake; fake; fake = peer) { peer = fake->peer; - fake->real = NULL; // speed up uget_node_unref() - uget_node_unref (fake); + fake->real = NULL; // speed up uget_node_free() + uget_node_free(fake); } - node->fake = NULL; // speed up uget_node_unref() + node->fake = NULL; // speed up uget_node_free() } void uget_node_move (UgetNode* node, UgetNode* sibling, UgetNode* child) @@ -173,6 +185,8 @@ fake_sibling = NULL; for (fake_child = child->fake; fake_child; fake_child = fake_child->peer) { node = fake_child->parent; + if (node == NULL) + continue; if (sibling) { for (fake_sibling = sibling->fake; fake_sibling; fake_sibling = fake_sibling->peer) { @@ -192,13 +206,14 @@ UgetNodeFunc inserted; ug_node_insert ((UgNode*) node, (UgNode*) sibling, (UgNode*) child); - child->notification = node->notification; + child->control = node->control; +// child->control = node->control->children; - inserted = node->notification->inserted; + inserted = node->control->notifier->inserted; if (inserted) inserted (node, sibling, child); - uget_node_created (node, sibling, child); + uget_node_call_fake_filter (node, sibling, child); } static void uget_node_unlink_children_real (UgetNode* node) @@ -224,7 +239,7 @@ sibling = child->next; ug_node_remove ((UgNode*) parent, (UgNode*) child); // notify - removed = parent->notification->removed; + removed = parent->control->notifier->removed; if (removed) removed (parent, sibling, child); } @@ -240,7 +255,7 @@ uget_node_unlink_fake_parent (child); uget_node_unlink_children_real (child); - removed = node->notification->removed; + removed = node->control->notifier->removed; if (removed) removed (node, sibling, child); } @@ -250,13 +265,14 @@ UgetNodeFunc inserted; ug_node_append ((UgNode*) node, (UgNode*) child); - child->notification = node->notification; + child->control = node->control; +// child->control = node->control->children; - inserted = node->notification->inserted; + inserted = node->control->notifier->inserted; if (inserted) inserted (node, NULL, child); - uget_node_created (node, NULL, child); + uget_node_call_fake_filter (node, NULL, child); } void uget_node_prepend (UgetNode* node, UgetNode* child) @@ -266,15 +282,75 @@ sibling = node->children; ug_node_prepend ((UgNode*) node, (UgNode*) child); - child->notification = node->notification; + child->control = node->control; +// child->control = node->control->children; - inserted = node->notification->inserted; + inserted = node->control->notifier->inserted; if (inserted) inserted (node, sibling, child); - uget_node_created (node, sibling, child); + uget_node_call_fake_filter (node, sibling, child); } +// used by uget_node_sort() +static void uget_node_qsort(UgetNode** array, int left, int right, UgCompareFunc compare) +{ + UgetNode* temp; + UgetNode* pivot = array[(left + right) / 2]; + int i = left, j = right; + + /* partition */ + while (i <= j) { + while (compare(array[i], pivot) < 0) + i++; + while (compare(array[j], pivot) > 0) + j--; + if (i <= j) { + temp = array[i]; + array[i] = array[j]; + array[j] = temp; + i++; + j--; + } + }; + + /* recursion */ + if (left < j) + uget_node_qsort(array, left, j, compare); + if (i < right) + uget_node_qsort(array, i, right, compare); +} + +void uget_node_sort(UgetNode* node, UgCompareFunc compare, int reversed) +{ + int index; + UgetNode** array; + UgetNode* cur; + + if (node->n_children == 0) + return; + array = (UgetNode**) ug_malloc(sizeof(UgetNode*) * node->n_children); + for (index = 0, cur = node->children; cur; cur = cur->next, index++) + array[index] = cur; + + uget_node_qsort(array, 0, node->n_children -1, compare); + + if (reversed) { + for (index = node->n_children-1; index >=0; index--) { + uget_node_remove(node, array[index]); + uget_node_append(node, array[index]); + } + } + else { + for (index = 0; index < node->n_children; index++) { + uget_node_remove(node, array[index]); + uget_node_append(node, array[index]); + } + } + ug_free(array); +} + +/* void uget_node_sort (UgetNode* node, UgCompareFunc compare, int reversed) { UgetNode* beg; @@ -300,19 +376,20 @@ uget_node_move (node, beg, unsorted); } } + */ void uget_node_insert_sorted (UgetNode* node, UgetNode* child) { UgCompareFunc compare; UgetNode* cur; - int reversed; + int reverse; - compare = node->notification->compare; - reversed = node->notification->reversed; + compare = node->control->sort.compare; + reverse = node->control->sort.reverse; if (compare == NULL) return; - if (reversed == FALSE) { + if (reverse == FALSE) { for (cur = node->children; cur; cur = cur->next) { if (compare (cur, child) > 0) { uget_node_insert (node, cur, child); @@ -404,11 +481,25 @@ if (node->fake == NULL) return; for (child = node->children; child; child = child->next) { - uget_node_created (node, NULL, child); + uget_node_call_fake_filter (node, NULL, child); uget_node_make_fake (child); } } +// fake filter node from real. +// If real node inserted a child node, all fake nodes call this to filter. +static void uget_node_call_fake_filter (UgetNode* parent, UgetNode* sibling, UgetNode* child) +{ + UgetNode* fake; + UgetNodeFunc filter; + + for (fake = parent->fake; fake; fake = fake->peer) { + filter = fake->control->filter; + if (filter) + filter (fake, sibling, child); + } +} + // ---------------------------------------------------------------------------- // position UgetNode* uget_node_nth_fake (UgetNode* node, int nth) @@ -422,15 +513,6 @@ return NULL; } -UgetNode* uget_node_fake_from_state (UgetNode* node, int state) -{ - for (node = node->fake; node; node = node->peer) { - if (node->state & state) - return node; - } - return NULL; -} - int uget_node_fake_position (UgetNode* node, UgetNode* fake) { int position = 0; @@ -443,64 +525,13 @@ } // ---------------------------------------------------------------------------- - -void uget_node_set_name_by_uri (UgetNode* node, UgUri* uuri) -{ - const char* filename; - int length; - - ug_free (node->name); - - if (uuri->scheme_len == 6 && strncmp (uuri->uri, "magnet", 6) == 0) { - length = 0; - filename = strstr (uuri->uri + uuri->file, "dn="); - if (filename) { - filename = filename + 3; - length = strcspn (filename, "&"); - node->name = ug_unescape_uri (filename, length); - if (ug_utf8_get_invalid ((uint8_t*) node->name, NULL) != -1) { - ug_free (node->name); - node->name = ug_strndup (filename, length); - } - } - } - else { - length = ug_uri_file (uuri, &filename); - if (length == 0) - node->name = ug_strdup (uuri->uri); - else - node->name = ug_uri_get_file (uuri); - } -} - -void uget_node_set_name_by_uri_string (UgetNode* node, const char* uri) -{ - UgUri uuri; - - ug_uri_init (&uuri, uri); - uget_node_set_name_by_uri (node, &uuri); -} - -// ---------------------------------------------------------------------------- // notify -void uget_node_created (UgetNode* parent, UgetNode* sibling, UgetNode* child) -{ - UgetNode* fake; - UgetNodeFunc created; - - for (fake = parent->fake; fake; fake = fake->peer) { - created = fake->notification->created; - if (created) - created (fake, sibling, child); - } -} - void uget_node_updated (UgetNode* node) { UgNotifyFunc updated; - updated = node->notification->updated; + updated = node->control->notifier->updated; if (updated) updated (node); // update fake node @@ -538,167 +569,51 @@ } } -// ---------------------------------------------------------------------------- -// callback functions for UgetNode.notification.created -// These functions used by UgetApp - -// sibling_real, child_real -void uget_node_create_split (UgetNode* node, UgetNode* sibling, UgetNode* child_real) -{ - UgetNode* child; - - if (node->parent == NULL) { - // node is root. child_real is category - // - child = uget_node_new (child_real); - child->state = UGET_STATE_RECYCLED; - uget_node_prepend (node, child); - // - child = uget_node_new (child_real); - child->state = UGET_STATE_FINISHED; - uget_node_prepend (node, child); - // - child = uget_node_new (child_real); - child->state = UGET_STATE_QUEUING; - uget_node_prepend (node, child); - // - child = uget_node_new (child_real); - child->state = UGET_STATE_ACTIVE; - uget_node_prepend (node, child); - } - else if (node->parent->parent == NULL) { - // node is category. child_real is download - child = child_real->data; - if ((node->state & child->state) || - ( (child->state & UGET_STATE_CATEGORY) == 0 && - (node->state & UGET_STATE_QUEUING) ) ) - { - // insert sorted - if (node->notification->compare) { - uget_node_insert_sorted (node, uget_node_new (child_real)); - return; - } - - // original order - if (sibling) { - for (sibling = sibling->fake; sibling; sibling = sibling->peer) { - if (sibling->parent == node) - break; - } - } - uget_node_insert (node, sibling, uget_node_new (child_real)); - } - } -} - -void uget_node_create_sorted (UgetNode* node, UgetNode* sibling, UgetNode* child) +// convert old format to new +static UgJsonError ug_json_parse_name2data (UgJson* json, + const char* name, const char* value, + void* nodev, void* none) { - child = uget_node_new (child); - - if (node->parent == NULL) { - // node is root. - uget_node_append (node, child); - } - else if (node->parent->parent == NULL) { - // node is category. - // insert sorted - if (node->notification->compare) { - uget_node_insert_sorted (node, child); - return; - } + UgetNode* node = nodev; + union { + UgetCommon* common; + UgetFiles* files; + } temp; - // original order - if (sibling) { - for (sibling = sibling->fake; sibling; sibling = sibling->peer) { - if (sibling->parent == node) - break; - } - } + if (json->type != UG_JSON_STRING) + return UG_JSON_ERROR_TYPE_NOT_MATCH; - uget_node_insert (node, sibling, child); + // Now root node is category node + if (node->parent == NULL || node->parent->parent == NULL) { + // category or download node + temp.common = ug_info_realloc(node->info, UgetCommonInfo); + temp.common->name = ug_strdup(value); + } + else if (node->parent->parent->parent == NULL) { + // file node + temp.files = ug_info_realloc(node->parent->info, UgetFilesInfo); + uget_files_realloc(temp.files, value); } + return UG_JSON_ERROR_NONE; } -// This one is not the same with uget_node_create_sorted() -// sibling_real, child_real -void uget_node_create_mix (UgetNode* node, UgetNode* sibling, UgetNode* child) +// convert old format to new +static UgJsonError ug_json_parse_state2group (UgJson* json, + const char* name, const char* value, + void* nodev, void* none) { - UgetNode* fake; - - child = uget_node_new (child); - - if (node->parent == NULL) { - // node is root. - uget_node_append (node, child); - } - else if (node->parent->parent == NULL) { - // node is category. - // insert sorted - node = node->parent->children; - if (node->notification->compare) { - // add all download to first category - uget_node_insert_sorted (node, child); - return; - } + UgetRelation* relation; + UgetNode* node = nodev; + int group; - // reorder by state - if ( sibling && - ((sibling->data->state & UGET_STATE_CATEGORY) != - (child->data->state & UGET_STATE_CATEGORY)) ) - { - sibling = NULL; - } - if (node->fake && sibling == NULL) { - switch (child->data->state & UGET_STATE_CATEGORY) { - case UGET_STATE_ACTIVE: - fake = uget_node_fake_from_state (node, UGET_STATE_QUEUING); - if (fake == NULL || fake->children == NULL) - fake = uget_node_fake_from_state (node, UGET_STATE_FINISHED); - if (fake == NULL || fake->children == NULL) - fake = uget_node_fake_from_state (node, UGET_STATE_RECYCLED); - break; - - case UGET_STATE_QUEUING: - default: - fake = uget_node_fake_from_state (node, UGET_STATE_FINISHED); - if (fake == NULL || fake->children == NULL) - fake = uget_node_fake_from_state (node, UGET_STATE_RECYCLED); - break; - - case UGET_STATE_FINISHED: - fake = uget_node_fake_from_state (node, UGET_STATE_RECYCLED); - break; - - case UGET_STATE_RECYCLED: - fake = NULL; - break; - } - if (fake && fake->children) { - uget_node_insert (node, fake->children->real, child); - return; - } - } - - // original order - if (sibling) { - for (sibling = sibling->fake; sibling; sibling = sibling->peer) { -// if (sibling->parent == node) - if (sibling->parent == node) - break; - } + if (json->type != UG_JSON_NUMBER) + return UG_JSON_ERROR_TYPE_NOT_MATCH; + else { + group = strtol(value, NULL, 10); + if (group != 0) { + relation = ug_info_realloc(node->info, UgetRelationInfo); + relation->group = group; } - // insert childNode to first (mixed) category - uget_node_insert (node, sibling, child); } -} - -void uget_node_create_mix_split (UgetNode* node, UgetNode* sibling, UgetNode* child_real) -{ - UgetNode* real; - - // if REAL category node is not first child, this function do nothing. - real = node->real; - if (real->parent == NULL && real->children != child_real) - return; - uget_node_create_split (node, sibling, child_real); + return UG_JSON_ERROR_NONE; } diff -Nru uget-2.0.2/uget/UgetNode-compare.c uget-2.2.2/uget/UgetNode-compare.c --- uget-2.0.2/uget/UgetNode-compare.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetNode-compare.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -44,20 +44,23 @@ int uget_node_compare_name (UgetNode* node1, UgetNode* node2) { - node1 = node1->data; - node2 = node2->data; + UgetCommon* common1; + UgetCommon* common2; - if (node1->name) { - if (node2->name == NULL) + common1 = ug_info_get(node1->info, UgetCommonInfo); + common2 = ug_info_get(node2->info, UgetCommonInfo); + + if (common1 && common1->name) { + if (common2->name == NULL) return 1; } else { - if (node2->name == NULL) - return 0; - else + if (common2 && common2->name) return -1; + else + return 0; } - return strcmp (node1->name, node2->name); + return strcmp (common1->name, common2->name); } int uget_node_compare_complete (UgetNode* node1, UgetNode* node2) @@ -65,10 +68,10 @@ UgetProgress* progress1; UgetProgress* progress2; - node1 = node1->data; - node2 = node2->data; - progress1 = ug_info_get (&node1->info, UgetProgressInfo); - progress2 = ug_info_get (&node2->info, UgetProgressInfo); + node1 = node1->base; + node2 = node2->base; + progress1 = ug_info_get (node1->info, UgetProgressInfo); + progress2 = ug_info_get (node2->info, UgetProgressInfo); if (progress1) { if (progress2 == NULL) return 1; @@ -93,10 +96,10 @@ UgetProgress* progress1; UgetProgress* progress2; - node1 = node1->data; - node2 = node2->data; - progress1 = ug_info_get (&node1->info, UgetProgressInfo); - progress2 = ug_info_get (&node2->info, UgetProgressInfo); + node1 = node1->base; + node2 = node2->base; + progress1 = ug_info_get (node1->info, UgetProgressInfo); + progress2 = ug_info_get (node2->info, UgetProgressInfo); if (progress1) { if (progress2 == NULL) return 1; @@ -121,10 +124,10 @@ UgetProgress* progress1; UgetProgress* progress2; - node1 = node1->data; - node2 = node2->data; - progress1 = ug_info_get (&node1->info, UgetProgressInfo); - progress2 = ug_info_get (&node2->info, UgetProgressInfo); + node1 = node1->base; + node2 = node2->base; + progress1 = ug_info_get (node1->info, UgetProgressInfo); + progress2 = ug_info_get (node2->info, UgetProgressInfo); if (progress1) { if (progress2 == NULL) return 1; @@ -149,10 +152,10 @@ UgetProgress* progress1; UgetProgress* progress2; - node1 = node1->data; - node2 = node2->data; - progress1 = ug_info_get (&node1->info, UgetProgressInfo); - progress2 = ug_info_get (&node2->info, UgetProgressInfo); + node1 = node1->base; + node2 = node2->base; + progress1 = ug_info_get (node1->info, UgetProgressInfo); + progress2 = ug_info_get (node2->info, UgetProgressInfo); if (progress1) { if (progress2 == NULL) return 1; @@ -165,11 +168,11 @@ } // if these are the same, compare name - if (progress1->consume_time == progress2->consume_time) + if (progress1->elapsed == progress2->elapsed) return uget_node_compare_name (node1, node2); - // return diff of consume_time + // return diff of elapsed (consume time) else - return (int)(progress1->consume_time - progress2->consume_time); + return (int)(progress1->elapsed - progress2->elapsed); } int uget_node_compare_left (UgetNode* node1, UgetNode* node2) @@ -177,10 +180,10 @@ UgetProgress* progress1; UgetProgress* progress2; - node1 = node1->data; - node2 = node2->data; - progress1 = ug_info_get (&node1->info, UgetProgressInfo); - progress2 = ug_info_get (&node2->info, UgetProgressInfo); + node1 = node1->base; + node2 = node2->base; + progress1 = ug_info_get (node1->info, UgetProgressInfo); + progress2 = ug_info_get (node2->info, UgetProgressInfo); if (progress1) { if (progress2 == NULL) return 1; @@ -193,11 +196,11 @@ } // if these are the same, compare name - if (progress1->remain_time == progress2->remain_time) + if (progress1->left == progress2->left) return uget_node_compare_name (node1, node2); - // return diff of remain_time + // return diff of left (remain time) else - return (int)(progress1->remain_time - progress2->remain_time); + return (int)(progress1->left - progress2->left); } int uget_node_compare_speed (UgetNode* node1, UgetNode* node2) @@ -205,10 +208,10 @@ UgetProgress* progress1; UgetProgress* progress2; - node1 = node1->data; - node2 = node2->data; - progress1 = ug_info_get (&node1->info, UgetProgressInfo); - progress2 = ug_info_get (&node2->info, UgetProgressInfo); + node1 = node1->base; + node2 = node2->base; + progress1 = ug_info_get (node1->info, UgetProgressInfo); + progress2 = ug_info_get (node2->info, UgetProgressInfo); if (progress1) { if (progress2 == NULL) return 1; @@ -233,10 +236,10 @@ UgetProgress* progress1; UgetProgress* progress2; - node1 = node1->data; - node2 = node2->data; - progress1 = ug_info_get (&node1->info, UgetProgressInfo); - progress2 = ug_info_get (&node2->info, UgetProgressInfo); + node1 = node1->base; + node2 = node2->base; + progress1 = ug_info_get (node1->info, UgetProgressInfo); + progress2 = ug_info_get (node2->info, UgetProgressInfo); if (progress1) { if (progress2 == NULL) return 1; @@ -261,10 +264,10 @@ UgetProgress* progress1; UgetProgress* progress2; - node1 = node1->data; - node2 = node2->data; - progress1 = ug_info_get (&node1->info, UgetProgressInfo); - progress2 = ug_info_get (&node2->info, UgetProgressInfo); + node1 = node1->base; + node2 = node2->base; + progress1 = ug_info_get (node1->info, UgetProgressInfo); + progress2 = ug_info_get (node2->info, UgetProgressInfo); if (progress1) { if (progress2 == NULL) return 1; @@ -289,10 +292,10 @@ UgetProgress* progress1; UgetProgress* progress2; - node1 = node1->data; - node2 = node2->data; - progress1 = ug_info_get (&node1->info, UgetProgressInfo); - progress2 = ug_info_get (&node2->info, UgetProgressInfo); + node1 = node1->base; + node2 = node2->base; + progress1 = ug_info_get (node1->info, UgetProgressInfo); + progress2 = ug_info_get (node2->info, UgetProgressInfo); if (progress1) { if (progress2 == NULL) return 1; @@ -317,10 +320,10 @@ UgetCommon* common1; UgetCommon* common2; - node1 = node1->data; - node2 = node2->data; - common1 = ug_info_get (&node1->info, UgetCommonInfo); - common2 = ug_info_get (&node2->info, UgetCommonInfo); + node1 = node1->base; + node2 = node2->base; + common1 = ug_info_get (node1->info, UgetCommonInfo); + common2 = ug_info_get (node2->info, UgetCommonInfo); if (common1) { if (common2 == NULL) return 1; @@ -342,20 +345,7 @@ int uget_node_compare_parent_name (UgetNode* node1, UgetNode* node2) { - node1 = node1->data->parent; - node2 = node2->data->parent; - - if (node1->name) { - if (node2->name == NULL) - return 1; - } - else { - if (node2->name == NULL) - return 0; - else - return -1; - } - return strcmp (node1->name, node2->name); + return uget_node_compare_name(node1->base->parent, node2->base->parent); } int uget_node_compare_uri (UgetNode* node1, UgetNode* node2) @@ -363,10 +353,10 @@ UgetCommon* common1; UgetCommon* common2; - node1 = node1->data; - node2 = node2->data; - common1 = ug_info_get (&node1->info, UgetCommonInfo); - common2 = ug_info_get (&node2->info, UgetCommonInfo); + node1 = node1->base; + node2 = node2->base; + common1 = ug_info_get (node1->info, UgetCommonInfo); + common2 = ug_info_get (node2->info, UgetCommonInfo); if (common1) { if (common2 == NULL) return 1; @@ -385,10 +375,10 @@ UgetLog* log1; UgetLog* log2; - node1 = node1->data; - node2 = node2->data; - log1 = ug_info_get (&node1->info, UgetLogInfo); - log2 = ug_info_get (&node2->info, UgetLogInfo); + node1 = node1->base; + node2 = node2->base; + log1 = ug_info_get (node1->info, UgetLogInfo); + log2 = ug_info_get (node2->info, UgetLogInfo); if (log1) { if (log2 == NULL) return 1; @@ -413,10 +403,10 @@ UgetLog* log1; UgetLog* log2; - node1 = node1->data; - node2 = node2->data; - log1 = ug_info_get (&node1->info, UgetLogInfo); - log2 = ug_info_get (&node2->info, UgetLogInfo); + node1 = node1->base; + node2 = node2->base; + log1 = ug_info_get (node1->info, UgetLogInfo); + log2 = ug_info_get (node2->info, UgetLogInfo); if (log1) { if (log2 == NULL) return 1; diff -Nru uget-2.0.2/uget/UgetNode-filter.c uget-2.2.2/uget/UgetNode-filter.c --- uget-2.0.2/uget/UgetNode-filter.c 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetNode-filter.c 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,250 @@ +/* + * + * Copyright (C) 2012-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#include +#include + +#define N_SPLIT_GROUPS 4 + +static int split_groups[N_SPLIT_GROUPS] = +{ + UGET_GROUP_ACTIVE, + UGET_GROUP_QUEUING, + UGET_GROUP_FINISHED, + UGET_GROUP_RECYCLED, +}; + +// ---------------------------------------------------------------------------- +// callback functions for UgetNode.control.filter + +// sibling_real, child_real +void uget_node_filter_split (UgetNode* node, UgetNode* sibling, UgetNode* child_real) +{ + UgetRelation* relation; + UgetNode* child; + int group; + + if (node->parent == NULL) { + // node is root. child_real is category + for (group=0; group < N_SPLIT_GROUPS; group++) { + child = uget_node_new (child_real); + uget_node_prepend (node, child); + } + } + else if (node->parent->parent == NULL) { + // node is category. child_real is download + child = child_real->base; + relation = ug_info_realloc(child->info, UgetRelationInfo); + group = uget_node_get_group(node); + if ((relation->group & UGET_GROUP_MAJOR) == 0) + relation->group |= UGET_GROUP_QUEUING; + if (group & relation->group) { + // insert sorted + if (node->control->sort.compare) { + uget_node_insert_sorted (node, uget_node_new (child_real)); + return; + } + + // original order + if (sibling) { + for (sibling = sibling->fake; sibling; sibling = sibling->peer) { + if (sibling->parent == node) + break; + } + } + uget_node_insert (node, sibling, uget_node_new (child_real)); + } + } +} + +void uget_node_filter_sorted (UgetNode* node, UgetNode* sibling, UgetNode* child) +{ + child = uget_node_new (child); + + if (node->parent == NULL) { + // node is root. + uget_node_append (node, child); + } + else if (node->parent->parent == NULL) { + // node is category. + // insert sorted + if (node->control->sort.compare) { + uget_node_insert_sorted (node, child); + return; + } + + // original order + if (sibling) { + for (sibling = sibling->fake; sibling; sibling = sibling->peer) { + if (sibling->parent == node) + break; + } + } + + uget_node_insert (node, sibling, child); + } +} + +// sibling_real, child_real +void uget_node_filter_mix (UgetNode* node, UgetNode* sibling, UgetNode* child) +{ + UgetNode* fake; + UgetRelation* relation_child; + UgetRelation* relation_sibling; + + child = uget_node_new (child); + + if (node->parent == NULL) { + // node is root. + uget_node_append (node, child); + } + else if (node->parent->parent == NULL) { + // node is category. + // insert sorted + node = node->parent->children; + if (node->control->sort.compare) { + // add all download to first category + uget_node_insert_sorted (node, child); + return; + } + + // reorder by group + relation_child = ug_info_realloc(child->info, UgetRelationInfo); + if (sibling) { + relation_sibling = ug_info_realloc(sibling->info, UgetRelationInfo); + if ((relation_sibling->group & UGET_GROUP_MAJOR) != + (relation_child->group & UGET_GROUP_MAJOR)) + { + sibling = NULL; + } + } + // get inserting position by group + if (node->fake && sibling == NULL) { + switch (relation_child->group & UGET_GROUP_MAJOR) { + case UGET_GROUP_ACTIVE: + fake = uget_node_get_split(node, UGET_GROUP_QUEUING); + if (fake == NULL || fake->children == NULL) + fake = uget_node_get_split(node, UGET_GROUP_FINISHED); + if (fake == NULL || fake->children == NULL) + fake = uget_node_get_split(node, UGET_GROUP_RECYCLED); + break; + + case UGET_GROUP_QUEUING: + default: + fake = uget_node_get_split(node, UGET_GROUP_FINISHED); + if (fake == NULL || fake->children == NULL) + fake = uget_node_get_split(node, UGET_GROUP_RECYCLED); + break; + + case UGET_GROUP_FINISHED: + fake = uget_node_get_split(node, UGET_GROUP_RECYCLED); + break; + + case UGET_GROUP_RECYCLED: + fake = NULL; + break; + } + // insert into specified position by group + if (fake && fake->children) { + uget_node_insert (node, fake->children->real, child); + return; + } + } + + // original order + if (sibling) { + for (sibling = sibling->fake; sibling; sibling = sibling->peer) { + if (sibling->parent == node) + break; + } + } + // insert childNode to first (mixed) category + uget_node_insert (node, sibling, child); + } +} + +void uget_node_filter_mix_split (UgetNode* node, UgetNode* sibling, UgetNode* child_real) +{ + UgetNode* real; + + // if REAL category node is not first child, this function do nothing. + real = node->real; + if (real->parent == NULL && real->children != child_real) + return; + uget_node_filter_split (node, sibling, child_real); +} + +// ---------------------------------------------------------------------------- +// helper functions for uget_node_filter_split(), uget_node_filter_mix_split() + +UgetNode* uget_node_get_split(UgetNode* node, int group) +{ + UgetNodeFunc filter; + int nth; + + for (nth = 0, node = node->fake; node; node = node->peer) { + filter = node->control->filter; + if (filter == uget_node_filter_split || + filter == uget_node_filter_mix_split) + { + if (split_groups[nth] & group) + return node; + nth++; // must place here + } + } + return NULL; +} + +int uget_node_get_group(UgetNode* node) +{ + UgetNodeFunc filter; + UgetNode* fake; + int nth; + + if (node->real == NULL) + return UGET_GROUP_NULL; + for (nth = 0, fake = node->real->fake; fake; fake = fake->peer) { + filter = fake->control->filter; + if (filter == uget_node_filter_split || + filter == uget_node_filter_mix_split) + { + if (fake == node) + return split_groups[nth]; + nth++; // must place here + } + } + return UGET_GROUP_NULL; +} diff -Nru uget-2.0.2/uget/UgetNode.h uget-2.2.2/uget/UgetNode.h --- uget-2.0.2/uget/UgetNode.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetNode.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -37,42 +37,7 @@ #ifndef UGET_NODE_H #define UGET_NODE_H -// Uget Tree chart: -// -// Root -+- Category1 -+- Download1 (URI) -+- File -// | | | -// | | + cookie or post file (attachment) -// | | -// | +- Download2 (URI) -+- File1 -// | | (torrent path) | -// | | +- File2 -// | | | -// | | +- torrent file (attachment) -// | | -// | +- Download3 (URI) -+- File -// | (metalink path) | -// | +- metalink file (attachment) -// +-- Category2 -// - -// UgNode is base node type. -// UgetNode extend from UgNode and add pointers (real, fake, and peer). -// -// prev / prev / -// | fake | fake -// | / | / -// | / | / -// |/ |/ -// ... <---> parent <--------------> child <----> ... -// /| /| -// / | / | -// / | / | -// real | real | -// / | / | -// next next -// - -#include // offsetof () +#include // offsetof() #include // int16_t #include #include @@ -82,102 +47,122 @@ extern "C" { #endif -// ---------------------------------------------------------------------------- -// UgetNode +/* ---------------------------------------------------------------------------- + UgetNode: extend from UgNode and add pointers (real, fake, and peer). + + * Tree chart 1: (parent and child nodes) + + Root --+-- Category1 --+-- Download1 (URI) + | | + | | + | | + | +-- Download2 (URI) + | (torrent path) + | + | + +-- Category2 --+-- Download3 (URI) + | (metalink path) + | + | + +-- Download4 (URI) + + * Tree chart 2: + + fake ----- peer -----> fake + / / + prev / prev / + | / | / + | / | / + | / | / + |/ |/ + ... <---> parent <--------------> child <----> ... + /| /| + / | / | + / | / | + / | / | + / | / | + / next / next + / / + real real + */ -typedef struct UgetTree UgetTree; -typedef struct UgetNode UgetNode; +typedef struct UgetNode UgetNode; +/* +typedef struct UgetNodeControl UgetNodeControl; +typedef struct UgetNodeNotifier UgetNodeNotifier; +typedef struct UgetNodeSort UgetNodeSort; + */ typedef void (*UgetNodeFunc)(UgetNode* node, UgetNode* sibling, UgetNode* child); extern const UgEntry UgetNodeEntry[]; typedef enum { - UGET_NODE_ROOT, - UGET_NODE_CATEGORY, - UGET_NODE_DOWNLOAD, - UGET_NODE_FILE, - UGET_NODE_FOLDER, - UGET_NODE_ATTACHMENT, - UGET_NODE_REMOTE_FILE, -} UgetNodeType; + UGET_GROUP_NULL = 0, + UGET_GROUP_QUEUING = 1 << 0, -typedef enum { - UGET_STATE_QUEUING = 1 << 0, + UGET_GROUP_PAUSED = 1 << 1, + UGET_GROUP_ACTIVE = 1 << 2, + UGET_GROUP_COMPLETED = 1 << 3, + UGET_GROUP_UPLOADING = 1 << 4, + UGET_GROUP_ERROR = 1 << 5, + + UGET_GROUP_FINISHED = 1 << 6, + UGET_GROUP_RECYCLED = 1 << 7, + + UGET_GROUP_MAJOR = UGET_GROUP_ACTIVE | UGET_GROUP_QUEUING | UGET_GROUP_FINISHED | UGET_GROUP_RECYCLED, + UGET_GROUP_INACTIVE = UGET_GROUP_PAUSED | UGET_GROUP_ERROR, + UGET_GROUP_UNRUNNABLE = UGET_GROUP_PAUSED | UGET_GROUP_ERROR | UGET_GROUP_FINISHED | UGET_GROUP_RECYCLED, + UGET_GROUP_UNFINISHED = UGET_GROUP_ACTIVE | UGET_GROUP_UPLOADING, +} UgetGroup; - UGET_STATE_PAUSED = 1 << 1, - UGET_STATE_ACTIVE = 1 << 2, - UGET_STATE_COMPLETED = 1 << 3, - UGET_STATE_UPLOADING = 1 << 4, - UGET_STATE_ERROR = 1 << 5, - - UGET_STATE_FINISHED = 1 << 6, - UGET_STATE_RECYCLED = 1 << 7, - - UGET_STATE_CATEGORY = UGET_STATE_ACTIVE | UGET_STATE_QUEUING | UGET_STATE_FINISHED | UGET_STATE_RECYCLED, - UGET_STATE_INACTIVE = UGET_STATE_PAUSED | UGET_STATE_ERROR, - UGET_STATE_UNRUNNABLE = UGET_STATE_PAUSED | UGET_STATE_ERROR | UGET_STATE_FINISHED | UGET_STATE_RECYCLED, - UGET_STATE_UNFINISHED = UGET_STATE_ACTIVE | UGET_STATE_UPLOADING, -} UgetState; - -struct UgetNodeNotification +struct UgetNodeNotifier { -// struct UgetNodeNotification* child; - - // notify fake node when real node create a new child node. - UgetNodeFunc created; - - // notify when node has inserted a node. + // notify when node has inserted a child node. UgetNodeFunc inserted; - // notify when node has removed a node. + // notify when node has removed a child node. UgetNodeFunc removed; - // notify when node has updated. + // notify when a child node has updated. UgNotifyFunc updated; // UgNotifyFunc destroy; - // for sorting - UgCompareFunc compare; - int reversed; - - // extra data - void* data; + void* data; // extra data for user }; -struct UgetNode +struct UgetNodeSort { - UG_NODE_MEMBERS (UgetNode, UgetNode, data); -// UgetNode* data; -// UgetNode* next; -// UgetNode* prev; -// UgetNode* parent; -// UgetNode* children; -// UgetNode* last; -// int n_children; - - UgetNode* real; - UgetNode* fake; - UgetNode* peer; + UgCompareFunc compare; + int reverse; // TRUE or FALSE +}; - int ref_count; +struct UgetNodeControl +{ +// struct UgetNodeControl* children; // control of children node + struct UgetNodeNotifier* notifier; + struct UgetNodeSort sort; + + // filter child of real node and decide how to insert child of fake node. + // If real node inserted a child node, all fake nodes call this to filter. + UgetNodeFunc filter; +}; - char* name; // fake node doesn't use this - int type; // UgetNodeType - int state; // UgetState - UgInfo info; // fake node doesn't use this +extern struct UgetNodeControl uget_node_default_control; +extern struct UgetNodeNotifier uget_node_default_notifier; - struct UgetNodeNotification* notification; -}; +// ---------------------------------------------------------------------------- +// UgetNode functions UgetNode* uget_node_new (UgetNode* node_real); -void uget_node_init (UgetNode* node, UgetNode* node_real); +void uget_node_free (UgetNode* node); -void uget_node_ref (UgetNode* node); -void uget_node_unref (UgetNode* node); -void uget_node_unref_fake (UgetNode* node); -void uget_node_unref_children (UgetNode* node); +void uget_node_init (UgetNode* node, UgetNode* node_real); +void uget_node_final (UgetNode* node); + +void uget_node_clear_fake (UgetNode* node); +void uget_node_clear_children (UgetNode* node); void uget_node_move (UgetNode* node, UgetNode* sibling, UgetNode* child); void uget_node_insert (UgetNode* node, UgetNode* sibling, UgetNode* child); @@ -198,19 +183,13 @@ #define uget_node_child_position(node,child) \ ug_node_child_position((UgNode*)node, (UgNode*)child) UgetNode* uget_node_nth_fake (UgetNode* node, int nth); -UgetNode* uget_node_fake_from_state (UgetNode* node, int state); int uget_node_fake_position (UgetNode* node, UgetNode* fake); -// ---------------------------------------------------------------------------- - -void uget_node_set_name_by_uri (UgetNode* node, UgUri* uuri); -void uget_node_set_name_by_uri_string (UgetNode* node, const char* uri); - // notify -void uget_node_created (UgetNode* node, UgetNode* sibling, UgetNode* child); void uget_node_updated (UgetNode* node); -// for UgetNode.children +// ---------------------------------------------------------------------------- + // JSON parser used with UG_ENTRY_ARRAY. UgJsonError ug_json_parse_uget_node_children (UgJson* json, const char* name, const char* value, @@ -218,10 +197,10 @@ // JSON writer used with UG_ENTRY_ARRAY. void ug_json_write_uget_node_children (UgJson* json, const UgetNode* node); -// ---------------------------------------------------------------------------- -// compare functions for uget_node_sort() -// UgetNode-compare.c - +/* ---------------------------------------------------------------------------- + compare functions for UgetNode.control.sort.compare and uget_node_sort() + these function implemented in UgetNode-compare.c + */ int uget_node_compare_name (UgetNode* node1, UgetNode* node2); int uget_node_compare_complete (UgetNode* node1, UgetNode* node2); int uget_node_compare_size (UgetNode* node1, UgetNode* node2); @@ -238,13 +217,33 @@ int uget_node_compare_added_time (UgetNode* node1, UgetNode* node2); int uget_node_compare_completed_time (UgetNode* node1, UgetNode* node2); -// ---------------------------------------------------------------------------- -// callback functions for UgetNode.notification.created -// These functions used by UgetApp -void uget_node_create_mix (UgetNode* node, UgetNode* sibling, UgetNode* child_real); -void uget_node_create_split (UgetNode* node, UgetNode* sibling, UgetNode* child_real); -void uget_node_create_mix_split (UgetNode* node, UgetNode* sibling, UgetNode* child_real); -void uget_node_create_sorted (UgetNode* node, UgetNode* sibling, UgetNode* child_real); +/* ---------------------------------------------------------------------------- + callback functions for UgetNode.control.filter (they are used by UgetApp) + these function implemented in UgetNode-filter.c + */ +void uget_node_filter_mix (UgetNode* node, UgetNode* sibling, UgetNode* child_real); +void uget_node_filter_split (UgetNode* node, UgetNode* sibling, UgetNode* child_real); +void uget_node_filter_mix_split (UgetNode* node, UgetNode* sibling, UgetNode* child_real); +void uget_node_filter_sorted (UgetNode* node, UgetNode* sibling, UgetNode* child_real); + +/* + uget_node_filter_split() + v + ,-----------. ,--------. + | real node | ---> | filter | --+---> fake node (UGET_GROUP_ACTIVE) + `-----------' `--------' | + +---> fake node (UGET_GROUP_QUEUING) + | + +---> fake node (UGET_GROUP_FINISHED) + | + `---> fake node (UGET_GROUP_RECYCLED) + + * helper functions for uget_node_filter_split(), uget_node_filter_mix_split() + uget_node_get_split() use 'group' (UgetGroup) to find fake node. + uget_node_get_group() return UgetGroup if it is split fake node. + */ +UgetNode* uget_node_get_split(UgetNode* node, int group); +int uget_node_get_group(UgetNode* node); #ifdef __cplusplus @@ -252,19 +251,81 @@ #endif // ---------------------------------------------------------------------------- -// C++11 standard-layout - -#ifdef __cplusplus +// UgetNode structure -namespace Uget +struct UgetNode { + UG_NODE_MEMBERS(UgetNode, UgetNode, base); +/* // ------ UgNode members ------ + UgetNode* base; // the realest UgetNode (real->real->real-> ...) + UgetNode* next; + UgetNode* prev; + UgetNode* parent; + UgetNode* children; + UgetNode* last; + int n_children; + */ -struct TreeMethod {}; + UgetNode* real; + UgetNode* fake; + UgetNode* peer; -struct Node : Ug::NodeMethod, UgetNode -{ + UgInfo* info; + struct UgetNodeControl* control; + +#ifdef __cplusplus + inline void* operator new(size_t size, UgetNode* node_real = NULL) + { return uget_node_new(node_real); } + inline void operator delete(void* p) + { uget_node_free((UgetNode*)p); } + + inline void init(UgetNode* node_real = NULL) + { uget_node_init(this, node_real); } + inline void final() + { uget_node_final(this); } + + inline void clearFake(void) + { uget_node_clear_fake(this); } + inline void clearChildren(void) + { uget_node_clear_children(this); } + + inline void move(UgetNode* sibling, UgetNode* child) + { uget_node_move(this, sibling, child); } + inline void insert(UgetNode* sibling, UgetNode* child) + { uget_node_insert(this, sibling, child); } + inline void remove(UgetNode* child) + { uget_node_remove(this, child); } + inline void append(UgetNode* child) + { uget_node_append(this, child); } + inline void prepend(UgetNode* child) + { uget_node_prepend(this, child); } + + inline UgetNode* nthChild(int nth) + { return uget_node_nth_child(this, nth); } + inline int childPosition(UgetNode* child) + { return uget_node_child_position(this, child); } + + inline UgetNode* nthFake(int nth) + { return uget_node_nth_fake(this, nth); } + inline int fakePosition(UgetNode* fake) + { return uget_node_fake_position(this, fake); } + + inline UgetNode* getSplit(int group) + { return uget_node_get_split(this, group); } + inline int getGroup() + { return uget_node_get_group(this); } +#endif // __cplusplus }; +// ---------------------------------------------------------------------------- +// C++11 standard-layout + +#ifdef __cplusplus + +namespace Uget +{ +// This one is for directly use only. You can NOT derived it. +typedef struct UgetNode Node; }; // namespace Uget #endif // __cplusplus diff -Nru uget-2.0.2/uget/UgetOption.c uget-2.2.2/uget/UgetOption.c --- uget-2.0.2/uget/UgetOption.c 2015-08-18 01:17:31.000000000 +0000 +++ uget-2.2.2/uget/UgetOption.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -108,37 +108,37 @@ UgetFtp* ftp; } temp; - if (mem_is_zero ((char*) &ivalue->common, sizeof (ivalue->common)) == FALSE) { - temp.common = ug_info_realloc (info, UgetCommonInfo); + if (mem_is_zero((char*) &ivalue->common, sizeof(ivalue->common)) == FALSE) { + temp.common = ug_info_realloc(info, UgetCommonInfo); temp.common->keeping.enable = TRUE; if (ivalue->common.folder) { - ug_free (temp.common->folder); + ug_free(temp.common->folder); temp.common->folder = ivalue->common.folder; temp.common->keeping.folder = TRUE; ivalue->common.folder = NULL; } if (ivalue->common.file) { - ug_free (temp.common->file); + ug_free(temp.common->file); temp.common->file = ivalue->common.file; temp.common->keeping.file = TRUE; ivalue->common.file = NULL; } if (ivalue->common.user) { - ug_free (temp.common->user); + ug_free(temp.common->user); temp.common->user = ivalue->common.user; temp.common->keeping.user = TRUE; ivalue->common.user = NULL; } if (ivalue->common.password) { - ug_free (temp.common->password); + ug_free(temp.common->password); temp.common->password = ivalue->common.password; temp.common->keeping.password = TRUE; ivalue->common.password = NULL; } } - if (mem_is_zero ((char*) &ivalue->proxy, sizeof (ivalue->proxy)) == FALSE) { - temp.proxy = ug_info_realloc (info, UgetProxyInfo); + if (mem_is_zero((char*) &ivalue->proxy, sizeof(ivalue->proxy)) == FALSE) { + temp.proxy = ug_info_realloc(info, UgetProxyInfo); temp.proxy->keeping.enable = TRUE; if (ivalue->proxy.type) { temp.proxy->type = ivalue->proxy.type; @@ -146,7 +146,7 @@ ivalue->proxy.type = 0; } if (ivalue->proxy.host) { - ug_free (temp.proxy->host); + ug_free(temp.proxy->host); temp.proxy->host = ivalue->proxy.host; temp.proxy->keeping.host = TRUE; ivalue->proxy.host = NULL; @@ -157,83 +157,83 @@ ivalue->proxy.port = 0; } if (ivalue->proxy.user) { - ug_free (temp.proxy->user); + ug_free(temp.proxy->user); temp.proxy->user = ivalue->proxy.user; temp.proxy->keeping.user = TRUE; ivalue->proxy.user = NULL; } if (ivalue->proxy.password) { - ug_free (temp.proxy->password); + ug_free(temp.proxy->password); temp.proxy->password = ivalue->proxy.password; temp.proxy->keeping.password = TRUE; ivalue->proxy.password = NULL; } } - if (mem_is_zero ((char*) &ivalue->http, sizeof (ivalue->http)) == FALSE) { - temp.http = ug_info_realloc (info, UgetHttpInfo); + if (mem_is_zero((char*) &ivalue->http, sizeof(ivalue->http)) == FALSE) { + temp.http = ug_info_realloc(info, UgetHttpInfo); temp.http->keeping.enable = TRUE; if (ivalue->http.user) { - ug_free (temp.http->user); + ug_free(temp.http->user); temp.http->user = ivalue->http.user; temp.http->keeping.user = TRUE; ivalue->http.user = NULL; } if (ivalue->http.password) { - ug_free (temp.http->password); + ug_free(temp.http->password); temp.http->password = ivalue->http.password; temp.http->keeping.password = TRUE; ivalue->http.password = NULL; } if (ivalue->http.referrer) { - ug_free (temp.http->referrer); + ug_free(temp.http->referrer); temp.http->referrer = ivalue->http.referrer; temp.http->keeping.referrer = TRUE; ivalue->http.referrer = NULL; } if (ivalue->http.user_agent) { - ug_free (temp.http->user_agent); + ug_free(temp.http->user_agent); temp.http->user_agent = ivalue->http.user_agent; temp.http->keeping.user_agent = TRUE; ivalue->http.user_agent = NULL; } if (ivalue->http.cookie_data) { - ug_free (temp.http->cookie_data); + ug_free(temp.http->cookie_data); temp.http->cookie_data = ivalue->http.cookie_data; temp.http->keeping.cookie_data = TRUE; ivalue->http.cookie_data = NULL; } if (ivalue->http.cookie_file) { - ug_free (temp.http->cookie_file); + ug_free(temp.http->cookie_file); temp.http->cookie_file = ivalue->http.cookie_file; temp.http->keeping.cookie_file = TRUE; ivalue->http.cookie_file = NULL; } if (ivalue->http.post_data) { - ug_free (temp.http->post_data); + ug_free(temp.http->post_data); temp.http->post_data = ivalue->http.post_data; temp.http->keeping.post_data = TRUE; ivalue->http.post_data = NULL; } if (ivalue->http.post_file) { - ug_free (temp.http->post_file); + ug_free(temp.http->post_file); temp.http->post_file = ivalue->http.post_file; temp.http->keeping.post_file = TRUE; ivalue->http.post_file = NULL; } } - if (mem_is_zero ((char*) &ivalue->ftp, sizeof (ivalue->ftp)) == FALSE) { - temp.ftp = ug_info_realloc (info, UgetFtpInfo); + if (mem_is_zero((char*) &ivalue->ftp, sizeof(ivalue->ftp)) == FALSE) { + temp.ftp = ug_info_realloc(info, UgetFtpInfo); temp.ftp->keeping.enable = TRUE; if (ivalue->ftp.user) { - ug_free (temp.ftp->user); + ug_free(temp.ftp->user); temp.ftp->user = ivalue->ftp.user; temp.ftp->keeping.user = TRUE; ivalue->ftp.user = NULL; } if (ivalue->ftp.password) { - ug_free (temp.ftp->password); + ug_free(temp.ftp->password); temp.ftp->password = ivalue->ftp.password; temp.ftp->keeping.password = TRUE; ivalue->ftp.password = NULL; diff -Nru uget-2.0.2/uget/UgetOption.h uget-2.2.2/uget/UgetOption.h --- uget-2.0.2/uget/UgetOption.h 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uget/UgetOption.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/uget/UgetPluginAgent.c uget-2.2.2/uget/UgetPluginAgent.c --- uget-2.0.2/uget/UgetPluginAgent.c 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetPluginAgent.c 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,300 @@ +/* + * + * Copyright (C) 2016-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#include +#include +#include +#include + +#if defined _WIN32 || defined _WIN64 +#include +#endif // _WIN32 || _WIN64 + +// ---------------------------------------------------------------------------- +// global data + +static struct +{ + const UgetPluginInfo* default_plugin; + int ref_count; +} global = {NULL, 0}; + +// ---------------------------------------------------------------------------- +// global functions + +UgetResult uget_plugin_agent_global_init(void) +{ + if (global.default_plugin == NULL) { +#if defined _WIN32 || defined _WIN64 + WSADATA WSAData; + WSAStartup(MAKEWORD(2, 2), &WSAData); +#endif // _WIN32 || _WIN64 + + if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) { +#if defined _WIN32 || defined _WIN64 + WSACleanup(); +#endif + return UGET_RESULT_ERROR; + } + global.default_plugin = UgetPluginCurlInfo; + } + global.ref_count++; + return UGET_RESULT_OK; +} + +void uget_plugin_agent_global_ref(void) +{ + global.ref_count++; +} + +void uget_plugin_agent_global_unref(void) +{ + if (global.default_plugin == NULL) + return; + + global.ref_count--; + if (global.ref_count == 0) { + global.default_plugin = NULL; + curl_global_cleanup(); +#if defined _WIN32 || defined _WIN64 + WSACleanup(); +#endif + } +} + +UgetResult uget_plugin_agent_global_set(int option, void* parameter) +{ + switch (option) { + case UGET_PLUGIN_GLOBAL_INIT: + // do global initialize/finalize here + if (parameter) + return uget_plugin_agent_global_init(); + else + uget_plugin_agent_global_unref(); + break; + + case UGET_PLUGIN_AGENT_GLOBAL_PLUGIN: + global.default_plugin = parameter; + break; + + default: + return UGET_RESULT_UNSUPPORT; + } + + return UGET_RESULT_OK; +} + +UgetResult uget_plugin_agent_global_get(int option, void* parameter) +{ + switch (option) { + case UGET_PLUGIN_GLOBAL_INIT: + if (parameter) + *(int*)parameter = global.ref_count; + break; + + case UGET_PLUGIN_AGENT_GLOBAL_PLUGIN: + *(void**)parameter = (void*)global.default_plugin; + break; + + default: + return UGET_RESULT_UNSUPPORT; + } + + return UGET_RESULT_OK; +} + +// ---------------------------------------------------------------------------- +// instance functions + +void uget_plugin_agent_init(UgetPluginAgent* plugin) +{ + if (global.ref_count == 0) + uget_plugin_agent_global_init(); + else + uget_plugin_agent_global_ref(); +} + +void uget_plugin_agent_final(UgetPluginAgent* plugin) +{ + // extent data and plug-in + if (plugin->target_info) + ug_info_unref(plugin->target_info); + if (plugin->target_plugin) + uget_plugin_unref(plugin->target_plugin); + + uget_plugin_agent_global_unref(); +} + +int uget_plugin_agent_ctrl(UgetPluginAgent* plugin, int code, void* data) +{ + switch (code) { + case UGET_PLUGIN_CTRL_START: + return FALSE; + + case UGET_PLUGIN_CTRL_STOP: + plugin->paused = TRUE; + return TRUE; + + case UGET_PLUGIN_CTRL_SPEED: + // speed control + return uget_plugin_agent_ctrl_speed(plugin, data); + + // state ---------------- + case UGET_PLUGIN_GET_STATE: + *(int*)data = (plugin->stopped) ? FALSE : TRUE; + return TRUE; + + default: + break; + } + return FALSE; +} + +int uget_plugin_agent_ctrl_speed(UgetPluginAgent* plugin, int* speed) +{ + UgetCommon* common; + int value; + + // notify plug-in that speed limit has been changed + if (plugin->limit[0] != speed[0] || plugin->limit[1] != speed[1]) + plugin->limit_changed = TRUE; + // decide speed limit by user specified data. + if (plugin->target_info) + common = ug_info_get(plugin->target_info, UgetCommonInfo); + else + common = NULL; + + if (common == NULL) { + plugin->limit[0] = speed[0]; + plugin->limit[1] = speed[1]; + } + else { + // download + value = speed[0]; + if (common->max_download_speed) { + if (value > common->max_download_speed || value == 0) { + value = common->max_download_speed; + plugin->limit_changed = TRUE; + } + } + plugin->limit[0] = value; + // upload + value = speed[1]; + if (common->max_upload_speed) { + if (value > common->max_upload_speed || value == 0) { + value = common->max_upload_speed; + plugin->limit_changed = TRUE; + } + } + plugin->limit[1] = value; + } + return plugin->limit_changed; +} + +// ---------------------------------------------------------------------------- +// sync functions + +void uget_plugin_agent_sync_common(UgetPluginAgent* plugin, + UgetCommon* common, + UgetCommon* target) +{ + if (target == NULL) + target = ug_info_realloc(plugin->target_info, UgetCommonInfo); + + // sync speed limit from common to target + if (target->max_upload_speed != common->max_upload_speed || + target->max_download_speed != common->max_download_speed) + { + target->max_upload_speed = common->max_upload_speed; + target->max_download_speed = common->max_download_speed; + plugin->limit[1] = common->max_upload_speed; + plugin->limit[0] = common->max_download_speed; + uget_plugin_agent_ctrl_speed(plugin, plugin->limit); + } + target->max_connections = common->max_connections; + + target->retry_limit = common->retry_limit; + common->retry_count = target->retry_count; +} + +void uget_plugin_agent_sync_progress(UgetPluginAgent* plugin, + UgetProgress* progress, + UgetProgress* target) +{ + if (target == NULL) + target = ug_info_realloc(plugin->target_info, UgetProgressInfo); + + // sync progress from target to progress + progress->complete = target->complete; + progress->total = target->total; + progress->download_speed = target->download_speed; + progress->upload_speed = target->upload_speed; + progress->uploaded = target->uploaded; + progress->elapsed = target->elapsed; + progress->percent = target->percent; + progress->left = target->left; +} + +// ---------------------------------------------------------------------------- +// thread functions + +int uget_plugin_agent_start(UgetPluginAgent* plugin, + UgThreadFunc thread_func) +{ + UgThread thread; + int ok; + + // try to start thread + plugin->paused = FALSE; + plugin->stopped = FALSE; + uget_plugin_ref((UgetPlugin*) plugin); + ok = ug_thread_create(&thread, (UgThreadFunc) thread_func, plugin); + if (ok == UG_THREAD_OK) + ug_thread_unjoin(&thread); + else { + // failed to start thread ----------------- + plugin->paused = TRUE; + plugin->stopped = TRUE; + // post error message and decreases the reference count + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(UGET_EVENT_ERROR_THREAD_CREATE_FAILED, + NULL)); + uget_plugin_unref((UgetPlugin*) plugin); + return FALSE; + } + + return TRUE; +} diff -Nru uget-2.0.2/uget/UgetPluginAgent.h uget-2.2.2/uget/UgetPluginAgent.h --- uget-2.0.2/uget/UgetPluginAgent.h 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetPluginAgent.h 2019-05-19 16:49:06.000000000 +0000 @@ -0,0 +1,172 @@ +/* + * + * Copyright (C) 2016-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#ifndef UGET_PLUGIN_AGENT_H +#define UGET_PLUGIN_AGENT_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct UgetPluginAgent UgetPluginAgent; + +typedef enum { + UGET_PLUGIN_AGENT_GLOBAL = UGET_PLUGIN_GLOBAL_DERIVED, // begin + + UGET_PLUGIN_AGENT_GLOBAL_PLUGIN, // set parameter = (UgetPluginInfo*) + + UGET_PLUGIN_AGENT_GLOBAL_DERIVED, +} UgetPluginAgentGlobalCode; + +/* ---------------------------------------------------------------------------- + UgetPluginAgent: It derived from UgetPlugin. + It use other(curl/aria2) plug-in to download file. + + UgType + | + `--- UgetPlugin + | + `--- UgetPluginAgent + */ + +#define UGET_PLUGIN_AGENT_MEMBERS \ + UGET_PLUGIN_MEMBERS; \ + UgInfo* target_info; \ + UgetPlugin* target_plugin; \ + int limit[2]; \ + uint8_t limit_changed:1; \ + uint8_t paused:1; \ + uint8_t stopped:1 + +struct UgetPluginAgent +{ + UGET_PLUGIN_AGENT_MEMBERS; +/* // ------ UgType members ------ + const UgetPluginInfo* info; + + // ------ UgetPlugin members ------ + UgetEvent* messages; + UgMutex mutex; + int ref_count; + + // ------ UgetPluginAgent members ------ + // This plug-in use other plug-in to download files, + // so we need extra UgetPlugin and UgInfo. + + // plugin->target_info is a copy of UgInfo that store in UgetApp + UgInfo* target_info; + // target_plugin use target_info to download + UgetPlugin* target_plugin; + + // speed limit control + // limit[0] = download speed limit + // limit[1] = upload speed limit + int limit[2]; + uint8_t limit_changed:1; // speed limit changed by user or program + + // control flags + uint8_t paused:1; // paused by user or program + uint8_t stopped:1; // all downloading thread are stopped + */ +}; + + +#ifdef __cplusplus +} +#endif + +// global functions ------------------- +UgetResult uget_plugin_agent_global_init (void); +void uget_plugin_agent_global_ref (void); +void uget_plugin_agent_global_unref (void); + +UgetResult uget_plugin_agent_global_set (int option, void* parameter); +UgetResult uget_plugin_agent_global_get (int option, void* parameter); + +// instance functions ----------------- +void uget_plugin_agent_init (UgetPluginAgent* plugin); +void uget_plugin_agent_final (UgetPluginAgent* plugin); + +int uget_plugin_agent_ctrl (UgetPluginAgent* plugin, int code, void* data); +int uget_plugin_agent_ctrl_speed (UgetPluginAgent* plugin, int* speed); + +// sync functions --------------------- +// sync common data (include speed limit) between 'common' and 'target' +// if parameter 'target' is NULL, it get/alloc 'target' from plugin->target_info +void uget_plugin_agent_sync_common (UgetPluginAgent* plugin, + UgetCommon* common, + UgetCommon* target); + +// sync progress data from 'target' to 'progress' +// if parameter 'target' is NULL, it get/alloc 'target' from plugin->target_info +void uget_plugin_agent_sync_progress (UgetPluginAgent* plugin, + UgetProgress* progress, + UgetProgress* target); + +// thread functions ------------------- +int uget_plugin_agent_start (UgetPluginAgent* plugin, + UgThreadFunc thread_func); + +// ---------------------------------------------------------------------------- +// C++11 standard-layout + +#ifdef __cplusplus + +namespace Uget +{ + +// This one is for derived use only. No data members here. +// Your derived struct/class must be C++11 standard-layout +struct PluginAgentMethod : Uget::PluginMethod +{ + inline void syncCommon(UgetCommon* common, UgetCommon* target) + { uget_plugin_agent_sync_common((UgetPluginAgent*)this, common, target); } + inline void syncProgress(UgetProgress* progress, UgetProgress* target) + { uget_plugin_agent_sync_progress((UgetPluginAgent*)this, progress, target); } +}; + +// This one is for directly use only. You can NOT derived it. +struct PluginAgent : Uget::PluginAgentMethod, UgetPluginAgent {}; + +}; // namespace Uget + +#endif // __cplusplus + + +#endif // End of UGET_PLUGIN_AGENT_H + diff -Nru uget-2.0.2/uget/UgetPluginAria2.c uget-2.2.2/uget/UgetPluginAria2.c --- uget-2.0.2/uget/UgetPluginAria2.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetPluginAria2.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2011-2015 by C.H. Huang + * Copyright (C) 2011-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -50,7 +50,7 @@ #ifdef HAVE_LIBPWMD #include "pwmd.h" -static gboolean uget_plugin_aria2_set_proxy_pwmd (UgetPluginAria2 *plugin, UgValue* options); +static gboolean uget_plugin_aria2_set_proxy_pwmd (UgetPluginAria2 *plugin, UgInfo* info, UgValue* options); #endif #if defined _WIN32 || defined _WIN64 @@ -69,9 +69,14 @@ #define _(x) x #endif -static void aria2_file_clear (Aria2File* afile); -static void* aria2_file_array_find (Aria2FileArray* afiles, const char* path); -static void* ug_file_to_base64 (const char* file, int* length); +static UgJsonrpcObject* alloc_speed_request(UgetPluginAria2* plugin); +static void recycle_speed_request(UgJsonrpcObject* object); +static UgJsonrpcObject* alloc_status_request(UgValue** gid); +static void recycle_status_request(UgJsonrpcObject* object); + +static void* ug_file_to_base64(const char* file, int* length); +static int decide_file_type(UgetPluginAria2* plugin); +static void add_uri_mirrors(UgValue* varray, const char* mirrors); enum UgetPluginAria2UriType { URI_UNSUPPORTED, @@ -95,14 +100,15 @@ } Aria2Status; // ---------------------------------------------------------------------------- -// UgetPluginInfo (derived from UgDataInfo) +// UgetPluginInfo (derived from UgTypeInfo) -static void plugin_init (UgetPluginAria2* plugin); -static void plugin_final (UgetPluginAria2* plugin); -static int plugin_ctrl (UgetPluginAria2* plugin, int code, void* data); -static int plugin_sync (UgetPluginAria2* plugin); -static UgetResult global_set (int code, void* parameter); -static UgetResult global_get (int code, void* parameter); +static void plugin_init (UgetPluginAria2* plugin); +static void plugin_final(UgetPluginAria2* plugin); +static int plugin_ctrl (UgetPluginAria2* plugin, int code, void* data); +static int plugin_accept(UgetPluginAria2* plugin, UgInfo* node_info); +static int plugin_sync (UgetPluginAria2* plugin, UgInfo* node_info); +static UgetResult global_set(int code, void* parameter); +static UgetResult global_get(int code, void* parameter); static const char* schemes[] = {"http", "https", "ftp", "magnet", NULL}; static const char* types[] = {"torrent", "metalink", "meta4", NULL}; @@ -110,18 +116,17 @@ static const UgetPluginInfo UgetPluginAria2InfoStatic = { "aria2", - sizeof (UgetPluginAria2), - (const UgEntry*) NULL, + sizeof(UgetPluginAria2), (UgInitFunc) plugin_init, (UgFinalFunc) plugin_final, - (UgAssignFunc) NULL, - (UgetPluginCtrlFunc) plugin_ctrl, + (UgetPluginSyncFunc) plugin_accept, (UgetPluginSyncFunc) plugin_sync, + (UgetPluginCtrlFunc) plugin_ctrl, NULL, schemes, types, - (UgetPluginSetFunc) global_set, - (UgetPluginGetFunc) global_get + (UgetPluginGlobalFunc) global_set, + (UgetPluginGlobalFunc) global_get }; // extern const UgetPluginInfo* UgetPluginAria2Info = &UgetPluginAria2InfoStatic; @@ -131,26 +136,26 @@ static struct { - struct UgetAria2* data; - int ref_count; + UgetAria2* data; + int ref_count; } global = {NULL, 0}; -static UgetResult global_init (void) +static UgetResult global_init(void) { if (global.data == NULL) { - global.data = uget_aria2_new (); - uget_aria2_start_thread (global.data); + global.data = uget_aria2_new(); + uget_aria2_start_thread(global.data); } global.ref_count++; return UGET_RESULT_OK; } -static void global_ref (void) +static void global_ref(void) { global.ref_count++; } -static void global_unref (void) +static void global_unref(void) { if (global.data == NULL) return; @@ -158,77 +163,77 @@ global.ref_count--; if (global.ref_count == 0) { if (global.data->shutdown) - uget_aria2_shutdown (global.data); - uget_aria2_stop_thread (global.data); - uget_aria2_unref (global.data); + uget_aria2_shutdown(global.data); + uget_aria2_stop_thread(global.data); + uget_aria2_unref(global.data); global.data = NULL; } } -static UgetResult global_set (int option, void* parameter) +static UgetResult global_set(int option, void* parameter) { UgetPluginAria2Setting* setting; switch (option) { - case UGET_PLUGIN_INIT: + case UGET_PLUGIN_GLOBAL_INIT: // do global initialize/uninitialize here if (parameter) - return global_init (); + return global_init(); else - global_unref (); + global_unref(); break; - case UGET_PLUGIN_SPEED_LIMIT: + case UGET_PLUGIN_GLOBAL_SPEED_LIMIT: if (global.data) { - uget_aria2_set_speed (global.data, + uget_aria2_set_speed(global.data, ((int*)parameter)[0], ((int*)parameter)[1]); } break; - case UGET_PLUGIN_ARIA2_URI: + case UGET_PLUGIN_ARIA2_GLOBAL_URI: if (parameter) - uget_aria2_set_uri (global.data, (char*) parameter); + uget_aria2_set_uri(global.data, (char*) parameter); break; - case UGET_PLUGIN_ARIA2_PATH: - uget_aria2_set_path (global.data, (char*) parameter); + case UGET_PLUGIN_ARIA2_GLOBAL_PATH: + uget_aria2_set_path(global.data, (char*) parameter); break; - case UGET_PLUGIN_ARIA2_ARGUMENT: - uget_aria2_set_args (global.data, (char*) parameter); + case UGET_PLUGIN_ARIA2_GLOBAL_ARGUMENT: + uget_aria2_set_args(global.data, (char*) parameter); break; - case UGET_PLUGIN_ARIA2_TOKEN: - uget_aria2_set_token (global.data, (char*) parameter); + case UGET_PLUGIN_ARIA2_GLOBAL_TOKEN: + uget_aria2_set_token(global.data, (char*) parameter); break; - case UGET_PLUGIN_ARIA2_LAUNCH: + case UGET_PLUGIN_ARIA2_GLOBAL_LAUNCH: if (parameter != NULL) - if (uget_aria2_launch (global.data) == FALSE) + if (uget_aria2_launch(global.data) == FALSE) return UGET_RESULT_ERROR; break; - case UGET_PLUGIN_ARIA2_SHUTDOWN: + case UGET_PLUGIN_ARIA2_GLOBAL_SHUTDOWN: if (parameter) global.data->shutdown = TRUE; else global.data->shutdown = FALSE; break; - case UGET_PLUGIN_ARIA2_SHUTDOWN_NOW: + case UGET_PLUGIN_ARIA2_GLOBAL_SHUTDOWN_NOW: if (parameter && global.data) - uget_aria2_shutdown (global.data); + uget_aria2_shutdown(global.data); break; - case UGET_PLUGIN_SETTING: + case UGET_PLUGIN_GLOBAL_SETTING: setting = parameter; global.data->polling_interval = setting->polling_interval; global.data->shutdown = setting->shutdown; - uget_aria2_set_uri (global.data, setting->uri); - uget_aria2_set_path (global.data, setting->path); - uget_aria2_set_args (global.data, setting->arguments); + uget_aria2_set_uri (global.data, setting->uri); + uget_aria2_set_path(global.data, setting->path); + uget_aria2_set_args(global.data, setting->arguments); if (setting->launch) - uget_aria2_launch (global.data); + uget_aria2_launch(global.data); break; default: @@ -238,20 +243,20 @@ return UGET_RESULT_OK; } -static UgetResult global_get (int option, void* parameter) +static UgetResult global_get(int option, void* parameter) { switch (option) { - case UGET_PLUGIN_INIT: + case UGET_PLUGIN_GLOBAL_INIT: if (parameter) *(int*)parameter = global.data ? TRUE : FALSE; break; - case UGET_PLUGIN_ERROR_CODE: + case UGET_PLUGIN_GLOBAL_ERROR_CODE: if (parameter) *(int*)parameter = global.data->error; break; - case UGET_PLUGIN_ARIA2_LAUNCH: + case UGET_PLUGIN_ARIA2_GLOBAL_LAUNCH: if (parameter) *(int*)parameter = global.data->launched; break; @@ -273,7 +278,7 @@ N_("aria2: an unknown error occurred."), N_("aria2: time out occurred."), N_("aria2: resource was not found."), - N_("aria2 saw the specfied number of 'resource not found' error. See --max-file-not-found option"), + N_("aria2 saw the specified number of 'resource not found' error. See --max-file-not-found option"), N_("aria2: speed was too slow."), N_("aria2: network problem occurred."), N_("aria2: unfinished downloads."), @@ -306,135 +311,133 @@ static const char* aria2_no_response = N_("No response. Is aria2 shutdown?"); -static void plugin_init (UgetPluginAria2* plugin) +static void plugin_init(UgetPluginAria2* plugin) { if (global.data == NULL) - global_init (); + global_init(); else - global_ref (); + global_ref(); - ug_array_init (&plugin->gids, sizeof (char*), 16); - ug_array_init (&plugin->files, sizeof (Aria2File), 8); + ug_array_init(&plugin->gids, sizeof(char*), 16); plugin->stopped = TRUE; + plugin->paused = TRUE; plugin->synced = TRUE; } -static void plugin_final (UgetPluginAria2* plugin) +static void plugin_final(UgetPluginAria2* plugin) { - ug_array_foreach_str (&plugin->gids, (UgForeachFunc) ug_free, NULL); - ug_array_clear (&plugin->gids); - ug_array_foreach (&plugin->files, (UgForeachFunc) aria2_file_clear, NULL); - ug_array_clear (&plugin->files); + ug_array_foreach_str(&plugin->gids, (UgForeachFunc) ug_free, NULL); + ug_array_clear(&plugin->gids); + // clear UgetFiles + if (plugin->files) + ug_data_free(plugin->files); // clear and recycle start_request object if (plugin->start_request) { - ug_value_foreach (&plugin->start_request->params, ug_value_set_name, NULL); - uget_aria2_recycle (global.data, plugin->start_request); + ug_value_foreach(&plugin->start_request->params, ug_value_set_name, NULL); + uget_aria2_recycle(global.data, plugin->start_request); } - // unref node - if (plugin->node) - uget_node_unref (plugin->node); - global_unref (); + global_unref(); } // ---------------------------------------------------------------------------- // plugin_ctrl -static int plugin_ctrl_speed (UgetPluginAria2* plugin, int* speed); -static int plugin_start (UgetPluginAria2* plugin, UgetNode* node); +static int plugin_ctrl_speed(UgetPluginAria2* plugin, int* speed); +static int plugin_start(UgetPluginAria2* plugin); -static int plugin_ctrl (UgetPluginAria2* plugin, int code, void* data) +static int plugin_ctrl(UgetPluginAria2* plugin, int code, void* data) { switch (code) { case UGET_PLUGIN_CTRL_START: - if (plugin->node == NULL) - return plugin_start (plugin, data); + if (plugin->start_request) + return plugin_start(plugin); break; case UGET_PLUGIN_CTRL_STOP: - plugin->stopped = TRUE; + plugin->paused = TRUE; return TRUE; case UGET_PLUGIN_CTRL_SPEED: // speed control - return plugin_ctrl_speed (plugin, data); + return plugin_ctrl_speed(plugin, data); + + // state ---------------- + case UGET_PLUGIN_GET_STATE: + *(int*)data = (plugin->stopped) ? FALSE : TRUE; + return TRUE; - case UGET_PLUGIN_CTRL_NODE_UPDATED: + default: break; } return FALSE; } -static int plugin_ctrl_speed (UgetPluginAria2* plugin, int* speed) +static int plugin_ctrl_speed(UgetPluginAria2* plugin, int* speed) { - UgetCommon* common; - int value; + int value; - // Don't do anything if speed limit keep no change. - if (plugin->limit[0] == speed[0] && plugin->limit[1] == speed[1]) - if (plugin->limit_by_user == FALSE) - return TRUE; - plugin->limit_by_user = FALSE; + // notify plug-in that speed limit has been changed + if (plugin->limit[0] != speed[0] || plugin->limit[1] != speed[1]) + plugin->limit_changed = TRUE; // decide speed limit by user specified data. - if (plugin->node == NULL) { - plugin->limit[0] = speed[0]; - plugin->limit[1] = speed[1]; + value = speed[0]; + if (plugin->limit_upper[0] > 0) { + if (value > plugin->limit_upper[0] || value == 0) { + value = plugin->limit_upper[0]; + plugin->limit_changed = TRUE; + } } - else { - common = ug_info_realloc (&plugin->node->info, UgetCommonInfo); - // download - value = speed[0]; - if (common->max_download_speed) { - if (value > common->max_download_speed || value == 0) - value = common->max_download_speed; - } - plugin->limit[0] = value; - // upload - value = speed[1]; - if (common->max_upload_speed) { - if (value > common->max_upload_speed || value == 0) - value = common->max_upload_speed; + plugin->limit[0] = value; + + value = speed[1]; + if (plugin->limit_upper[1] > 0) { + if (value > plugin->limit_upper[1] || value == 0) { + value = plugin->limit_upper[1]; + plugin->limit_changed = TRUE; } - plugin->limit[1] = value; } - // notify plugin that speed limit has been changed - plugin->limit_changed = TRUE; - return TRUE; + plugin->limit[1] = value; + + return plugin->limit_changed; } // ---------------------------------------------------------------------------- // plugin_sync -static int plugin_insert_node (UgetPluginAria2* plugin, - const char* fpath, int is_attachment); - // return FALSE if plug-in was stopped. -static int plugin_sync (UgetPluginAria2* plugin) +static int plugin_sync(UgetPluginAria2* plugin, UgInfo* node_info) { - int index; - UgetNode* node; - UgetEvent* event; + int index; + UgetEvent* event; + UgetFiles* files; + UgetFile* file1; struct { UgetCommon* common; UgetProgress* progress; } temp; - if (plugin->stopped == TRUE) - return FALSE; - if (plugin->synced == TRUE) + if (plugin->stopped) { + if (plugin->synced) + return FALSE; + plugin->synced = TRUE; + } + else if (plugin->synced == TRUE) // maybe thread is accessing plugin->gids return TRUE; - - node = plugin->node; + // avoid crash if plug-in failed to start. + if (plugin->start_request == NULL) + return FALSE; + // sync data between plug-in and foreign UgData // ------------------------------------------------ // update progress - temp.progress = ug_info_realloc (&node->info, UgetProgressInfo); + temp.progress = ug_info_realloc(node_info, UgetProgressInfo); temp.progress->complete = plugin->completedLength; temp.progress->total = plugin->totalLength; temp.progress->download_speed = plugin->downloadSpeed; temp.progress->upload_speed = plugin->uploadSpeed; temp.progress->uploaded = plugin->uploadLength; - temp.progress->consume_time = time(NULL) - plugin->start_time; + temp.progress->elapsed = time(NULL) - plugin->start_time; // ratio if (temp.progress->uploaded && temp.progress->complete) temp.progress->ratio = (double)temp.progress->uploaded / (double)temp.progress->complete; @@ -442,61 +445,51 @@ temp.progress->ratio = 0.0; // If total size is unknown, don't calculate percent. if (temp.progress->total) - temp.progress->percent = (temp.progress->complete * 100) / temp.progress->total; + temp.progress->percent = (int) (temp.progress->complete * 100 / temp.progress->total); else temp.progress->percent = 0; // If total size and average speed is unknown, don't calculate remain time. if (temp.progress->download_speed > 0 && temp.progress->total > 0) - temp.progress->remain_time = (temp.progress->total - temp.progress->complete) / temp.progress->download_speed; + temp.progress->left = (temp.progress->total - temp.progress->complete) / temp.progress->download_speed; + temp.common = ug_info_realloc(node_info, UgetCommonInfo); // ------------------------------------------------ - temp.common = ug_info_realloc (&node->info, UgetCommonInfo); - // sync changed limit from UgetNode - if (plugin->limit[1] != temp.common->max_upload_speed || - plugin->limit[0] != temp.common->max_download_speed) + // sync changed limit from foreign UgInfo + if (plugin->limit_upper[1] != temp.common->max_upload_speed || + plugin->limit_upper[0] != temp.common->max_download_speed) { - plugin->limit_by_user = TRUE; - } - - // add nodes by files - if (plugin->files_per_gid_prev != plugin->files_per_gid) { -#ifndef NDEBUG - // debug - if (temp.common->debug_level) { - printf ("n_files: old %d - new %d\n", - plugin->files_per_gid_prev, - plugin->files_per_gid); - } -#endif - // add child node if aria2 add/create more files - index = plugin->files_per_gid_prev; - for (; index < plugin->files.length; index++) { - if (plugin_insert_node (plugin, plugin->files.at[index].path, FALSE)) { -#ifndef NDEBUG - // debug - if (temp.common->debug_level) - printf ("new child node name = %s\n", plugin->files.at[index].path); -#endif - } - } - plugin->files_per_gid_prev = plugin->files_per_gid; + // speed control + plugin->limit_upper[1] = temp.common->max_upload_speed; + plugin->limit_upper[0] = temp.common->max_download_speed; + plugin_ctrl_speed(plugin, plugin->limit_upper); } - // change node name. - if (plugin->node_named == FALSE && plugin->files_per_gid > 0) { - plugin->node_named = TRUE; + // update UgetFiles + files = ug_info_realloc(node_info, UgetFilesInfo); + uget_plugin_lock(plugin); + uget_files_sync(files, plugin->files); + uget_plugin_unlock(plugin); + + // change name. + if (files->list.size > 0 && + plugin->named == FALSE && plugin->files_per_gid > 0) + { + plugin->named = TRUE; if (plugin->uri_type == URI_NET && temp.common->file == NULL) { - ug_uri_init (&plugin->uri_part, node->children->name); + uget_plugin_lock(plugin); + file1 = (UgetFile*) plugin->files->list.head; + ug_uri_init(&plugin->uri_part, file1->path); + uget_plugin_unlock(plugin); index = plugin->uri_part.file; if (index != -1) { - ug_free (node->name); - node->name = ug_uri_get_file (&plugin->uri_part); - event = uget_event_new (UGET_EVENT_NAME); - uget_plugin_post ((UgetPlugin*) plugin, event); + ug_free(temp.common->name); + temp.common->name = ug_uri_get_file(&plugin->uri_part); + event = uget_event_new(UGET_EVENT_NAME); + uget_plugin_post((UgetPlugin*) plugin, event); #ifndef NDEBUG // debug if (temp.common->debug_level) - printf ("base node name = %s\n", node->name); + printf("base name = %s\n", temp.common->name); #endif } } @@ -507,70 +500,63 @@ if (plugin->completedLength > 0 && plugin->completedLength == plugin->totalLength) { -#ifndef NDEBUG - // debug - if (temp.common->debug_level) { - if ((node->state & UGET_STATE_UPLOADING) == 0) - printf ("uploading...\n"); - } -#endif - node->state |= UGET_STATE_UPLOADING; + event = uget_event_new(UGET_EVENT_UPLOADING); + uget_plugin_post((UgetPlugin*) plugin, event); } break; case ARIA2_STATUS_WAITING: // clear uploading state - node->state &= ~UGET_STATE_UPLOADING; + event = uget_event_new(UGET_EVENT_STOP_UPLOADING); + uget_plugin_post((UgetPlugin*) plugin, event); break; case ARIA2_STATUS_COMPLETE: // clear uploading state - node->state &= ~UGET_STATE_UPLOADING; + event = uget_event_new(UGET_EVENT_STOP_UPLOADING); + uget_plugin_post((UgetPlugin*) plugin, event); // remove completed gid - ug_free (plugin->gids.at[0]); - plugin->gids.length -= 1; - memmove (plugin->gids.at, plugin->gids.at + 1, - sizeof (char*) * plugin->gids.length); + if (plugin->gids.length > 0) { + ug_free(plugin->gids.at[0]); + ug_array_erase(&plugin->gids, 0, 1); + } // If there is only one followed gid and file, change uri. - if (plugin->gids.length == 1 && plugin->files.length == 1) { + if (plugin->gids.length == 1 && plugin->files_per_gid == 1) { // If URI scheme is not "magnet" and aria2 runs in local device if (global.data->uri_remote == FALSE && plugin->uri_type != URI_MAGNET) { // change URI - ug_free (temp.common->uri); - ug_free (temp.common->file); + ug_free(temp.common->uri); + ug_free(temp.common->name); + ug_free(temp.common->file); + file1 = (UgetFile*) plugin->files->list.head; + temp.common->uri = ug_strdup(file1->path); + temp.common->name = uget_name_from_uri_str(temp.common->uri); temp.common->file = NULL; - if (node->children && node->children->name) - temp.common->uri = ug_strdup (node->children->name); - else - temp.common->uri = ug_strdup (plugin->files.at[0].path); - uget_node_set_name_by_uri_string (node, temp.common->uri); - // set node type - node->children->type = UGET_NODE_ATTACHMENT; #ifndef NDEBUG // debug if (temp.common->debug_level) - printf ("uri followed to %s\n", temp.common->uri); + printf("uri followed to %s\n", temp.common->uri); #endif } } // If no followed gid, it was completed. else if (plugin->gids.length == 0) { - node->state |= UGET_STATE_COMPLETED; - event = uget_event_new (UGET_EVENT_COMPLETED); - uget_plugin_post ((UgetPlugin*)plugin, event); - } - // clear plugin->files - ug_array_foreach (&plugin->files, (UgForeachFunc)aria2_file_clear, NULL); - plugin->files.length = 0; + event = uget_event_new(UGET_EVENT_COMPLETED); + uget_plugin_post((UgetPlugin*)plugin, event); + } + // clear files + uget_plugin_lock(plugin); + uget_files_clear(plugin->files); + uget_plugin_unlock(plugin); plugin->files_per_gid = 0; - plugin->files_per_gid_prev = 0; break; case ARIA2_STATUS_ERROR: // clear uploading state - node->state &= ~UGET_STATE_UPLOADING; + event = uget_event_new(UGET_EVENT_STOP_UPLOADING); + uget_plugin_post((UgetPlugin*) plugin, event); #ifdef NO_RETRY_IF_CONNECT_FAILED // download speed was too slow if (plugin->errorCode == 5) { @@ -579,20 +565,21 @@ if (plugin->errorCode == 5 || plugin->errorCode == 19) { #endif // retry - if (temp.common->retry_count < temp.common->retry_limit || temp.common->retry_limit == 0) { + if (temp.common->retry_count < temp.common->retry_limit || + temp.common->retry_limit == 0) + { temp.common->retry_count++; plugin->restart = TRUE; #ifndef NDEBUG // debug if (temp.common->debug_level) - printf ("retry %d\n", temp.common->retry_count); + printf("retry %d\n", temp.common->retry_count); #endif } else { -// plugin->node->state |= UGET_STATE_ERROR; - event = uget_event_new_error ( + event = uget_event_new_error( UGET_EVENT_ERROR_TOO_MANY_RETRIES, NULL); - uget_plugin_post ((UgetPlugin*) plugin, event); + uget_plugin_post((UgetPlugin*) plugin, event); } } else { @@ -600,36 +587,36 @@ plugin->errorCode = 1; // if this is last gid. if (plugin->gids.length == 1) { -// plugin->node->state |= UGET_STATE_ERROR; #ifdef HAVE_GLIB - event = uget_event_new_error (0, - gettext (error_string[plugin->errorCode])); + event = uget_event_new_error(0, + gettext(error_string[plugin->errorCode])); #else - event = uget_event_new_error (0, + event = uget_event_new_error(0, error_string[plugin->errorCode]); #endif - uget_plugin_post ((UgetPlugin*)plugin, event); + uget_plugin_post((UgetPlugin*)plugin, event); } } // remove stopped gid - ug_free (plugin->gids.at[0]); + ug_free(plugin->gids.at[0]); plugin->gids.length -= 1; - memmove (plugin->gids.at, plugin->gids.at + 1, - sizeof (char*) * plugin->gids.length); + memmove(plugin->gids.at, plugin->gids.at + 1, + sizeof(char*) * plugin->gids.length); break; case ARIA2_STATUS_REMOVED: // clear uploading state - node->state &= ~UGET_STATE_UPLOADING; + event = uget_event_new(UGET_EVENT_STOP_UPLOADING); + uget_plugin_post((UgetPlugin*) plugin, event); // debug - event = uget_event_new_normal (0, _("aria2: gid was removed.")); - uget_plugin_post ((UgetPlugin*)plugin, event); + event = uget_event_new_normal(0, _("aria2: gid was removed.")); + uget_plugin_post((UgetPlugin*)plugin, event); // remove completed gid - ug_free (plugin->gids.at[0]); + ug_free(plugin->gids.at[0]); plugin->gids.length -= 1; - memmove (plugin->gids.at, plugin->gids.at + 1, - sizeof (char*) * plugin->gids.length); + memmove(plugin->gids.at, plugin->gids.at + 1, + sizeof(char*) * plugin->gids.length); break; } @@ -640,15 +627,11 @@ #ifndef NDEBUG // debug if (temp.common->debug_level) - printf ("gids.length = %d\n", plugin->gids.length); + printf("gids.length = %d\n", plugin->gids.length); #endif // If no followed gid and no need to retry, it must stop. if (plugin->restart == FALSE) - plugin->stopped = TRUE; - else { - plugin->retry_delay = temp.common->retry_delay; - uget_aria2_request (global.data, plugin->start_request); - } + plugin->paused = TRUE; } // if plug-in was stopped, don't sync data with thread @@ -657,163 +640,150 @@ return TRUE; } -// ------------------------------------ +// ---------------------------------------------------------------------------- +// plugin_thread -static int plugin_insert_node (UgetPluginAria2* plugin, - const char* fpath, int is_attachment) +static void add_gids_by_value_array(UgArrayStr* gids, UgValueArray* varray) { - UgetNode* node; - char* ctrl_file; - - // aria2 magnet metadata file -// if (plugin->uri_type == URI_MAGNET) { -// if (strncmp ("[METADATA]", fpath, 10) == 0) -// fpath += 10; -// } + UgValue* value; + int index; - for (node = plugin->node->children; node; node = node->next) { - if (strcmp (node->name, fpath) == 0) - return FALSE; +#ifndef NDEBUG + // debug + printf("add %d gids\n", varray->length); +#endif + for (index = 0; index < varray->length; index++) { + value = varray->at + index; + *(char**) ug_array_alloc(gids, 1) = value->c.string; + value->c.string = NULL; + value->type = UG_VALUE_NONE; } - - // aria2 control file must add first - ctrl_file = ug_malloc (strlen (fpath) + 6 + 1); // + ".aria2" + '\0' - ctrl_file[0] = 0; - strcat (ctrl_file, fpath); - strcat (ctrl_file, ".aria2"); - node = uget_node_new (NULL); - node->name = ctrl_file; - node->type = UGET_NODE_ATTACHMENT; - uget_node_prepend (plugin->node, node); - // download file - node = uget_node_new (NULL); - node->name = ug_strdup (fpath); - uget_node_prepend (plugin->node, node); - if (is_attachment) - node->type = UGET_NODE_ATTACHMENT; - - return TRUE; } -// ---------------------------------------------------------------------------- -// plugin_thread - -static void add_gids_by_value_array (UgArrayStr* gids, UgValueArray* varray); -static UgJsonrpcObject* alloc_speed_request (UgetPluginAria2* plugin); -static void recycle_speed_request (UgJsonrpcObject* object); -static UgJsonrpcObject* alloc_status_request (UgValue** gid); -static void recycle_status_request (UgJsonrpcObject* object); - -static UG_THREAD_RETURN_TYPE plugin_thread (UgetPluginAria2* plugin) +static int send_start_request(UgetPluginAria2* plugin) { - UgJsonrpcObject* req; UgJsonrpcObject* res; - UgJsonrpcObject* speed_req; - UgJsonrpcObject* speed_res; - UgValue* gid; - UgValue* value; - UgValue* member; - int index; -restart_thread: - plugin->restart = FALSE; - res = uget_aria2_respond (global.data, plugin->start_request); + uget_aria2_request(global.data, plugin->start_request); + res = uget_aria2_respond(global.data, plugin->start_request); if (res == NULL) { #ifdef HAVE_GLIB - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_error(0, gettext (aria2_no_response))); + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(0, gettext(aria2_no_response))); #else - uget_plugin_post ((UgetPlugin*) plugin, + uget_plugin_post((UgetPlugin*) plugin, uget_event_new_error(0, aria2_no_response)); #endif -// plugin->node->state |= UGET_STATE_ERROR; - goto exit; + return FALSE; } if (res->error.code) { - uget_plugin_post ((UgetPlugin*)plugin, + uget_plugin_post((UgetPlugin*)plugin, uget_event_new_error(0, res->error.message)); - uget_aria2_recycle (global.data, res); -// plugin->node->state |= UGET_STATE_ERROR; - goto exit; + uget_aria2_recycle(global.data, res); + return FALSE; } // add gid from response if (plugin->uri_type == URI_METALINK) - add_gids_by_value_array (&plugin->gids, res->result.c.array); + add_gids_by_value_array(&plugin->gids, res->result.c.array); else { - *(char**) ug_array_alloc (&plugin->gids, 1) = - ug_strdup (res->result.c.string); + *(char**) ug_array_alloc(&plugin->gids, 1) = + ug_strdup(res->result.c.string); } // recycle response - uget_aria2_recycle (global.data, res); + uget_aria2_recycle(global.data, res); + return TRUE; +} - // update status --- begin --- - res = NULL; - req = alloc_status_request (&gid); +static int plugin_delay(UgetPluginAria2* plugin) +{ + unsigned int count; - while (plugin->stopped == FALSE) { + for (count = 0; count < plugin->retry_delay; count++) { + if (plugin->paused) + return FALSE; + // sleep 1 second every time + ug_sleep(1000); + } + return TRUE; +} + +static UgThreadResult plugin_thread(UgetPluginAria2* plugin) +{ + UgJsonrpcObject* req; + UgJsonrpcObject* res; + UgJsonrpcObject* status_req; + UgValue* status_gid; + UgValue* value; + UgValue* member; + int count; + + // create status_req and initialize status_gid + status_req = alloc_status_request(&status_gid); + // send start_request to server + plugin->restart = FALSE; + if (send_start_request(plugin) == FALSE) + goto exit; + + while (plugin->paused == FALSE) { + // retry if (plugin->restart == TRUE) { - if (plugin->retry_delay) { - // sleep 1 second every time - ug_sleep (1000); - plugin->retry_delay--; + if (plugin_delay(plugin) == FALSE) continue; - } - recycle_status_request (req); #ifndef NDEBUG // debug - printf ("thread restart\n"); + printf("retry\n"); #endif - goto restart_thread; + // send start_request to server again + plugin->restart = FALSE; + if (send_start_request(plugin) == FALSE) + goto exit; } + // Don't update status until user call plugin_sync() if (plugin->synced == FALSE) { // sleep 0.5 second - ug_sleep (500); + ug_sleep(500); continue; } // set gid for status request -// req->params.c.array->at[0].c.string = plugin->gids.at[0]; - gid->c.string = plugin->gids.at[0]; +// status_req->params.c.array->at[0].c.string = plugin->gids.at[0]; + status_gid->c.string = plugin->gids.at[0]; // status request - uget_aria2_request (global.data, req); + uget_aria2_request(global.data, status_req); // speed control : speed request & response - speed_req = NULL; if (plugin->limit_changed) { plugin->limit_changed = FALSE; // request & response - speed_req = alloc_speed_request (plugin); - uget_aria2_request (global.data, speed_req); - speed_res = uget_aria2_respond (global.data, speed_req); + req = alloc_speed_request(plugin); + uget_aria2_request(global.data, req); + res = uget_aria2_respond(global.data, req); // recycle - uget_aria2_recycle (global.data, speed_res); - recycle_speed_request (speed_req); + uget_aria2_recycle(global.data, res); + recycle_speed_request(req); } // status respond - res = uget_aria2_respond (global.data, req); + res = uget_aria2_respond(global.data, status_req); if (res == NULL) { #ifdef HAVE_GLIB - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_error(0, gettext (aria2_no_response))); + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(0, gettext(aria2_no_response))); #else - uget_plugin_post ((UgetPlugin*) plugin, + uget_plugin_post((UgetPlugin*) plugin, uget_event_new_error(0, aria2_no_response)); #endif - recycle_status_request (req); -// plugin->node->state |= UGET_STATE_ERROR; goto exit; } if (res->error.code) { - uget_plugin_post ((UgetPlugin*)plugin, + uget_plugin_post((UgetPlugin*)plugin, uget_event_new_error(0, res->error.message)); - uget_aria2_recycle (global.data, res); -// plugin->node->state |= UGET_STATE_ERROR; + uget_aria2_recycle(global.data, res); goto exit; } // parse status response --- start --- - ug_value_sort_name (&res->result); - value = ug_value_find_name (&res->result, "status"); + ug_value_sort_name(&res->result); + value = ug_value_find_name(&res->result, "status"); switch (value->c.string[0]) { case 'a': plugin->status = ARIA2_STATUS_ACTIVE; @@ -837,452 +807,351 @@ plugin->status = ARIA2_N_STATUS; break; } - value = ug_value_find_name (&res->result, "errorCode"); - plugin->errorCode = (value) ? ug_value_get_int (value) : 0; - value = ug_value_find_name (&res->result, "totalLength"); - plugin->totalLength = ug_value_get_int64 (value); - value = ug_value_find_name (&res->result, "completedLength"); - plugin->completedLength = ug_value_get_int64 (value); - value = ug_value_find_name (&res->result, "uploadLength"); - plugin->uploadLength = ug_value_get_int64 (value); - value = ug_value_find_name (&res->result, "downloadSpeed"); - plugin->downloadSpeed = ug_value_get_int (value); - value = ug_value_find_name (&res->result, "uploadSpeed"); - plugin->uploadSpeed = ug_value_get_int (value); - value = ug_value_find_name (&res->result, "followedBy"); + value = ug_value_find_name(&res->result, "errorCode"); + plugin->errorCode = (value) ? ug_value_get_int(value) : 0; + value = ug_value_find_name(&res->result, "totalLength"); + plugin->totalLength = ug_value_get_int64(value); + value = ug_value_find_name(&res->result, "completedLength"); + plugin->completedLength = ug_value_get_int64(value); + value = ug_value_find_name(&res->result, "uploadLength"); + plugin->uploadLength = ug_value_get_int64(value); + value = ug_value_find_name(&res->result, "downloadSpeed"); + plugin->downloadSpeed = ug_value_get_int(value); + value = ug_value_find_name(&res->result, "uploadSpeed"); + plugin->uploadSpeed = ug_value_get_int(value); + value = ug_value_find_name(&res->result, "followedBy"); if (value) - add_gids_by_value_array (&plugin->gids, value->c.array); - value = ug_value_find_name (&res->result, "files"); - if (value && value->c.array->length != plugin->files_per_gid) { - UgValueArray* files; - Aria2File* afile; - - files = value->c.array; - for (index = 0; index < files->length; index++) { - value = files->at + index; - ug_value_sort_name (value); - member = ug_value_find_name (value, "path"); - if (member == NULL || member->c.string[0] == '\0') - continue; - if (aria2_file_array_find (&plugin->files, member->c.string)) + add_gids_by_value_array(&plugin->gids, value->c.array); + value = ug_value_find_name(&res->result, "files"); + if (value && ug_value_length(value) != plugin->files_per_gid) { + UgValueArray* array; + UgetFile* ufile; + char* string; + + array = value->c.array; + plugin->files_per_gid = ug_value_length(value); + for (count = 0; count < array->length; count++) { + value = array->at + count; + ug_value_sort_name(value); + member = ug_value_find_name(value, "path"); + if (member == NULL || member->c.string[0] == '\0') { + plugin->files_per_gid--; continue; - plugin->files_per_gid++; - afile = ug_array_alloc (&plugin->files, 1); - member = ug_value_find_name (value, "completedLength"); - afile->completedLength = ug_value_get_int64 (member); - member = ug_value_find_name (value, "length"); - afile->length = ug_value_get_int64 (member); - member = ug_value_find_name (value, "path"); - afile->path = member->c.string; - member->c.string = NULL; - member->type = UG_VALUE_NONE; + } + uget_plugin_lock(plugin); + // add .aria2 control file first + if (plugin->files_per_gid == 1) { + string = ug_strdup_printf("%s.aria2", member->c.string); + ufile = uget_files_realloc(plugin->files, string); + ufile->type = UGET_FILE_TEMPORARY; + ug_free(string); + } + // add downloading file + ufile = uget_files_realloc(plugin->files, member->c.string); + member = ug_value_find_name(value, "completedLength"); + ufile->complete = ug_value_get_int64(member); + member = ug_value_find_name(value, "length"); + ufile->total = ug_value_get_int64(member); + uget_plugin_unlock(plugin); } } // parse status response --- end --- // recycle status response - uget_aria2_recycle (global.data, res); - // plugin and it's node will update + uget_aria2_recycle(global.data, res); + // plugin_sync() will exchange data plugin->synced = FALSE; } - recycle_status_request (req); - // update status --- end --- - if (plugin->gids.length) { - req = uget_aria2_alloc (global.data, TRUE, TRUE); + req = uget_aria2_alloc(global.data, TRUE, TRUE); req->method_static = "aria2.remove"; // if there is no secret token in params. if (req->params.type == UG_VALUE_NONE) - ug_value_init_array (&req->params, plugin->gids.length); + ug_value_init_array(&req->params, plugin->gids.length); // add gids to params. - value = ug_value_alloc (&req->params, plugin->gids.length); - for (index = 0; index < plugin->gids.length; index++, value++) { + value = ug_value_alloc(&req->params, plugin->gids.length); + for (count = 0; count < plugin->gids.length; count++, value++) { value->type = UG_VALUE_STRING; - value->c.string = ug_strdup (plugin->gids.at[index]); + value->c.string = ug_strdup(plugin->gids.at[count]); } // call "aria2.remove" - uget_aria2_request (global.data, req); - res = uget_aria2_respond (global.data, req); + uget_aria2_request(global.data, req); + res = uget_aria2_respond(global.data, req); #ifndef NDEBUG // debug if (res->error.code) { - printf ("aria2.remove() response error code = %d" "\n" - " message = \"%s\"." "\n", - res->error.code, res->error.message); + printf("aria2.remove() response error code = %d" "\n" + " message = \"%s\"." "\n", + res->error.code, res->error.message); } #endif - uget_aria2_recycle (global.data, res); - uget_aria2_recycle (global.data, req); + uget_aria2_recycle(global.data, res); + uget_aria2_recycle(global.data, req); } exit: + recycle_status_request(status_req); plugin->stopped = TRUE; - uget_plugin_unref ((UgetPlugin*)plugin); - return UG_THREAD_RETURN_VALUE; -} - -// ------------------------------------ - -static void add_gids_by_value_array (UgArrayStr* gids, UgValueArray* varray) -{ - UgValue* value; - int index; - -#ifndef NDEBUG - // debug - printf ("add %d gids\n", varray->length); -#endif - for (index = 0; index < varray->length; index++) { - value = varray->at + index; - *(char**) ug_array_alloc (gids, 1) = value->c.string; - value->c.string = NULL; - value->type = UG_VALUE_NONE; - } -} - -// speed control -static UgJsonrpcObject* alloc_speed_request (UgetPluginAria2* plugin) -{ - UgJsonrpcObject* object; - UgValue* options; - UgValue* value; - - object = uget_aria2_alloc (global.data, TRUE, TRUE); - object->method_static = "aria2.changeOption"; - if (object->params.type == UG_VALUE_NONE) - ug_value_init_array (&object->params, 2); - // gid - value = ug_value_alloc (&object->params, 1); - value->type = UG_VALUE_STRING; - value->c.string = plugin->gids.at[0]; - // object - options = ug_value_alloc (&object->params, 1); - ug_value_init_object (options, 2); - // max-download-limit - value = ug_value_alloc (options, 1); - value->name = ug_strdup ("max-download-limit"); - value->type = UG_VALUE_STRING; - value->c.string = ug_strdup_printf ("%d", plugin->limit[0]); - // max-download-limit - value = ug_value_alloc (options, 1); - value->name = ug_strdup ("max-upload-limit"); - value->type = UG_VALUE_STRING; - value->c.string = ug_strdup_printf ("%d", plugin->limit[1]); - - return object; -} - -static void recycle_speed_request (UgJsonrpcObject* object) -{ - UgValue* value; - - value = uget_aria2_clear_token (object); - // params[0] is gid -// value = object->params.c.array->at; - value->type = UG_VALUE_NONE; - value->c.array = NULL; - // ready to recycle it - uget_aria2_recycle (global.data, object); -} - -static UgJsonrpcObject* alloc_status_request (UgValue** gid) -{ - UgJsonrpcObject* object; - UgValue* params; - UgValue* keys; - - // prepare JSON-RPC object for "aria2.tellStatus" - object = uget_aria2_alloc (global.data, TRUE, TRUE); - object->method_static = "aria2.tellStatus"; - params = &object->params; - if (params->type == UG_VALUE_NONE) - ug_value_init_array (params, 2); - // gid - gid[0] = ug_value_alloc (params, 1); - gid[0]->type = UG_VALUE_STRING; - gid[0]->c.string = NULL; - // keys array from UgetAria2.status_keys - keys = ug_value_alloc (params, 1); - keys->type = UG_VALUE_ARRAY; - keys->c.array = global.data->status_keys.c.array; - - return object; -} - -static void recycle_status_request (UgJsonrpcObject* object) -{ - UgValue* value; - - value = uget_aria2_clear_token (object); - // params[0] is gid -// value = object->params.c.array->at; - value->type = UG_VALUE_NONE; - value->c.array = NULL; - // params[1] is keys of status -// value = object->params.c.array->at + 1; - value++; - value->type = UG_VALUE_NONE; - value->c.array = NULL; - // ready to recycle it - uget_aria2_recycle (global.data, object); + uget_plugin_unref((UgetPlugin*)plugin); + return UG_THREAD_RESULT; } // ---------------------------------------------------------------------------- -// plugin_start - -static int decide_file_type (UgetPluginAria2* plugin); -static void add_uri_mirrors (UgValue* varray, const char* mirrors); +// plugin_accept/plugin_start -static int plugin_start (UgetPluginAria2* plugin, UgetNode* node) +static int plugin_accept(UgetPluginAria2* plugin, UgInfo* node_info) { UgJsonrpcObject* request; UgValue* value; UgValue* member; - UgThread thread; - char* data = NULL; char* uri; + char* str = NULL; char* user = NULL; char* password = NULL; union { UgetCommon* common; + UgetFiles* files; UgetProxy* proxy; UgetHttp* http; UgetHttp* ftp; - int ok; } temp; - temp.common = ug_info_get (&node->info, UgetCommonInfo); + temp.common = ug_info_get(node_info, UgetCommonInfo); if (temp.common == NULL || temp.common->uri == NULL) return FALSE; uri = temp.common->uri; plugin->uri_type = URI_NET; - ug_uri_init (&plugin->uri_part, uri); - if ((plugin->uri_part.scheme_len == 4 && strncmp (uri, "file", 4) == 0) || - (plugin->uri_part.scheme_len == 0 && plugin->uri_part.file >= 0)) + ug_uri_init(&plugin->uri_part, uri); + if ((plugin->uri_part.scheme_len == 4 && strncmp(uri, "file", 4) == 0) || + (plugin->uri_part.scheme_len == 0 && plugin->uri_part.file >= 0)) { // file type is torrent or metalink? - if (decide_file_type (plugin) == URI_UNSUPPORTED) { - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_error (UGET_EVENT_ERROR_UNSUPPORTED_FILE, + if (decide_file_type(plugin) == URI_UNSUPPORTED) { + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(UGET_EVENT_ERROR_UNSUPPORTED_FILE, NULL)); return FALSE; } // load file and convert it's binary to base64 if (plugin->uri_part.path > 0) - data = ug_file_to_base64 (uri + plugin->uri_part.path + 1, NULL); + str = ug_file_to_base64(uri + plugin->uri_part.path + 1, NULL); else - data = ug_file_to_base64 (uri, NULL); - if (data == NULL) { - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_error (UGET_EVENT_ERROR_FILE_OPEN_FAILED, + str = ug_file_to_base64(uri, NULL); + if (str == NULL) { + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(UGET_EVENT_ERROR_FILE_OPEN_FAILED, NULL)); return FALSE; } } - else if (plugin->uri_part.scheme_len == 6 && strncmp (uri, "magnet", 6) == 0) + else if (plugin->uri_part.scheme_len == 6 && strncmp(uri, "magnet", 6) == 0) plugin->uri_type = URI_MAGNET; - request = uget_aria2_alloc (global.data, TRUE, TRUE); + request = uget_aria2_alloc(global.data, TRUE, TRUE); if (request->params.type == UG_VALUE_NONE) - ug_value_init_array (&request->params, 3); + ug_value_init_array(&request->params, 3); switch (plugin->uri_type) { case URI_NET: case URI_MAGNET: request->method_static = "aria2.addUri"; // parameter1 : URIs - value = ug_value_alloc (&request->params, 1); - ug_value_init_array (value, 8); - member = ug_value_alloc (value, 1); + value = ug_value_alloc(&request->params, 1); + ug_value_init_array(value, 8); + member = ug_value_alloc(value, 1); member->type = UG_VALUE_STRING; - member->c.string = ug_strdup (uri); + member->c.string = ug_strdup(uri); // mirrors - add_uri_mirrors (value, temp.common->mirrors); + add_uri_mirrors(value, temp.common->mirrors); // parameter2 : options break; case URI_TORRENT: request->method_static = "aria2.addTorrent"; // parameter1 : encoded torrent file - value = ug_value_alloc (&request->params, 1); + value = ug_value_alloc(&request->params, 1); value->type = UG_VALUE_STRING; - value->c.string = data; + value->c.string = str; // parameter2 : URIs - value = ug_value_alloc (&request->params, 1); - ug_value_init_array (value, 0); + value = ug_value_alloc(&request->params, 1); + ug_value_init_array(value, 0); // parameter3 : options break; case URI_METALINK: // parameter1 : encoded metalink file request->method_static = "aria2.addMetalink"; - value = ug_value_alloc (&request->params, 1); + value = ug_value_alloc(&request->params, 1); value->type = UG_VALUE_STRING; - value->c.string = data; + value->c.string = str; // parameter2 : options break; } // parameterX : options - value = ug_value_alloc (&request->params, 1); - ug_value_init_object (value, 16); - member = ug_value_alloc (value, 1); + value = ug_value_alloc(&request->params, 1); + ug_value_init_object(value, 16); + member = ug_value_alloc(value, 1); member->name = "continue"; member->type = UG_VALUE_BOOL; member->c.boolean = TRUE; if ((temp.common->user && temp.common->user[0]) || - (temp.common->password && temp.common->password[0])) + (temp.common->password && temp.common->password[0])) { user = (temp.common->user) ? temp.common->user : ""; password = (temp.common->password) ? temp.common->password : ""; } if (temp.common->folder) { - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "dir"; member->type = UG_VALUE_STRING; - member->c.string = ug_strdup (temp.common->folder); + member->c.string = ug_strdup(temp.common->folder); } if (temp.common->file) { - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "out"; member->type = UG_VALUE_STRING; - member->c.string = ug_strdup (temp.common->file); + member->c.string = ug_strdup(temp.common->file); } - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "remote-time"; member->type = UG_VALUE_BOOL; member->c.boolean = temp.common->timestamp; - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "retry-wait"; member->type = UG_VALUE_STRING; - member->c.string = ug_strdup_printf ("%u", temp.common->retry_delay); + member->c.string = ug_strdup_printf("%u", temp.common->retry_delay); - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "max-tries"; member->type = UG_VALUE_STRING; - member->c.string = ug_strdup_printf ("%u", temp.common->retry_limit); + member->c.string = ug_strdup_printf("%u", temp.common->retry_limit); - // speed control - if (plugin->limit_changed) { - plugin->node = node; - plugin_ctrl_speed (plugin, plugin->limit); - plugin->node = NULL; - } + // speed control: decide speed limit before starting plug-in + plugin->limit_upper[1] = temp.common->max_upload_speed; + plugin->limit_upper[0] = temp.common->max_download_speed; + plugin_ctrl_speed(plugin, plugin->limit); - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "max-download-limit"; member->type = UG_VALUE_STRING; -// member->c.string = ug_strdup_printf ("%d", temp.common->max_download_speed); - member->c.string = ug_strdup_printf ("%d", plugin->limit[0]); +// member->c.string = ug_strdup_printf("%d", temp.common->max_download_speed); + member->c.string = ug_strdup_printf("%d", plugin->limit[0]); - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "max-upload-limit"; member->type = UG_VALUE_STRING; -// member->c.string = ug_strdup_printf ("%d", temp.common->max_upload_speed); - member->c.string = ug_strdup_printf ("%d", plugin->limit[1]); +// member->c.string = ug_strdup_printf("%d", temp.common->max_upload_speed); + member->c.string = ug_strdup_printf("%d", plugin->limit[1]); - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "lowest-speed-limit"; member->type = UG_VALUE_STRING; - member->c.string = ug_strdup_printf ("%u", 128); + member->c.string = ug_strdup_printf("%u", 128); // Don't set connection limit if max_connections is 0. if (temp.common->max_connections != 0) { // aria2 doesn't accept "max-connection-per-server" large than 16. - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "max-connection-per-server"; member->type = UG_VALUE_STRING; - member->c.string = ug_strdup_printf ("%u", + member->c.string = ug_strdup_printf("%u", (temp.common->max_connections <= 16) ? temp.common->max_connections : 16); // split - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "split"; member->type = UG_VALUE_STRING; - member->c.string = ug_strdup_printf ("%u", + member->c.string = ug_strdup_printf("%u", temp.common->max_connections); } - temp.proxy = ug_info_get (&node->info, UgetProxyInfo); + temp.files = ug_info_get(node_info, UgetFilesInfo); + if (temp.files) + plugin->files = ug_data_copy(temp.files); + else + plugin->files = ug_data_new(UgetFilesInfo); + + temp.proxy = ug_info_get(node_info, UgetProxyInfo); #ifdef HAVE_LIBPWMD if (temp.proxy && temp.proxy->type == UGET_PROXY_PWMD) { - if (uget_plugin_aria2_set_proxy_pwmd (plugin, member) == FALSE) + if (uget_plugin_aria2_set_proxy_pwmd(plugin, node_info, member) == FALSE) return FALSE; } else #endif if (temp.proxy && temp.proxy->host) { - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "all-proxy"; member->type = UG_VALUE_STRING; if (temp.proxy->port == 0) - member->c.string = ug_strdup (temp.proxy->host); + member->c.string = ug_strdup(temp.proxy->host); else { - member->c.string = ug_strdup_printf ("%s:%d", + member->c.string = ug_strdup_printf("%s:%d", temp.proxy->host, temp.proxy->port); } if ((temp.proxy->user && temp.proxy->user[0]) || - (temp.proxy->password && temp.proxy->password[0])) + (temp.proxy->password && temp.proxy->password[0])) { - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "all-proxy-user"; member->type = UG_VALUE_STRING; - member->c.string = ug_strdup ( + member->c.string = ug_strdup( (temp.proxy->user) ? temp.proxy->user : ""); - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "all-proxy-password"; member->type = UG_VALUE_STRING; - member->c.string = ug_strdup ( + member->c.string = ug_strdup( (temp.proxy->password) ? temp.proxy->password : ""); } } - temp.http = ug_info_get (&node->info, UgetHttpInfo); + temp.http = ug_info_get(node_info, UgetHttpInfo); if (temp.http) { if (plugin->uri_part.scheme_len >= 4 && - strncmp (uri, "http", 4) == 0) + strncmp(uri, "http", 4) == 0) { if ((temp.http->user && temp.http->user[0]) || - (temp.http->password && temp.http->password[0])) + (temp.http->password && temp.http->password[0])) { user = (temp.http->user) ? temp.http->user : ""; password = (temp.http->password) ? temp.http->password : ""; } } if (temp.http->referrer) { - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "referer"; member->type = UG_VALUE_STRING; - member->c.string = ug_strdup (temp.http->referrer); + member->c.string = ug_strdup(temp.http->referrer); } // if (temp.http->cookie_file) { -// member = ug_value_alloc (value, 1); +// member = ug_value_alloc(value, 1); // member->name = "load-cookies"; // member->type = UG_VALUE_STRING; -// member->c.string = ug_strdup (temp.http->cookie_file); +// member->c.string = ug_strdup(temp.http->cookie_file); // } if (temp.http->user_agent) { - member = ug_value_alloc (value, 1); + member = ug_value_alloc(value, 1); member->name = "user-agent"; member->type = UG_VALUE_STRING; - member->c.string = ug_strdup (temp.http->user_agent); + member->c.string = ug_strdup(temp.http->user_agent); } } - temp.ftp = ug_info_get (&node->info, UgetFtpInfo); + temp.ftp = ug_info_get(node_info, UgetFtpInfo); if (temp.ftp) { - if (plugin->uri_part.scheme_len >= 3 && strncmp (uri, "ftp", 3) == 0) { + if (plugin->uri_part.scheme_len >= 3 && strncmp(uri, "ftp", 3) == 0) { if ((temp.ftp->user && temp.ftp->user[0]) || - (temp.ftp->password && temp.ftp->password[0])) + (temp.ftp->password && temp.ftp->password[0])) { user = (temp.ftp->user) ? temp.ftp->user : ""; password = (temp.ftp->password) ? temp.ftp->password : ""; @@ -1292,51 +1161,190 @@ if (plugin->uri_type == URI_NET && plugin->uri_part.host != -1) { if (user || password) { - data = ug_malloc (strlen (user) + strlen (password) + - strlen (uri) + 2 + 1); // + ':' + '@' + '\0' - data[plugin->uri_part.host] = 0; - strncpy (data, uri, plugin->uri_part.host); - strcat (data, user); - strcat (data, ":"); - strcat (data, password); - strcat (data, "@"); - strcat (data, uri + plugin->uri_part.host); + str = ug_malloc(strlen(user) + strlen(password) + + strlen(uri) + 2 + 1); // + ':' + '@' + '\0' + str[plugin->uri_part.host] = 0; + strncpy(str, uri, plugin->uri_part.host); + strcat(str, user); + strcat(str, ":"); + strcat(str, password); + strcat(str, "@"); + strcat(str, uri + plugin->uri_part.host); // reset uri for aria2.addUri, request->params[0][0] value = request->params.c.array->at; value = value->c.array->at; - ug_free (value->c.string); - value->c.string = ug_strdup (data); + ug_free(value->c.string); + value->c.string = ug_strdup(str); } } plugin->files_per_gid = 0; - plugin->files_per_gid_prev = 0; - plugin->stopped = FALSE; plugin->synced = TRUE; - plugin->start_time = time (NULL); + plugin->start_time = time(NULL); plugin->start_request = request; - plugin->node = node; - uget_node_ref (node); + return TRUE; +} + +static int plugin_start(UgetPluginAria2* plugin) +{ + UgThread thread; + int ok; - uget_aria2_request (global.data, request); - uget_plugin_ref ((UgetPlugin*) plugin); - temp.ok = ug_thread_create (&thread, (UgThreadFunc) plugin_thread, plugin); - if (temp.ok == UG_THREAD_OK) - ug_thread_unjoin (&thread); + // try to start thread + plugin->paused = FALSE; + plugin->stopped = FALSE; + uget_plugin_ref((UgetPlugin*) plugin); + ok = ug_thread_create(&thread, (UgThreadFunc) plugin_thread, plugin); + if (ok == UG_THREAD_OK) + ug_thread_unjoin(&thread); else { - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_error (UGET_EVENT_ERROR_THREAD_CREATE_FAILED, - NULL)); - uget_plugin_unref ((UgetPlugin*) plugin); + // failed to start thread ----------------- + plugin->paused = TRUE; + plugin->stopped = TRUE; + // post error message and decreases the reference count + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(UGET_EVENT_ERROR_THREAD_CREATE_FAILED, + NULL)); + uget_plugin_unref((UgetPlugin*) plugin); return FALSE; } return TRUE; } -// ------------------------------------ +// ---------------------------------------------------------------------------- +// JSON-RPC request -static int decide_file_type (UgetPluginAria2* plugin) +// speed control +static UgJsonrpcObject* alloc_speed_request(UgetPluginAria2* plugin) +{ + UgJsonrpcObject* object; + UgValue* options; + UgValue* value; + + object = uget_aria2_alloc(global.data, TRUE, TRUE); + object->method_static = "aria2.changeOption"; + if (object->params.type == UG_VALUE_NONE) + ug_value_init_array(&object->params, 2); + // gid + value = ug_value_alloc(&object->params, 1); + value->type = UG_VALUE_STRING; + value->c.string = plugin->gids.at[0]; + // object + options = ug_value_alloc(&object->params, 1); + ug_value_init_object(options, 2); + // max-download-limit + value = ug_value_alloc(options, 1); + value->name = ug_strdup("max-download-limit"); + value->type = UG_VALUE_STRING; + value->c.string = ug_strdup_printf("%d", plugin->limit[0]); + // max-upload-limit + value = ug_value_alloc(options, 1); + value->name = ug_strdup("max-upload-limit"); + value->type = UG_VALUE_STRING; + value->c.string = ug_strdup_printf("%d", plugin->limit[1]); + + return object; +} + +static void recycle_speed_request(UgJsonrpcObject* object) +{ + UgValue* value; + + value = uget_aria2_clear_token(object); + // params[0] is gid +// value = object->params.c.array->at; + value->type = UG_VALUE_NONE; + value->c.array = NULL; + // ready to recycle it + uget_aria2_recycle(global.data, object); +} + +static UgJsonrpcObject* alloc_status_request(UgValue** gid) +{ + UgJsonrpcObject* object; + UgValue* params; + UgValue* keys; + + // prepare JSON-RPC object for "aria2.tellStatus" + object = uget_aria2_alloc(global.data, TRUE, TRUE); + object->method_static = "aria2.tellStatus"; + params = &object->params; + if (params->type == UG_VALUE_NONE) + ug_value_init_array(params, 2); + // gid + gid[0] = ug_value_alloc(params, 1); + gid[0]->type = UG_VALUE_STRING; + gid[0]->c.string = NULL; + // keys array from UgetAria2.status_keys + keys = ug_value_alloc(params, 1); + keys->type = UG_VALUE_ARRAY; + keys->c.array = global.data->status_keys.c.array; + + return object; +} + +static void recycle_status_request(UgJsonrpcObject* object) +{ + UgValue* value; + + value = uget_aria2_clear_token(object); + // params[0] is gid +// value = object->params.c.array->at; + value->type = UG_VALUE_NONE; + value->c.array = NULL; + // params[1] is keys of status +// value = object->params.c.array->at + 1; + value++; + value->type = UG_VALUE_NONE; + value->c.array = NULL; + // ready to recycle it + uget_aria2_recycle(global.data, object); +} + +// ---------------------------------------------------------------------------- +// static utility functions + +static void* ug_file_to_base64(const char* file, int* length) +{ + int fd; + int fsize, fpos = 0; + int result_len; + void* buffer; + void* result; + +// fd = open(file, O_RDONLY | O_BINARY, S_IREAD); + fd = ug_open(file, UG_O_READONLY | UG_O_BINARY, UG_S_IREAD); + if (fd == -1) + return NULL; +// lseek(fd, 0, SEEK_END); + ug_seek(fd, 0, SEEK_END); + fsize = (int) ug_tell(fd); + buffer = ug_malloc(fsize); +// lseek(fd, 0, SEEK_SET); + ug_seek(fd, 0, SEEK_SET); + + do { + result_len = ug_read(fd, buffer, fsize - fpos); +// result_len = read(fd, buffer, fsize - fpos); + fpos += result_len; + } while (result_len > 0); +// close(fd); + ug_close(fd); + + if (fsize != fpos) { + ug_free(buffer); + return NULL; + } + + result = ug_base64_encode(buffer, fsize, &result_len); + ug_free(buffer); + if (length) + *length = result_len; + return result; +} + +static int decide_file_type(UgetPluginAria2* plugin) { char buf[11]; union { @@ -1351,21 +1359,21 @@ if (temp.path > 0 && plugin->uri_part.uri[temp.path] != 0) temp.path++; // - temp.fd = ug_open (plugin->uri_part.uri + temp.path, + temp.fd = ug_open(plugin->uri_part.uri + temp.path, UG_O_READONLY | UG_O_BINARY, UG_S_IREAD); - if (temp.fd != -1 && ug_read (temp.fd, buf, 11) == 11) { - if (strncmp (buf, "d8:announce", 11) == 0) + if (temp.fd != -1 && ug_read(temp.fd, buf, 11) == 11) { + if (strncmp(buf, "d8:announce", 11) == 0) plugin->uri_type = URI_TORRENT; else { buf[10] = 0; - if (strchr (buf, '<')) + if (strchr(buf, '<')) plugin->uri_type = URI_METALINK; } } - ug_close (temp.fd); + ug_close(temp.fd); if (plugin->uri_type == URI_UNSUPPORTED && - ug_uri_part_file_ext (&plugin->uri_part, &temp.ext)) + ug_uri_part_file_ext(&plugin->uri_part, &temp.ext)) { if (temp.ext[0] == 'm' || temp.ext[0] == 'M') plugin->uri_type = URI_METALINK; @@ -1378,7 +1386,7 @@ return plugin->uri_type; } -static void add_uri_mirrors (UgValue* varray, const char* mirrors) +static void add_uri_mirrors(UgValue* varray, const char* mirrors) { UgValue* value; const char* curr; @@ -1389,13 +1397,13 @@ while (curr[0] == ' ') curr++; prev = curr; - curr = curr + strcspn (curr, " "); + curr = curr + strcspn(curr, " "); - value = ug_value_alloc (varray, 1); + value = ug_value_alloc(varray, 1); value->type = UG_VALUE_STRING; - value->c.string = ug_malloc (curr - prev + 1); + value->c.string = ug_malloc(curr - prev + 1); value->c.string[curr - prev] = 0; // NULL terminated - strncpy (value->c.string, prev, curr - prev); + strncpy(value->c.string, prev, curr - prev); } } @@ -1403,7 +1411,7 @@ // PWMD // #ifdef HAVE_LIBPWMD -static gboolean uget_plugin_aria2_set_proxy_pwmd (UgetPluginAria2 *plugin, UgValue* options) +static gboolean uget_plugin_aria2_set_proxy_pwmd(UgetPluginAria2 *plugin, UgInfo* info, UgValue* options) { struct pwmd_proxy_s pwmd; gpg_error_t rc; @@ -1411,7 +1419,7 @@ UgetProxy *proxy; memset(&pwmd, 0, sizeof(pwmd)); - proxy = ug_info_get (&plugin->node->info, UgetProxyInfo); + proxy = ug_info_get(info, UgetProxyInfo); rc = ug_set_pwmd_proxy_options(&pwmd, proxy); if (rc) @@ -1419,27 +1427,27 @@ // proxy host and port // host - UgValue *value = ug_value_alloc (options, 1); - value->name = ug_strdup ("all-proxy"); + UgValue *value = ug_value_alloc(options, 1); + value->name = ug_strdup("all-proxy"); value->type = UG_VALUE_STRING; if (pwmd.port == 0) - value->c.string = ug_strdup (pwmd.hostname); + value->c.string = ug_strdup(pwmd.hostname); else { - value->c.string = ug_strdup_printf ("%s:%u", pwmd.hostname, pwmd.port); + value->c.string = ug_strdup_printf("%s:%u", pwmd.hostname, pwmd.port); } // proxy user and password if (pwmd.username || pwmd.password) { // user - value = ug_value_alloc (options, 1); - value->name = ug_strdup ("all-proxy-user"); + value = ug_value_alloc(options, 1); + value->name = ug_strdup("all-proxy-user"); value->type = UG_VALUE_STRING; - value->c.string = ug_strdup (pwmd.username ? pwmd.username : ""); + value->c.string = ug_strdup(pwmd.username ? pwmd.username : ""); // password - value = ug_value_alloc (options, 1); - value->name = ug_strdup ("all-proxy-password"); + value = ug_value_alloc(options, 1); + value->name = ug_strdup("all-proxy-password"); value->type = UG_VALUE_STRING; - value->c.string = ug_strdup (pwmd.password ? pwmd.password : ""); + value->c.string = ug_strdup(pwmd.password ? pwmd.password : ""); } ug_close_pwmd(&pwmd); @@ -1448,75 +1456,11 @@ fail: ug_close_pwmd(&pwmd); gchar *e = g_strdup_printf("Pwmd ERR %i: %s", rc, gpg_strerror(rc)); - message = uget_event_new_error (UGET_EVENT_ERROR_CUSTOM, e); - uget_plugin_post ((UgetPlugin*) plugin, message); - fprintf(stderr, "%s\n", e); + message = uget_event_new_error(UGET_EVENT_ERROR_CUSTOM, e); + uget_plugin_post((UgetPlugin*) plugin, message); g_free(e); return FALSE; } #endif // HAVE_LIBPWMD -// ---------------------------------------------------------------------------- -// static utility functions - -static void aria2_file_clear (Aria2File* afile) -{ - afile->completedLength = 0; - afile->length = 0; - ug_free (afile->path); -} - -static void* aria2_file_array_find (Aria2FileArray* afiles, const char* path) -{ - Aria2File* beg; - Aria2File* end; - - beg = afiles->at; - end = beg + afiles->length; - for (; beg < end; beg++) { - if (strcmp (beg->path, path) == 0) - return beg; - } - return NULL; -} - -static void* ug_file_to_base64 (const char* file, int* length) -{ - int fd; - int fsize, fpos = 0; - int result_len; - void* buffer; - void* result; - -// fd = open (file, O_RDONLY | O_BINARY, S_IREAD); - fd = ug_open (file, UG_O_READONLY | UG_O_BINARY, UG_S_IREAD); - if (fd == -1) - return NULL; -// lseek (fd, 0, SEEK_END); - ug_seek (fd, 0, SEEK_END); - fsize = (int) ug_tell (fd); - buffer = ug_malloc (fsize); -// lseek (fd, 0, SEEK_SET); - ug_seek (fd, 0, SEEK_SET); - - do { - result_len = ug_read (fd, buffer, fsize - fpos); -// result_len = read (fd, buffer, fsize - fpos); - fpos += result_len; - } while (result_len > 0); -// close (fd); - ug_close (fd); - - if (fsize != fpos) { - ug_free (buffer); - return NULL; - } - - result = ug_base64_encode (buffer, fsize, &result_len); - ug_free (buffer); - if (length) - *length = result_len; - return result; -} - diff -Nru uget-2.0.2/uget/UgetPluginAria2.h uget-2.2.2/uget/UgetPluginAria2.h --- uget-2.0.2/uget/UgetPluginAria2.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetPluginAria2.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2011-2015 by C.H. Huang + * Copyright (C) 2011-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -46,23 +46,22 @@ extern "C" { #endif -typedef struct Aria2File Aria2File; typedef struct UgetPluginAria2 UgetPluginAria2; typedef struct UgetPluginAria2Setting UgetPluginAria2Setting; extern const UgetPluginInfo* UgetPluginAria2Info; typedef enum { - UGET_PLUGIN_ARIA2_OPTION = UGET_PLUGIN_OPTION_DERIVED, - UGET_PLUGIN_ARIA2_URI, // set parameter = (char* ) -// UGET_PLUGIN_ARIA2_LOCAL, // set parameter = (int* ) - UGET_PLUGIN_ARIA2_PATH, // set parameter = (char* ) - UGET_PLUGIN_ARIA2_ARGUMENT, // set parameter = (char* ) - UGET_PLUGIN_ARIA2_TOKEN, // set parameter = (char* ) - UGET_PLUGIN_ARIA2_LAUNCH, // get/set parameter = (int* ) - UGET_PLUGIN_ARIA2_SHUTDOWN, // set parameter = (int* ) - UGET_PLUGIN_ARIA2_SHUTDOWN_NOW, // set parameter = (int* ) -} UgetPluginAria2Code; + UGET_PLUGIN_ARIA2_GLOBAL = UGET_PLUGIN_GLOBAL_DERIVED, + UGET_PLUGIN_ARIA2_GLOBAL_URI, // set parameter = (char* ) +// UGET_PLUGIN_ARIA2_GLOBAL_LOCAL, // set parameter = (intptr_t) + UGET_PLUGIN_ARIA2_GLOBAL_PATH, // set parameter = (char* ) + UGET_PLUGIN_ARIA2_GLOBAL_ARGUMENT, // set parameter = (char* ) + UGET_PLUGIN_ARIA2_GLOBAL_TOKEN, // set parameter = (char* ) + UGET_PLUGIN_ARIA2_GLOBAL_LAUNCH, // get/set parameter = (intptr_t) + UGET_PLUGIN_ARIA2_GLOBAL_SHUTDOWN, // set parameter = (intptr_t) + UGET_PLUGIN_ARIA2_GLOBAL_SHUTDOWN_NOW, // set parameter = (intptr_t) +} UgetPluginAria2GlobalCode; typedef enum { UGET_PLUGIN_ARIA2_ERROR_NONE, @@ -70,30 +69,28 @@ UGET_PLUGIN_ARIA2_ERROR_LAUNCH, } UgetPluginAria2Error; -// ---------------------------------------------------------------------------- -// UgetPluginAria2File - -struct Aria2File -{ - char* path; - int64_t completedLength; - int64_t length; -}; +/* ---------------------------------------------------------------------------- + UgetPluginAria2: aria2 plug-in that derived from UgetPlugin. -typedef UG_ARRAY(Aria2File) Aria2FileArray; - -// ---------------------------------------------------------------------------- -// UgetPluginAria2: It derived from UgetPlugin. + UgType + | + `--- UgetPlugin + | + `--- UgetPluginAria2 + */ struct UgetPluginAria2 { - UGET_PLUGIN_MEMBERS; // It derived from UgetPlugin -// const UgetPluginInfo* info; -// UgetEvent* messages; -// UgMutex mutex; -// int ref_count; + UGET_PLUGIN_MEMBERS; +/* // ------ UgType members ------ + const UgetPluginInfo* info; + + // ------ UgetPlugin members ------ + UgetEvent* messages; + UgMutex mutex; + int ref_count; + */ - UgetNode* node; // aria2.addUri, aria2.addTorrent, aria2.addMetalink UgJsonrpcObject* start_request; time_t start_time; @@ -102,22 +99,8 @@ unsigned int retry_delay; // all gids and it's files UgArrayStr gids; - Aria2FileArray files; + UgetFiles* files; int files_per_gid; - int files_per_gid_prev; - - // speed limit control - // limit[0] = download speed limit - // limit[1] = upload speed limit - int limit[2]; - uint8_t limit_changed:1; - uint8_t limit_by_user:1; // speed limit changed by user - - // flags - uint8_t synced:1; - uint8_t stopped:1; - uint8_t restart:1; // for retry - uint8_t node_named:1; // aria2.tellStatus int status; @@ -127,6 +110,20 @@ int64_t uploadLength; int downloadSpeed; int uploadSpeed; + + // speed limit control + // limit[0] = download speed limit + // limit[1] = upload speed limit + int limit[2]; + int limit_upper[2]; + uint8_t limit_changed:1; // speed limit changed by user or program + + // flags + uint8_t synced:1; + uint8_t paused:1; // paused by user or program + uint8_t stopped:1; // download is stopped + uint8_t restart:1; // for retry + uint8_t named:1; }; // ---------------------------------------------------------------------------- @@ -157,14 +154,18 @@ namespace Uget { +const PluginInfo* const PluginAria2Info = (PluginInfo*) UgetPluginAria2Info; + // This one is for derived use only. No data members here. // Your derived struct/class must be C++11 standard-layout -struct PluginAria2Method : Uget::PluginMethod -{ -}; +struct PluginAria2Method : PluginMethod {}; // This one is for directly use only. You can NOT derived it. -struct PluginAria2 : Uget::PluginAria2Method, UgetPluginAria2 {}; +struct PluginAria2 : PluginAria2Method, UgetPluginAria2 +{ + inline void* operator new(size_t size) + { return uget_plugin_new(PluginAria2Info); } +}; }; // namespace Uget diff -Nru uget-2.0.2/uget/UgetPlugin.c uget-2.2.2/uget/UgetPlugin.c --- uget-2.0.2/uget/UgetPlugin.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetPlugin.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -41,40 +41,41 @@ // ------------------------------------ // UgetPluginInfo global functions -UgetPlugin* uget_plugin_new (const UgetPluginInfo* info) +UgetPlugin* uget_plugin_new(const UgetPluginInfo* info) { UgetPlugin* plugin; - plugin = ug_malloc0 (info->size); + plugin = ug_malloc0(info->size); plugin->info = info; - ug_mutex_init (&plugin->mutex); + ug_mutex_init(&plugin->mutex); plugin->ref_count = 1; - info->init (plugin); + info->init(plugin); return plugin; } -UgetResult uget_plugin_set (const UgetPluginInfo* info, int option, void* parameter) +UgetResult uget_plugin_global_set(const UgetPluginInfo* info, int option, void* parameter) { - UgetPluginSetFunc set; + UgetPluginGlobalFunc global_set; - set = info->set; - if (set) - return set (option, parameter); + global_set = info->global_set; + if (global_set) + return global_set(option, parameter); return UGET_RESULT_UNSUPPORT; } -UgetResult uget_plugin_get (const UgetPluginInfo* info, int option, void* parameter) +UgetResult uget_plugin_global_get(const UgetPluginInfo* info, int option, void* parameter) { - UgetPluginGetFunc get; + UgetPluginGlobalFunc global_get; - get = info->get; - if (get) - return get (option, parameter); + global_get = info->global_get; + if (global_get) + return global_get(option, parameter); return UGET_RESULT_UNSUPPORT; } -int uget_plugin_match (const UgetPluginInfo* info, UgUri* uuri) +int uget_plugin_match(const UgetPluginInfo* info, UgUri* uuri) { + UgetResult res; const char* str; int len; int matched_count = 0; @@ -82,18 +83,26 @@ if (info == NULL) return 0; - if (info->hosts && (len = ug_uri_part_host (uuri, &str))) { - if (ug_uri_match_hosts (uuri, (char**)info->hosts) >= 0) + if (info->hosts && (len = ug_uri_part_host(uuri, &str))) { + if (ug_uri_match_hosts(uuri, (char**)info->hosts) >= 0) { matched_count++; + // Don't match this plug-in if it is for specify host. + res = uget_plugin_global_get(info, UGET_PLUGIN_GLOBAL_MATCH, + (void*) uuri->uri); + if (res == UGET_RESULT_FAILED) + matched_count = -1; + else if (res == UGET_RESULT_OK) + matched_count = 2; + } } - if (info->schemes && (len = ug_uri_part_scheme (uuri, &str))) { - if (ug_uri_match_schemes (uuri, (char**)info->schemes) >= 0) + if (info->schemes && (len = ug_uri_part_scheme(uuri, &str))) { + if (ug_uri_match_schemes(uuri, (char**)info->schemes) >= 0) matched_count++; } - if (info->file_exts && (len = ug_uri_part_file_ext (uuri, &str))) { - if (ug_uri_match_file_exts (uuri, (char**)info->file_exts) >= 0) + if (info->file_exts && (len = ug_uri_part_file_ext(uuri, &str))) { + if (ug_uri_match_file_exts(uuri, (char**)info->file_exts) >= 0) matched_count++; } @@ -103,72 +112,92 @@ // ------------------------------------ // UgetPlugin functions -//void uget_plugin_init (UgetPlugin* plugin); -//void uget_plugin_final (UgetPlugin* plugin); -//void uget_plugin_assign (UgetPlugin* plugin, UgetPlugin* node); +//void uget_plugin_init(UgetPlugin* plugin); +#define uget_plugin_init ug_type_init + +//void uget_plugin_final(UgetPlugin* plugin); +#define uget_plugin_final ug_type_final -int uget_plugin_ctrl (UgetPlugin* plugin, int code, void* data) +void uget_plugin_ref(UgetPlugin* plugin) { - UgetPluginCtrlFunc ctrl; + plugin->ref_count++; +} - ctrl = plugin->info->ctrl; - if (ctrl) - return ctrl (plugin, code, data); +void uget_plugin_unref(UgetPlugin* plugin) +{ + UgetEvent* curr; + UgetEvent* next; + + if (--plugin->ref_count == 0) { + uget_plugin_final(plugin); + ug_mutex_clear(&plugin->mutex); + // free events + for (curr = plugin->events; curr; curr = next) { + next = curr->next; + uget_event_free(curr); + } + // free plug-in + ug_free(plugin); + } +} + +int uget_plugin_accept(UgetPlugin* plugin, UgInfo* info) +{ + UgetPluginSyncFunc accept; + + accept = plugin->info->accept; + if (accept) + return accept(plugin, info); return FALSE; } -int uget_plugin_sync (UgetPlugin* plugin) +int uget_plugin_sync(UgetPlugin* plugin, UgInfo* info) { UgetPluginSyncFunc sync; sync = plugin->info->sync; if (sync) - return sync (plugin); + return sync(plugin, info); return FALSE; } -void uget_plugin_ref (UgetPlugin* plugin) +int uget_plugin_ctrl(UgetPlugin* plugin, int code, void* data) { - plugin->ref_count++; + UgetPluginCtrlFunc ctrl; + + ctrl = plugin->info->ctrl; + if (ctrl) + return ctrl(plugin, code, data); + return FALSE; } -void uget_plugin_unref (UgetPlugin* plugin) +int uget_plugin_get_state(UgetPlugin* plugin) { - UgetEvent* curr; - UgetEvent* next; + int is_active; - if (--plugin->ref_count == 0) { - uget_plugin_final (plugin); - ug_mutex_clear (&plugin->mutex); - // free events - for (curr = plugin->events; curr; curr = next) { - next = curr->next; - uget_event_free (curr); - } - // free plugin - ug_free (plugin); - } + uget_plugin_ctrl(plugin, UGET_PLUGIN_GET_STATE, &is_active); + return is_active; } -void uget_plugin_post (UgetPlugin* plugin, UgetEvent* message) +void uget_plugin_post(UgetPlugin* plugin, UgetEvent* message) { - ug_mutex_lock (&plugin->mutex); + ug_mutex_lock(&plugin->mutex); if (plugin->events) plugin->events->prev = message; message->next = plugin->events; plugin->events = message; - ug_mutex_unlock (&plugin->mutex); + ug_mutex_unlock(&plugin->mutex); } -UgetEvent* uget_plugin_pop (UgetPlugin* plugin) +UgetEvent* uget_plugin_pop(UgetPlugin* plugin) { UgetEvent* curr; UgetEvent* next; - ug_mutex_lock (&plugin->mutex); + ug_mutex_lock(&plugin->mutex); curr = plugin->events; plugin->events = NULL; - ug_mutex_unlock (&plugin->mutex); + ug_mutex_unlock(&plugin->mutex); // revert while (curr) { diff -Nru uget-2.0.2/uget/UgetPluginCurl.c uget-2.2.2/uget/UgetPluginCurl.c --- uget-2.0.2/uget/UgetPluginCurl.c 2015-09-11 12:12:53.000000000 +0000 +++ uget-2.2.2/uget/UgetPluginCurl.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -38,6 +38,14 @@ #define _CRT_SECURE_NO_WARNINGS #endif +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef __ANDROID__ +#include +#endif + #include #include #include @@ -52,21 +60,24 @@ #include #define ug_sleep Sleep #else +#include // posix_fallocate() #include // sleep(), usleep() -#define ug_sleep(millisecond) usleep (millisecond * 1000) +#define ug_sleep(millisecond) usleep(millisecond * 1000) #endif // _WIN32 || _WIN64 #if defined(_MSC_VER) #define strtoll _strtoi64 // stdlib.h #endif +#define MIN_SPLIT_SIZE (10 * 1024 * 1024) // can't less than 16384 x 2 +#define MIN_SPEED_LIMIT 256 // speed control #define MAX_REPEAT_DIGITS 5 // + '.' + digits #define MAX_REPEAT_COUNTS 10000 // <= 9999 typedef struct UriLink UriLink; struct UriLink { - UG_LINK_MEMBERS (UriLink, UriLink, self); + UG_LINK_MEMBERS(UriLink, UriLink, self); // UriLink* self; // UriLink* next; // UriLink* prev; @@ -79,33 +90,32 @@ }; // ---------------------------------------------------------------------------- -// UgetPluginInfo (derived from UgDataInfo) +// UgetPluginInfo (derived from UgTypeInfo) -static void plugin_init (UgetPluginCurl* plugin); -static void plugin_final (UgetPluginCurl* plugin); -static int plugin_ctrl (UgetPluginCurl* plugin, int code, void* data); -static int plugin_sync (UgetPluginCurl* plugin); -static UgetResult global_set (int code, void* parameter); -static UgetResult global_get (int code, void* parameter); +static void plugin_init (UgetPluginCurl* plugin); +static void plugin_final(UgetPluginCurl* plugin); +static int plugin_ctrl (UgetPluginCurl* plugin, int code, void* data); +static int plugin_accept(UgetPluginCurl* plugin, UgInfo* node_info); +static int plugin_sync (UgetPluginCurl* plugin, UgInfo* node_info); +static UgetResult global_set(int code, void* parameter); +static UgetResult global_get(int code, void* parameter); static const char* schemes[] = {"http", "https", "ftp", "ftps", NULL}; -static const char* types[] = {NULL}; static const UgetPluginInfo UgetPluginCurlInfoStatic = { "curl", - sizeof (UgetPluginCurl), - (const UgEntry*) NULL, + sizeof(UgetPluginCurl), (UgInitFunc) plugin_init, (UgFinalFunc) plugin_final, - (UgAssignFunc) NULL, - (UgetPluginCtrlFunc) plugin_ctrl, + (UgetPluginSyncFunc) plugin_accept, (UgetPluginSyncFunc) plugin_sync, + (UgetPluginCtrlFunc) plugin_ctrl, NULL, schemes, - types, - (UgetPluginSetFunc) global_set, - (UgetPluginGetFunc) global_get + NULL, + (UgetPluginGlobalFunc) global_set, + (UgetPluginGlobalFunc) global_get }; // extern const UgetPluginInfo* UgetPluginCurlInfo = &UgetPluginCurlInfoStatic; @@ -119,17 +129,17 @@ int ref_count; } global = {0, 0}; -static UgetResult global_init (void) +static UgetResult global_init(void) { if (global.initialized == FALSE) { #if defined _WIN32 || defined _WIN64 WSADATA WSAData; - WSAStartup (MAKEWORD (2, 2), &WSAData); + WSAStartup(MAKEWORD(2, 2), &WSAData); #endif // _WIN32 || _WIN64 - if (curl_global_init (CURL_GLOBAL_ALL) != CURLE_OK) { + if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) { #if defined _WIN32 || defined _WIN64 - WSACleanup (); + WSACleanup(); #endif return UGET_RESULT_ERROR; } @@ -140,12 +150,12 @@ return UGET_RESULT_OK; } -static void global_ref (void) +static void global_ref(void) { global.ref_count++; } -static void global_unref (void) +static void global_unref(void) { if (global.initialized == FALSE) return; @@ -153,22 +163,22 @@ global.ref_count--; if (global.ref_count == 0) { global.initialized = FALSE; - curl_global_cleanup (); + curl_global_cleanup(); #if defined _WIN32 || defined _WIN64 - WSACleanup (); + WSACleanup(); #endif } } -static UgetResult global_set (int option, void* parameter) +static UgetResult global_set(int option, void* parameter) { switch (option) { - case UGET_PLUGIN_INIT: + case UGET_PLUGIN_GLOBAL_INIT: // do global initialize/uninitialize here if (parameter) - return global_init (); + return global_init(); else - global_unref (); + global_unref(); break; default: @@ -178,10 +188,10 @@ return UGET_RESULT_OK; } -static UgetResult global_get (int option, void* parameter) +static UgetResult global_get(int option, void* parameter) { switch (option) { - case UGET_PLUGIN_INIT: + case UGET_PLUGIN_GLOBAL_INIT: if (parameter) *(int*)parameter = global.initialized; break; @@ -194,335 +204,316 @@ } // ---------------------------------------------------------------------------- -// plugins functions +// plug-in functions -static void plugin_init (UgetPluginCurl* plugin) +static void plugin_init(UgetPluginCurl* plugin) { if (global.initialized == FALSE) - global_init (); + global_init(); else - global_ref (); + global_ref(); - ug_list_init (&plugin->seg.list); + ug_list_init(&plugin->segment.list); plugin->file.time = -1; plugin->synced = TRUE; + plugin->paused = TRUE; plugin->stopped = TRUE; } -static void plugin_final (UgetPluginCurl* plugin) +static void plugin_final(UgetPluginCurl* plugin) { - if (plugin->node) - uget_node_unref (plugin->node); if (plugin->common) - ug_data_free (plugin->common); + ug_data_free(plugin->common); + if (plugin->files) + ug_data_free(plugin->files); if (plugin->proxy) - ug_data_free (plugin->proxy); + ug_data_free(plugin->proxy); if (plugin->http) - ug_data_free (plugin->http); + ug_data_free(plugin->http); if (plugin->ftp) - ug_data_free (plugin->ftp); + ug_data_free(plugin->ftp); // free uri.list (UriLink), all link will be freed. - ug_list_foreach (&plugin->uri.list, (UgForeachFunc) ug_free, NULL); + ug_list_foreach(&plugin->uri.list, (UgForeachFunc) ug_free, NULL); -// curl_slist_free_all (plugin->ftp_command); - ug_free (plugin->file.path); - ug_free (plugin->aria2.path); +// curl_slist_free_all(plugin->ftp_command); + ug_free(plugin->folder.path); + ug_free(plugin->file.name_fmt); + ug_free(plugin->file.path); + ug_free(plugin->aria2.path); - global_unref (); + global_unref(); } // ---------------------------------------------------------------------------- // plugin_ctrl -static int plugin_ctrl_speed (UgetPluginCurl* plugin, int* speed); -static int plugin_start (UgetPluginCurl* plugin, UgetNode* node); +static int plugin_ctrl_speed(UgetPluginCurl* plugin, int* speed); +static int plugin_start(UgetPluginCurl* plugin); -static int plugin_ctrl (UgetPluginCurl* plugin, int code, void* data) +static int plugin_ctrl(UgetPluginCurl* plugin, int code, void* data) { switch (code) { case UGET_PLUGIN_CTRL_START: - if (plugin->node == NULL) - return plugin_start (plugin, data); + if (plugin->common) + return plugin_start(plugin); break; case UGET_PLUGIN_CTRL_STOP: - plugin->stopped = TRUE; + plugin->paused = TRUE; return TRUE; case UGET_PLUGIN_CTRL_SPEED: // speed control - return plugin_ctrl_speed (plugin, data); + return plugin_ctrl_speed(plugin, data); - case UGET_PLUGIN_CTRL_NODE_UPDATED: + // state ---------------- + case UGET_PLUGIN_GET_STATE: + *(int*)data = (plugin->stopped) ? FALSE : TRUE; + return TRUE; + + default: break; } return FALSE; } -static int plugin_ctrl_speed (UgetPluginCurl* plugin, int* speed) +static int plugin_ctrl_speed(UgetPluginCurl* plugin, int* speed) { UgetCommon* common; int value; - // Don't do anything if speed limit keep no change. - if (plugin->limit.download == speed[0] && plugin->limit.upload == speed[1]) - if (plugin->limit_by_user == FALSE) - return TRUE; - plugin->limit_by_user = FALSE; + // notify plug-in that speed limit has been changed + if (plugin->limit.download != speed[0] || plugin->limit.upload != speed[1]) + plugin->limit_changed = TRUE; // decide speed limit by user specified data. - if (plugin->node == NULL) { + common = plugin->common; + if (common == NULL) { plugin->limit.download = speed[0]; - plugin->limit.upload = speed[1]; + plugin->limit.upload = speed[1]; } else { - common = plugin->common; // download value = speed[0]; if (common->max_download_speed) { - if (value > common->max_download_speed || value == 0) + if (value > common->max_download_speed || value == 0) { value = common->max_download_speed; + plugin->limit_changed = TRUE; + } } plugin->limit.download = value; // upload value = speed[1]; if (common->max_upload_speed) { - if (value > common->max_upload_speed || value == 0) + if (value > common->max_upload_speed || value == 0) { value = common->max_upload_speed; + plugin->limit_changed = TRUE; + } } plugin->limit.upload = value; } - // notify plugin that speed limit has been changed - plugin->limit_changed = TRUE; - return TRUE; + return plugin->limit_changed; } // ---------------------------------------------------------------------------- // plugin_sync -static void plugin_clear_node (UgetPluginCurl* plugin); -static void plugin_remove_node (UgetPluginCurl* plugin, const char* fpath); -static int plugin_insert_node (UgetPluginCurl* plugin, - const char* fpath, int is_attachment); - -static int plugin_sync (UgetPluginCurl* plugin) +static int plugin_sync(UgetPluginCurl* plugin, UgInfo* node_info) { - UgetNode* node; UgetCommon* common; + UgetFiles* files; UgetProgress* progress; char* name; + int speed[2]; if (plugin->stopped) { if (plugin->synced) return FALSE; - plugin->synced = TRUE; + plugin->synced = TRUE; } - if (plugin->node == NULL) - return TRUE; + // avoid crash if plug-in failed to start. + if (plugin->common == NULL) + return FALSE; - node = plugin->node; - common = ug_info_realloc (&node->info, UgetCommonInfo); + // sync data between plug-in and foreign UgData + common = ug_info_realloc(node_info, UgetCommonInfo); common->retry_count = plugin->common->retry_count; - // sync changed limit from UgetNode - if (plugin->common->max_upload_speed != common->max_upload_speed || + // sync changed limit from node_info + if (plugin->common->max_upload_speed != common->max_upload_speed || plugin->common->max_download_speed != common->max_download_speed) { - plugin->common->max_upload_speed = common->max_upload_speed; + // speed control + plugin->common->max_upload_speed = common->max_upload_speed; plugin->common->max_download_speed = common->max_download_speed; - plugin->limit_by_user = TRUE; - } - plugin->common->max_connections = common->max_connections; - plugin->common->retry_limit = common->retry_limit; - if (common->max_connections > 0) - plugin->seg.n_max = common->max_connections; + speed[1] = common->max_upload_speed; + speed[0] = common->max_download_speed; + plugin_ctrl_speed(plugin, speed); + } + plugin->common->max_connections = common->max_connections; + plugin->common->retry_limit = common->retry_limit; + if (common->max_connections > 0) + plugin->segment.n_max = common->max_connections; - progress = ug_info_realloc (&node->info, UgetProgressInfo); + progress = ug_info_realloc(node_info, UgetProgressInfo); progress->upload_speed = plugin->speed.upload; progress->download_speed = plugin->speed.download; - if (plugin->size.upload || plugin->size.download) { - progress->uploaded = plugin->size.upload; - progress->complete = plugin->size.download; + progress->uploaded = plugin->size.upload; + progress->complete = plugin->size.download; - if (plugin->file.size > 0) - progress->total = plugin->file.size; - else - progress->total = progress->complete; + if (plugin->file.size > 0) + progress->total = plugin->file.size; + else + progress->total = progress->complete; - if (progress->total > 0) - progress->percent = progress->complete * 100 / progress->total; - else - progress->percent = 0; - } + if (progress->total > 0) + progress->percent = (int) (progress->complete * 100 / progress->total); + else + progress->percent = 0; // If total size and average speed is unknown, don't calculate remain time. if (progress->download_speed > 0 && progress->total > 0) { - progress->remain_time = (progress->total - progress->complete) / + progress->left = (progress->total - progress->complete) / progress->download_speed; } - progress->consume_time = time(NULL) - plugin->start_time; + // consume time + progress->elapsed = time(NULL) - plugin->start_time; - // add UgetNode for file & attachment + // update UgetFiles + files = ug_info_realloc(node_info, UgetFilesInfo); + uget_plugin_lock(plugin); + uget_files_sync(files, plugin->files); + uget_plugin_unlock(plugin); + // set name if (plugin->file_renamed && plugin->file.path) { plugin->file_renamed = FALSE; - plugin_clear_node (plugin); - plugin_insert_node (plugin, plugin->file.path, FALSE); - // change node name + // change name #if defined _WIN32 || defined _WIN64 - name = strrchr (plugin->file.path, '\\'); + name = strrchr(plugin->file.path, '\\'); #else - name = strrchr (plugin->file.path, '/'); + name = strrchr(plugin->file.path, '/'); #endif if (name && name[1]) { - if (node->name == NULL || strcmp (name, node->name)) { - ug_free (node->name); - node->name = ug_strdup (name + 1); - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new (UGET_EVENT_NAME)); + if (common->name == NULL || strcmp(name, common->name)) { + ug_free(common->name); + common->name = ug_strdup(name + 1); + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new(UGET_EVENT_NAME)); } - ug_free (common->file); - common->file = ug_strdup (name + 1); - } - } - if (plugin->aria2.path) { - if (plugin->file.size == plugin->size.download) - plugin_remove_node (plugin, plugin->aria2.path); - else if (plugin->aria2_created == FALSE) { - plugin->aria2_created = TRUE; - plugin_insert_node (plugin, plugin->aria2.path, TRUE); + ug_free(common->file); + common->file = ug_strdup(name + 1); } } - return TRUE; -} - -static int plugin_insert_node (UgetPluginCurl* plugin, - const char* fpath, int is_attachment) -{ - UgetNode* node; - - for (node = plugin->node->children; node; node = node->next) { - if (strcmp (node->name, fpath) == 0) - return FALSE; - } - node = uget_node_new (NULL); - node->name = ug_strdup (fpath); - uget_node_prepend (plugin->node, node); - if (is_attachment) - node->type = UGET_NODE_ATTACHMENT; return TRUE; } -static void plugin_remove_node (UgetPluginCurl* plugin, const char* fpath) -{ - UgetNode* node; - - for (node = plugin->node->children; node; node = node->next) { - if (strcmp (node->name, fpath) == 0) { - uget_node_remove (plugin->node, node); - uget_node_unref (node); - return; - } - } -} - -static void plugin_clear_node (UgetPluginCurl* plugin) -{ - UgetNode* node; - UgetNode* next; - - for (node = plugin->node->children; node; node = next) { - next = node->next; - uget_node_remove (plugin->node, node); - uget_node_unref (node); - } -} - // ---------------------------------------------------------------------------- -// plugin_start +// plugin_accept/plugin_start -static void plugin_setup_uris (UgetPluginCurl* plugin); -static UG_THREAD_RETURN_TYPE plugin_thread (UgetPluginCurl* plugin); +static void plugin_decide_uris(UgetPluginCurl* plugin); +static void plugin_decide_folder(UgetPluginCurl* plugin); +static void plugin_decide_files(UgetPluginCurl* plugin); +static UgThreadResult plugin_thread(UgetPluginCurl* plugin); -static int plugin_start (UgetPluginCurl* plugin, UgetNode* node) +static int plugin_accept(UgetPluginCurl* plugin, UgInfo* node_info) { - UgThread thread; - int ok; - int speed[2]; - - plugin->common = ug_info_get (&node->info, UgetCommonInfo); - if (plugin->common == NULL || plugin->common->uri == NULL) - return FALSE; - plugin->common = ug_data_copy (plugin->common); - plugin_setup_uris (plugin); - - plugin->proxy = ug_info_get (&node->info, UgetProxyInfo); - if (plugin->proxy) - plugin->proxy = ug_data_copy (plugin->proxy); + union { + UgetCommon* common; + UgetFiles* files; + UgetProxy* proxy; + UgetHttp* http; + UgetFtp* ftp; + } temp; + int speed[2]; - plugin->http = ug_info_get (&node->info, UgetHttpInfo); - if (plugin->http) - plugin->http = ug_data_copy (plugin->http); + temp.common = ug_info_get(node_info, UgetCommonInfo); + if (temp.common == NULL || temp.common->uri == NULL) + return FALSE; + plugin->common = ug_data_copy(temp.common); + plugin_decide_uris(plugin); + plugin_decide_folder(plugin); + // speed control: decide speed limit before starting plug-in + speed[0] = plugin->limit.download; + speed[1] = plugin->limit.upload; + plugin_ctrl_speed(plugin, speed); - plugin->ftp = ug_info_get (&node->info, UgetFtpInfo); - if (plugin->ftp) - plugin->ftp = ug_data_copy (plugin->ftp); + temp.files = ug_info_get(node_info, UgetFilesInfo); + if (temp.files) + plugin->files = ug_data_copy(temp.files); + else + plugin->files = ug_data_new(UgetFilesInfo); - // check http->post_file - if (plugin->http->post_file) { - if (ug_file_is_exist (plugin->http->post_file) == FALSE) { - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_error (UGET_EVENT_ERROR_POST_FILE_NOT_FOUND, - NULL)); - return FALSE; + temp.proxy = ug_info_get(node_info, UgetProxyInfo); + if (temp.proxy) + plugin->proxy = ug_data_copy(temp.proxy); + + temp.http = ug_info_get(node_info, UgetHttpInfo); + if (temp.http) { + plugin->http = ug_data_copy(temp.http); + // check http->post_file + if (temp.http->post_file) { + if (ug_file_is_exist(temp.http->post_file) == FALSE) { + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(UGET_EVENT_ERROR_POST_FILE_NOT_FOUND, + NULL)); + return FALSE; + } } - } - // check http->cookie_file - if (plugin->http->cookie_file) { - if (ug_file_is_exist (plugin->http->cookie_file) == FALSE) { - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_error (UGET_EVENT_ERROR_COOKIE_FILE_NOT_FOUND, - NULL)); - return FALSE; + // check http->cookie_file + if (temp.http->cookie_file) { + if (ug_file_is_exist(temp.http->cookie_file) == FALSE) { + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(UGET_EVENT_ERROR_COOKIE_FILE_NOT_FOUND, + NULL)); + return FALSE; + } } } - // assign node before speed control - uget_node_ref (node); - plugin->node = node; - // speed control - speed[0] = plugin->limit.download; - speed[1] = plugin->limit.upload; - plugin_ctrl_speed (plugin, speed); - plugin->limit_changed = FALSE; + temp.ftp = ug_info_get(node_info, UgetFtpInfo); + if (temp.ftp) + plugin->ftp = ug_data_copy(temp.ftp); + + return TRUE; +} +static int plugin_start(UgetPluginCurl* plugin) +{ + UgThread thread; + int ok; + + plugin->start_time = time(NULL); // try to start thread + plugin->paused = FALSE; plugin->stopped = FALSE; - uget_plugin_ref ((UgetPlugin*) plugin); - ok = ug_thread_create (&thread, (UgThreadFunc) plugin_thread, plugin); + uget_plugin_ref((UgetPlugin*) plugin); + ok = ug_thread_create(&thread, (UgThreadFunc) plugin_thread, plugin); if (ok == UG_THREAD_OK) - ug_thread_unjoin (&thread); + ug_thread_unjoin(&thread); else { - // failed to start thread + // failed to start thread ----------------- + plugin->paused = TRUE; plugin->stopped = TRUE; - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_error (UGET_EVENT_ERROR_THREAD_CREATE_FAILED, - NULL)); - uget_plugin_unref ((UgetPlugin*) plugin); + // post error message and decreases the reference count + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(UGET_EVENT_ERROR_THREAD_CREATE_FAILED, + NULL)); + uget_plugin_unref((UgetPlugin*) plugin); return FALSE; } return TRUE; } -static UriLink* plugin_replace_uri (UgetPluginCurl* plugin, UriLink* old_link, - const char* uri, int uri_len) +static UriLink* plugin_replace_uri(UgetPluginCurl* plugin, UriLink* old_link, + const char* uri, int uri_len) { UriLink* uri_link; if (uri_len == -1) - uri_len = strlen (uri); - uri_link = ug_malloc (sizeof (UriLink) + uri_len); - strncpy (uri_link->uri, uri, uri_len); + uri_len = strlen(uri); + uri_link = ug_malloc(sizeof(UriLink) + uri_len); + strncpy(uri_link->uri, uri, uri_len); uri_link->uri[uri_len] = 0; // null terminated uri_link->self = uri_link; uri_link->next = NULL; @@ -534,20 +525,20 @@ // add to list if (old_link == NULL) - ug_list_append (&plugin->uri.list, (void*) uri_link); + ug_list_append(&plugin->uri.list, (void*) uri_link); else { - ug_list_insert (&plugin->uri.list, (void*) old_link, + ug_list_insert(&plugin->uri.list, (void*) old_link, (void*) uri_link); - ug_list_remove (&plugin->uri.list, (void*) old_link); + ug_list_remove(&plugin->uri.list, (void*) old_link); if (plugin->uri.link == (void*) old_link) plugin->uri.link = (void*) uri_link; - ug_free (old_link); + ug_free(old_link); } return uri_link; } -static void plugin_setup_uris (UgetPluginCurl* plugin) +static void plugin_decide_uris(UgetPluginCurl* plugin) { UgetCommon* common; const char* curr; @@ -555,9 +546,9 @@ common = plugin->common; // uri - plugin->uri.link = (void*) plugin_replace_uri (plugin, NULL, - common->uri, -1); - ug_free (common->uri); + plugin->uri.link = (void*) plugin_replace_uri(plugin, NULL, + common->uri, -1); + ug_free(common->uri); common->uri = NULL; // mirrors for (curr = common->mirrors; curr && curr[0];) { @@ -565,34 +556,82 @@ while (curr[0] == ' ') curr++; prev = curr; - curr = curr + strcspn (curr, " "); + curr = curr + strcspn(curr, " "); // add to uri.list - plugin_replace_uri (plugin, NULL, prev, curr - prev); + plugin_replace_uri(plugin, NULL, prev, curr - prev); } - ug_free (common->mirrors); + ug_free(common->mirrors); common->mirrors = NULL; } +static void plugin_decide_folder(UgetPluginCurl* plugin) +{ + UgetCommon* common; + int length; + int value; + + // folder + common = plugin->common; + if (common->folder == NULL || common->folder[0] == 0) + length = 0; + else { + length = strlen(common->folder); + value = common->folder[length - 1]; + plugin->folder.path = ug_malloc(length + 2); // + '/' + '\x0' + plugin->folder.path[0] = 0; + strcpy(plugin->folder.path, common->folder); + if (value != '\\' || value != '/') { +#if defined _WIN32 || defined _WIN64 + strcat(plugin->folder.path, "\\"); +#else + strcat(plugin->folder.path, "/"); +#endif + length++; + } + } + plugin->folder.length = length; +} + +static void plugin_decide_files(UgetPluginCurl* plugin) +{ + // update UgetFiles + uget_plugin_lock(plugin); + // insert/replace file into files + if (plugin->aria2.path) { + uget_files_replace(plugin->files, + plugin->aria2.path, + UGET_FILE_TEMPORARY, 0); + } + uget_files_replace(plugin->files, + plugin->file.path, + UGET_FILE_REGULAR, 0); + uget_plugin_unlock(plugin); +} + // ---------------------------------------------------------------------------- // plugin_thread -#define N_THREAD(plugin) ((plugin)->seg.list.size - (plugin)->seg.n_recycled) +#define N_THREAD(plugin) ((plugin)->segment.list.size) -static void delay_ms (UgetPluginCurl* plugin, int milliseconds); -static int switch_uri (UgetPluginCurl* plugin, UgetCurl* ugcurl, int is_resumable); -static int prepare_file (UgetCurl* ugcurl, UgetPluginCurl* plugin); -static void complete_file (UgetPluginCurl* plugin); -static int load_file_info (UgetPluginCurl* plugin); -static int split_download (UgetPluginCurl* plugin, UgetCurl* ugcurl); -static void adjust_speed_limit (UgetPluginCurl* plugin); -static UgetCurl* create_segment (UgetPluginCurl* plugin); +static void delay_ms(UgetPluginCurl* plugin, int milliseconds); +static int switch_uri(UgetPluginCurl* plugin, UgetCurl* ugcurl, int is_resumable); +static int prepare_file(UgetCurl* ugcurl, UgetPluginCurl* plugin); +static char* get_repeating_fmt_string(char* filename); +static void complete_file(UgetPluginCurl* plugin); +static int load_file_info(UgetPluginCurl* plugin); +static void clear_file_info(UgetPluginCurl* plugin); +static int reuse_download(UgetPluginCurl* plugin, UgetCurl* ugcurl, int next_uri); +static int split_download(UgetPluginCurl* plugin, UgetCurl* ugcurl); +static void adjust_speed_limit(UgetPluginCurl* plugin); +static UgetCurl* create_segment(UgetPluginCurl* plugin); -static UG_THREAD_RETURN_TYPE plugin_thread (UgetPluginCurl* plugin) +static UgThreadResult plugin_thread(UgetPluginCurl* plugin) { UgetCommon* common; UgetCurl* ugcurl; UgetCurl* ugnext; int counter; + int n_active_last = 0; struct { int64_t upload; int64_t download; @@ -600,275 +639,325 @@ common = plugin->common; common->retry_count = 0; - plugin->seg.n_max = common->max_connections; - if (plugin->seg.n_max == 0) - plugin->seg.n_max = 1; - - ugcurl = create_segment (plugin); - if (load_file_info (plugin)) { - uget_curl_open_file (ugcurl, plugin->file.path); - ugcurl->beg = plugin->seg.beg; - uget_a2cf_lack (&plugin->aria2.ctrl, - (uint64_t*) &ugcurl->beg, - (uint64_t*) &ugcurl->end); - plugin->seg.beg = ugcurl->end; + plugin->segment.n_max = common->max_connections; + if (plugin->segment.n_max == 0) + plugin->segment.n_max = 1; + + // create new segment and add it to segment.list + ugcurl = create_segment(plugin); + if (load_file_info(plugin)) { + uget_curl_open_file(ugcurl, plugin->file.path); + ugcurl->beg = plugin->segment.beg; + uget_a2cf_lack(&plugin->aria2.ctrl, + (uint64_t*) &ugcurl->beg, + (uint64_t*) &ugcurl->end); + plugin->segment.beg = ugcurl->end; + // plugin_sync() will set foreign UgetCommon::name + plugin->file_renamed = TRUE; + plugin->synced = FALSE; } else { + clear_file_info(plugin); ugcurl->prepare.func = (UgetCurlFunc) prepare_file; ugcurl->prepare.data = plugin; ugcurl->header_store = TRUE; } - // add to seg.list - ug_list_append (&plugin->seg.list, (void*) ugcurl); - // - plugin->start_time = time (NULL); - uget_curl_run (ugcurl, FALSE); + ug_list_append(&plugin->segment.list, (void*) ugcurl); + + // start curl + uget_curl_run(ugcurl, FALSE); // main loop for (counter = 0; N_THREAD(plugin) > 0; counter++) { // sleep 0.5 second - ug_sleep (500); - // reset data, program will count them later - plugin->seg.n_active = 0; + ug_sleep(500); + // reset data, plug-in will count them (in segment loop) later + plugin->segment.n_active = 0; size.upload = 0; size.download = 0; speed.upload = 0; speed.download = 0; - ugcurl = (UgetCurl*)plugin->seg.list.head; + // segment loop + ugcurl = (UgetCurl*) plugin->segment.list.head; for (; ugcurl; ugcurl = ugnext) { ugnext = ugcurl->next; - // split download, use with split_download() + + // split download, use these code with split_download() if (ugcurl->split) { if (ugcurl->prev == NULL || ugcurl->prev->end < ugcurl->beg) ugcurl->split = FALSE; - // if prev one overwrite. - else if (ugcurl->pos < ugcurl->prev->pos) { + else if (ugcurl->beg < ugcurl->prev->pos) { + // if previous segment overwrite current one. ugcurl->split = FALSE; - ugcurl->stopped = TRUE; + ugcurl->paused = TRUE; ugcurl->end = ugcurl->beg; ugcurl->pos = ugcurl->beg; ugcurl->size[0] = 0; #ifndef NDEBUG if (common->debug_level) { - printf ("\n" "overwrite %u KiB\n", - (unsigned) ugcurl->beg / 1024); + printf("\n" + "previous segment overwrite at %u KiB\n", + (unsigned) (ugcurl->beg / 1024)); } #endif } - else if (ugcurl->state == UGET_CURL_RUN) { + else if (ugcurl->beg < ugcurl->pos) { + // If this segment has downloaded data, + // plug-in split new segment from previous one. ugcurl->split = FALSE; ugcurl->prev->end = ugcurl->beg; if (ugcurl->prev->pos > ugcurl->beg) { ugcurl->prev->pos = ugcurl->beg; - ugcurl->prev->stopped = TRUE; ugcurl->prev->size[0] = ugcurl->prev->pos - ugcurl->prev->beg; } #ifndef NDEBUG if (common->debug_level) { - printf ("\n" "split %u KiB\n", - (unsigned) ugcurl->beg / 1024); + printf("\n" + "split new segment at %u KiB\n", + (unsigned) (ugcurl->beg / 1024)); } #endif } } - // if user want to stop plugin, it must stop all UgetCurl in list. - if (plugin->stopped) { - ugcurl->stopped = TRUE; - plugin->seg.n_max = 0; + + // if user want to stop plug-in, it must stop all UgetCurl in list. + if (plugin->paused) { + ugcurl->paused = TRUE; + plugin->segment.n_max = 0; } - // update aria2 ctrl file progress + // update aria2 control file progress if (plugin->aria2.path) - uget_a2cf_fill (&plugin->aria2.ctrl, ugcurl->beg, ugcurl->pos); + uget_a2cf_fill(&plugin->aria2.ctrl, ugcurl->beg, ugcurl->pos); // progress - if (ugcurl->state > UGET_CURL_RUN) { + if (ugcurl->state >= UGET_CURL_OK) { + // ugcurl has stopped plugin->base.upload += ugcurl->size[1]; plugin->base.download += ugcurl->size[0]; } - else if (ugcurl->state > UGET_CURL_READY) { + else if (ugcurl->state == UGET_CURL_RUN) { size.upload += ugcurl->size[1]; size.download += ugcurl->size[0]; speed.upload += ugcurl->speed[1]; speed.download += ugcurl->speed[0]; } + // handle UgetCurl by state switch (ugcurl->state) { - case UGET_CURL_RECYCLED: - case UGET_CURL_READY: + default: break; case UGET_CURL_RUN: - plugin->seg.n_active++; + plugin->segment.n_active++; break; case UGET_CURL_OK: - ugcurl->state = UGET_CURL_READY; - if (split_download (plugin, ugcurl) == FALSE) { + ugcurl->state = UGET_CURL_RESPLIT; + // special case for unknown file size + if (plugin->file.size == 0 && N_THREAD (plugin) == 1) { + complete_file(plugin); // delete download - ug_list_remove (&plugin->seg.list, (void*)ugcurl); - uget_curl_free (ugcurl); + ug_list_remove(&plugin->segment.list, (void*)ugcurl); + uget_curl_free(ugcurl); } - if (plugin->file.size == 0 && N_THREAD (plugin) == 0) - complete_file (plugin); + break; + + case UGET_CURL_ABORT: + // delete download + ug_list_remove(&plugin->segment.list, (void*)ugcurl); + uget_curl_free(ugcurl); break; case UGET_CURL_ERROR: -#if 1 - if (ugcurl->event_code == UGET_EVENT_ERROR_CONNECT_FAILED) - switch_uri (plugin, ugcurl, FALSE); -#else - if (ugcurl->event_code == UGET_EVENT_ERROR_CONNECT_FAILED) { - if (switch_uri (plugin, ugcurl, FALSE)) { - uget_curl_run (ugcurl, FALSE); - break; - } - } -#endif - // recycle current UgetCurl - ugcurl->state = UGET_CURL_RECYCLED; - plugin->seg.n_recycled++; - if (N_THREAD (plugin) == 0) { -// plugin->node->state |= UGET_STATE_ERROR; + // if no other downloading segment, plug-in response error + if (N_THREAD(plugin) == 1) { + // post error message if (ugcurl->event) { - uget_plugin_post ((UgetPlugin*) plugin, ugcurl->event); + uget_plugin_post((UgetPlugin*) plugin, ugcurl->event); ugcurl->event = NULL; } + // delete download + ug_list_remove(&plugin->segment.list, (void*)ugcurl); + uget_curl_free(ugcurl); + } + else { + // try to reuse download + reuse_download(plugin, ugcurl, TRUE); } - break; - - case UGET_CURL_ABORT: - ugcurl->state = UGET_CURL_READY; - // delete download - ug_list_remove (&plugin->seg.list, (void*)ugcurl); - uget_curl_free (ugcurl); - // if no download in list, save aria2 ctrl file - if (N_THREAD (plugin) == 0 && plugin->aria2.path) - uget_a2cf_save (&plugin->aria2.ctrl, plugin->aria2.path); break; case UGET_CURL_RETRY: - ugcurl->state = UGET_CURL_READY; - if (N_THREAD (plugin) == 1) + // if no other downloading segment + if (N_THREAD(plugin) == 1) { common->retry_count++; - if (common->retry_count < common->retry_limit || common->retry_limit == 0) { - ugcurl->beg = ugcurl->pos; - delay_ms (plugin, common->retry_delay * 1000); - uget_curl_run (ugcurl, FALSE); - break; + if (common->retry_count < common->retry_limit || + common->retry_limit == 0) + { + ugcurl->beg = ugcurl->pos; + delay_ms(plugin, common->retry_delay * 1000); + uget_curl_run(ugcurl, FALSE); + } + else { + // delete segment + ug_list_remove(&plugin->segment.list, (void*)ugcurl); + uget_curl_free(ugcurl); + } + } + else { + // try to reuse download + reuse_download(plugin, ugcurl, FALSE); } - // delete download - ug_list_remove (&plugin->seg.list, (void*)ugcurl); - uget_curl_free (ugcurl); break; - case UGET_CURL_NOT_RESUMABLE: // redownload - retry - ugcurl->state = UGET_CURL_READY; - if (switch_uri (plugin, ugcurl, TRUE)) { - uget_curl_run (ugcurl, FALSE); - break; - } - if (N_THREAD (plugin) == 1) { - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_normal ( + case UGET_CURL_NOT_RESUMABLE: + // if no other downloading segment + if (N_THREAD(plugin) == 1) { + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_normal( UGET_EVENT_NORMAL_NOT_RESUMABLE, NULL)); common->retry_count++; - if (common->retry_count < common->retry_limit || common->retry_limit == 0) { + if (common->retry_count < common->retry_limit || + common->retry_limit == 0) + { plugin->base.download = 0; + plugin->size.download = 0; ugcurl->beg = 0; ugcurl->end = plugin->file.size; - delay_ms (plugin, common->retry_delay * 1000); - uget_curl_run (ugcurl, FALSE); - break; + delay_ms(plugin, common->retry_delay * 1000); + switch_uri(plugin, ugcurl, TRUE); + uget_curl_run(ugcurl, FALSE); + } + else { + // delete download + ug_list_remove(&plugin->segment.list, (void*)ugcurl); + uget_curl_free(ugcurl); } } - // delete download - ug_list_remove (&plugin->seg.list, (void*)ugcurl); - uget_curl_free (ugcurl); + else { + // try to reuse download + reuse_download(plugin, ugcurl, TRUE); + } break; } } - // progress + // use completed UgetCurl to split new segment after segment loop + ugcurl = (UgetCurl*) plugin->segment.list.head; + for (; ugcurl; ugcurl = ugnext) { + ugnext = ugcurl->next; + if (ugcurl->state == UGET_CURL_RESPLIT) { + if (split_download(plugin, ugcurl) == FALSE) { + // delete download + ug_list_remove(&plugin->segment.list, (void*)ugcurl); + uget_curl_free(ugcurl); + } + } + } + // progress --------------------- plugin->size.upload = plugin->base.upload + size.upload; plugin->size.download = plugin->base.download + size.download; - if (plugin->seg.list.size) { - // Don't update speed when stopping + // Don't update speed when stopping + if (plugin->segment.list.size) { plugin->speed.upload = speed.upload; plugin->speed.download = speed.download; } plugin->synced = FALSE; - // check file size + // check file size -------------- if (plugin->file.size) { // response error if file size is different if (plugin->file.size < plugin->size.download) { - plugin->stopped = TRUE; - if (N_THREAD (plugin) > 0) +#if 0 + +#ifndef NDEBUG + if (common->debug_level) { + printf("file size is different\n"); + printf("plugin->file.size = %d\n", (int)plugin->file.size); + printf("plugin->size.download = %d\n", (int)plugin->size.download); + } +#endif // NDEBUG + plugin->size.download = plugin->file.size; +#else + plugin->paused = TRUE; + if (N_THREAD(plugin) > 0) continue; // wait other thread else { if (plugin->aria2.path) - ug_unlink (plugin->aria2.path); - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_error ( + ug_unlink(plugin->aria2.path); + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error( UGET_EVENT_ERROR_INCORRECT_SOURCE, NULL)); plugin->synced = FALSE; break; } +#endif } // download completed if (plugin->file.size == plugin->size.download) { - if (N_THREAD (plugin) > 0) + if (N_THREAD(plugin) > 0) continue; // wait other thread else { - complete_file (plugin); + complete_file(plugin); plugin->synced = FALSE; - plugin->stopped = TRUE; break; } } } + // timer ------------------------ // adjust speed every 0.5 x 2 = 1 second. - if (counter & 1) - adjust_speed_limit (plugin); - // save aria2 ctrl file every 0.5 x 4 = 2 seconds. - if ((counter & 3) == 3 && plugin->aria2.path) - uget_a2cf_save (&plugin->aria2.ctrl, plugin->aria2.path); + if ((counter & 1) == 1 || n_active_last != plugin->segment.n_active) { + n_active_last = plugin->segment.n_active; + adjust_speed_limit(plugin); + } + // save aria2 control file every 0.5 x 4 = 2 seconds. + if ((counter & 3) == 3 || N_THREAD(plugin) == 0) { + if (plugin->aria2.path) + uget_a2cf_save(&plugin->aria2.ctrl, plugin->aria2.path); + } // split download every 0.5 x 8 = 4 seconds. if ((counter & 7) == 7 && plugin->file.size) { // If some threads are connecting, It doesn't split new segment. - if (N_THREAD (plugin) < plugin->seg.n_max && - N_THREAD (plugin) == plugin->seg.n_active) + if (N_THREAD(plugin) < plugin->segment.n_max && + N_THREAD(plugin) == plugin->segment.n_active) { - split_download (plugin, NULL); + split_download(plugin, NULL); } } - // retry + // retry ------------------------ if (common->retry_count >= common->retry_limit && common->retry_limit != 0) { - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_error ( + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error( UGET_EVENT_ERROR_TOO_MANY_RETRIES, NULL)); plugin->synced = FALSE; - plugin->stopped = TRUE; + plugin->paused = TRUE; } } + // count the latest downloaded size if download doesn't complete + if ((plugin->file.size != plugin->size.download) && plugin->aria2.path) { + plugin->size.download = uget_a2cf_completed(&plugin->aria2.ctrl); + plugin->synced = FALSE; + } + + // free segment list + ug_list_foreach(&plugin->segment.list, (UgForeachFunc) uget_curl_free, NULL); + ug_list_clear(&plugin->segment.list, FALSE); + // + uget_a2cf_clear(&plugin->aria2.ctrl); plugin->stopped = TRUE; - ug_list_foreach (&plugin->seg.list, (UgForeachFunc) uget_curl_free, NULL); - ug_list_init (&plugin->seg.list); - uget_a2cf_clear (&plugin->aria2.ctrl); - uget_plugin_unref ((UgetPlugin*) plugin); - return UG_THREAD_RETURN_VALUE; + uget_plugin_unref((UgetPlugin*) plugin); + return UG_THREAD_RESULT; } -static int prepare_existed (UgetCurl* ugcurl, UgetPluginCurl* plugin) +static int prepare_existed(UgetCurl* ugcurl, UgetPluginCurl* plugin) { double fsize; long ftime; // file.size if (plugin->file.size) { - curl_easy_getinfo (ugcurl->curl, + curl_easy_getinfo(ugcurl->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &fsize); if (plugin->file.size != ugcurl->beg + (int64_t) fsize) { // if remote file size and local file size are not the same, @@ -876,27 +965,23 @@ if (plugin->prepared == FALSE) { // plugin_thread() has initialized/created some data for this function. // program must clear these data before calling prepare_file() - ug_free (plugin->aria2.path); - plugin->aria2.path = NULL; - uget_curl_close_file (ugcurl); - uget_a2cf_clear (&plugin->aria2.ctrl); - return prepare_file (ugcurl, plugin); + clear_file_info(plugin); + uget_curl_close_file(ugcurl); + return prepare_file(ugcurl, plugin); } // don't write INCORRECT data to existed file. ugcurl->event_code = UGET_EVENT_ERROR_INCORRECT_SOURCE; ugcurl->size[0] = 0; - if (plugin->seg.list.size == 1) - plugin->base.download = uget_a2cf_completed (&plugin->aria2.ctrl); return FALSE; } } // file.time if (plugin->file.time == -1) { - curl_easy_getinfo (ugcurl->curl, CURLINFO_FILETIME, &ftime); + curl_easy_getinfo(ugcurl->curl, CURLINFO_FILETIME, &ftime); plugin->file.time = (time_t) ftime; } - if (uget_curl_open_file (ugcurl, plugin->file.path)) { + if (uget_curl_open_file(ugcurl, plugin->file.path)) { plugin->prepared = TRUE; return TRUE; } @@ -906,13 +991,12 @@ } } -static int prepare_file (UgetCurl* ugcurl, UgetPluginCurl* plugin) +static int prepare_file(UgetCurl* ugcurl, UgetPluginCurl* plugin) { UgetCommon* common; int length; int counts; int value; - int folder_len; union { long ftime; double fsize; @@ -921,27 +1005,17 @@ } temp; // file.time - curl_easy_getinfo (ugcurl->curl, CURLINFO_FILETIME, &temp.ftime); + curl_easy_getinfo(ugcurl->curl, CURLINFO_FILETIME, &temp.ftime); plugin->file.time = (time_t) temp.ftime; // file.size - curl_easy_getinfo (ugcurl->curl, + curl_easy_getinfo(ugcurl->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &temp.fsize); plugin->file.size = (int64_t) temp.fsize + ugcurl->beg; if (plugin->file.size == -1) plugin->file.size = 0; common = plugin->common; - // folder - if (common->folder == NULL) - length = 0; - else { - length = strlen (common->folder); - value = common->folder[length - 1]; - if (value != '\\' || value != '/') - length++; - } - folder_len = length; - + length = plugin->folder.length; // decide filename if (common->file == NULL) { if (ugcurl->header.filename) { @@ -949,93 +1023,113 @@ ugcurl->header.filename = NULL; } else if (ugcurl->uri.part.file != -1) - common->file = ug_uri_get_file (&ugcurl->uri.part); + common->file = ug_uri_get_file(&ugcurl->uri.part); // if it is still no filename, set default one if (common->file == NULL) - common->file = ug_strdup ("index"); + common->file = ug_strdup("index"); // replace invalid characters \/:*?"<>| by _ in filename. - ug_str_replace_chars (common->file, "\\/:*?\"<>|", '_'); + ug_str_replace_chars(common->file, "\\/:*?\"<>|", '_'); } - length += strlen (common->file); + length += strlen(common->file); // path = folder + filename - ug_free (plugin->file.path); // length + digits + ".aria2" + '\0' - plugin->file.path = ug_malloc (length + MAX_REPEAT_DIGITS + 6 + 1); + plugin->file.path = ug_malloc(length + MAX_REPEAT_DIGITS + 6 + 1); plugin->file.path[0] = 0; // you need this line if common->folder is NULL. - if (common->folder) { - strcpy (plugin->file.path, common->folder); - if (value != '\\' || value != '/') { -#if defined _WIN32 || defined _WIN64 - strcat (plugin->file.path, "\\"); -#else - strcat (plugin->file.path, "/"); -#endif - } - } - strcat (plugin->file.path, common->file); + if (plugin->folder.path) + strcpy(plugin->file.path, plugin->folder.path); + strcat(plugin->file.path, common->file); + plugin->file.name_fmt = get_repeating_fmt_string(common->file); // create folder - if (ug_create_dir_all (plugin->file.path, folder_len) == -1) { + if (ug_create_dir_all(plugin->file.path, plugin->folder.length) == -1) { ugcurl->event_code = UGET_EVENT_ERROR_FOLDER_CREATE_FAILED; return FALSE; } // create file for (counts = 0; counts < MAX_REPEAT_COUNTS; counts++) { - value = ug_open (plugin->file.path, UG_O_CREATE | UG_O_EXCL | UG_O_WRONLY, + value = ug_open(plugin->file.path, UG_O_CREATE | UG_O_EXCL | UG_O_WRONLY, UG_S_IREAD | UG_S_IWRITE | UG_S_IRGRP | UG_S_IROTH); -// value = ug_open (plugin->file.path, UG_O_CREATE | UG_O_EXCL | UG_O_RDWR, +// value = ug_open(plugin->file.path, UG_O_CREATE | UG_O_EXCL | UG_O_RDWR, // UG_S_IREAD | UG_S_IWRITE | UG_S_IRGRP | UG_S_IROTH); // check if this path can't access -// if (value == -1 && ug_file_is_exist (plugin->file.path) == FALSE) { +// if (value == -1 && ug_file_is_exist(plugin->file.path) == FALSE) { // ugcurl->event_code = UGET_EVENT_ERROR_FILE_CREATE_FAILED; // return FALSE; // error // } // check exist downloaded file & it's control file - strcat (plugin->file.path + length, ".aria2"); + strcat(plugin->file.path + length, ".aria2"); if (value == -1) { - if (uget_a2cf_load (&plugin->aria2.ctrl, plugin->file.path)) { + if (uget_a2cf_load(&plugin->aria2.ctrl, plugin->file.path)) { if (plugin->aria2.ctrl.total_len == plugin->file.size) { - plugin->aria2.path = ug_strdup (plugin->file.path); - plugin->base.download = uget_a2cf_completed (&plugin->aria2.ctrl); - *(char*) strstr (plugin->file.path + length, ".aria2") = 0; + plugin->aria2.path = ug_strdup(plugin->file.path); + plugin->base.download = uget_a2cf_completed(&plugin->aria2.ctrl); + plugin->size.download = plugin->base.download; + *(char*) strstr(plugin->file.path + length, ".aria2") = 0; break; } - uget_a2cf_clear (&plugin->aria2.ctrl); + uget_a2cf_clear(&plugin->aria2.ctrl); } } else { + // reset downloaded size if plug-in decide to create new file. plugin->base.download = 0; + plugin->size.download = 0; + // allocate disk space if plug-in known file size if (plugin->file.size) { - // create an empty file of particular size. - if (ug_write (value, "O", 1) == -1) // begin of file + // preallocate space for a file. +#if defined _WIN32 || defined _WIN64 + LARGE_INTEGER size; + HANDLE handle; + handle = (HANDLE) _get_osfhandle(value); + size.QuadPart = plugin->file.size; + if(SetFilePointerEx(handle ,size, 0, FILE_BEGIN) == FALSE) + ugcurl->event_code = UGET_EVENT_ERROR_OUT_OF_RESOURCE; + if(SetEndOfFile(handle) == FALSE) + ugcurl->event_code = UGET_EVENT_ERROR_OUT_OF_RESOURCE; + SetFilePointer(handle, 0, 0, FILE_BEGIN); +#elif defined HAVE_FTRUNCATE + if (ftruncate(value, plugin->file.size) == -1) + ugcurl->event_code = UGET_EVENT_ERROR_OUT_OF_RESOURCE; +#elif defined __ANDROID__ && __ANDROID_API__ >= 12 + if (ftruncate64(value, plugin->file.size) == -1) + ugcurl->event_code = UGET_EVENT_ERROR_OUT_OF_RESOURCE; +#elif defined HAVE_POSIX_FALLOCATE + if (posix_fallocate(value, 0, plugin->file.size) != 0) + ugcurl->event_code = UGET_EVENT_ERROR_OUT_OF_RESOURCE; +#elif defined __ANDROID__ && __ANDROID_API__ >= 20 + if (posix_fallocate64(value, 0, plugin->file.size) != 0) ugcurl->event_code = UGET_EVENT_ERROR_OUT_OF_RESOURCE; - if (ug_seek (value, plugin->file.size - 1, SEEK_SET) == -1) +#else + if (ug_write(value, "O", 1) == -1) // begin of file + ugcurl->event_code = UGET_EVENT_ERROR_OUT_OF_RESOURCE; + if (ug_seek(value, plugin->file.size - 1, SEEK_SET) == -1) ugcurl->event_code = UGET_EVENT_ERROR_OUT_OF_RESOURCE; - if (ug_write (value, "X", 1) == -1) // end of file + if (ug_write(value, "X", 1) == -1) // end of file ugcurl->event_code = UGET_EVENT_ERROR_OUT_OF_RESOURCE; +#endif // _WIN32 || _WIN64 // create aria2 control file if no error if (ugcurl->event_code == 0) { - plugin->aria2.path = ug_strdup (plugin->file.path); - uget_a2cf_init (&plugin->aria2.ctrl, plugin->file.size); - uget_a2cf_save (&plugin->aria2.ctrl, plugin->aria2.path); + plugin->aria2.path = ug_strdup(plugin->file.path); + uget_a2cf_init(&plugin->aria2.ctrl, plugin->file.size); + uget_a2cf_save(&plugin->aria2.ctrl, plugin->aria2.path); } } - ug_close (value); + ug_close(value); // remove tail ".aria2" string in file path - *(char*) strstr (plugin->file.path + length, ".aria2") = 0; + *(char*) strstr(plugin->file.path + length, ".aria2") = 0; // if error occurred while allocating disk space, delete created download file. if (ugcurl->event_code > 0) { - ug_unlink (plugin->file.path); + ug_unlink(plugin->file.path); return FALSE; } break; } - // filename repeat - sprintf (plugin->file.path + length, ".%d", counts); + sprintf(plugin->file.path + plugin->folder.length, + plugin->file.name_fmt, counts); } if (counts == MAX_REPEAT_COUNTS) { @@ -1045,37 +1139,39 @@ // set filename if counts > 0 if (counts) { - ug_free (common->file); - common->file = ug_strdup (plugin->file.path + folder_len); + ug_free(common->file); + common->file = ug_strdup(plugin->file.path + plugin->folder.length); } plugin->file_renamed = TRUE; + // update UgetFiles + plugin_decide_files(plugin); // event if (ugcurl->resumable) { - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_normal (UGET_EVENT_NORMAL_RESUMABLE, NULL)); + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_normal(UGET_EVENT_NORMAL_RESUMABLE, NULL)); } else { - uget_plugin_post ((UgetPlugin*) plugin, - uget_event_new_normal (UGET_EVENT_NORMAL_NOT_RESUMABLE, NULL)); + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_normal(UGET_EVENT_NORMAL_NOT_RESUMABLE, NULL)); } #ifndef NDEBUG if (common->debug_level) { - printf ("CURL message = %s\n", ugcurl->error_string); - printf ("plugin->file.path = %s\n", plugin->file.path); - printf ("plugin->file.size = %d\n", (int)plugin->file.size); - printf ("plugin->file.time = %d\n", (int)plugin->file.time); - printf ("resumable = %d\n", ugcurl->resumable); + printf("CURL message = %s\n", ugcurl->error_string); + printf("plugin->file.path = %s\n", plugin->file.path); + printf("plugin->file.size = %d\n", (int)plugin->file.size); + printf("plugin->file.time = %d\n", (int)plugin->file.time); + printf("resumable = %d\n", ugcurl->resumable); } #endif // set flags to UriLink if (ugcurl->header.uri) { // HTTP redirection - temp.ulink = plugin_replace_uri (plugin, ugcurl->uri.link, - ugcurl->header.uri, -1); + temp.ulink = plugin_replace_uri(plugin, ugcurl->uri.link, + ugcurl->header.uri, -1); ugcurl->uri.link = temp.ulink; - ug_free (ugcurl->header.uri); + ug_free(ugcurl->header.uri); ugcurl->header.uri = NULL; } else @@ -1091,12 +1187,12 @@ plugin->prepared = TRUE; // file and it's offset temp.val64 = 0; - uget_a2cf_lack (&plugin->aria2.ctrl, - (uint64_t*) &temp.val64, - (uint64_t*) &ugcurl->end); - plugin->seg.beg = ugcurl->end; + uget_a2cf_lack(&plugin->aria2.ctrl, + (uint64_t*) &temp.val64, + (uint64_t*) &ugcurl->end); + plugin->segment.beg = ugcurl->end; if (ugcurl->beg == temp.val64) { - if (uget_curl_open_file (ugcurl, plugin->file.path) == FALSE) { + if (uget_curl_open_file(ugcurl, plugin->file.path) == FALSE) { ugcurl->event_code = UGET_EVENT_ERROR_FILE_OPEN_FAILED; return FALSE; } @@ -1105,119 +1201,162 @@ else { ugcurl->beg = temp.val64; ugcurl->pos = temp.val64; - curl_easy_setopt (ugcurl->curl, CURLOPT_RESUME_FROM_LARGE, + curl_easy_setopt(ugcurl->curl, CURLOPT_RESUME_FROM_LARGE, (curl_off_t) temp.val64); - if (uget_curl_open_file (ugcurl, plugin->file.path)) + if (uget_curl_open_file(ugcurl, plugin->file.path)) ugcurl->restart = TRUE; return FALSE; } } -static int load_file_info (UgetPluginCurl* plugin) +// used by get_repeating_fmt_string() +enum { + EXT_NUMBER = 0x01, + EXT_UPPER = 0x02, + EXT_LOWER = 0x04, + + EXT_CAMEL = EXT_UPPER | EXT_LOWER, + EXT_ALL = EXT_UPPER | EXT_LOWER | EXT_NUMBER, +}; + +// used by get_repeating_fmt_string() +static char* find_dot_ext(const char* filename, const char* end, uint8_t* status) +{ + uint8_t stat = 0; + const char* cur = NULL; + + for (cur = end-1; cur >= filename; cur--) { + if (cur[0] == '.') { + if (cur == end-1 || cur == filename) + break; + if (status) + status[0] = stat; + return (char*)cur; + } + else if (cur[0] >= '0' && cur[0] <= '9') + stat |= EXT_NUMBER; + else if (cur[0] >= 'A' && cur[0] <= 'Z') + stat |= EXT_UPPER; + else if (cur[0] >= 'a' && cur[0] <= 'z') + stat |= EXT_LOWER; + else + break; + } + return NULL; +} + +static char* get_repeating_fmt_string(char* filename) +{ + char* result; + char* dot[3] = {NULL, NULL, NULL}; + uint8_t stat[3] = {0, 0, 0}; + int index; + int length; + + length = strlen(filename); + result = ug_malloc(length + 3 + 1); // + ".%d" + "\0" + + // dot[0] + dot[0] = find_dot_ext(filename, filename + length, &stat[0]); + if (dot[0]) + dot[1] = find_dot_ext(filename, dot[0], &stat[1]); + if (dot[1]) + dot[2] = find_dot_ext(filename, dot[1], &stat[2]); + + for (index = 2; index >= 0; index--) { + if (dot[index] == NULL) + continue; + + // replace exist number + if (stat[index] == EXT_NUMBER) { + // strncpy() doesn't always null-terminated + strncpy(result, filename, dot[index] - filename); + result[dot[index] - filename] = 0; + strcat(result, ".%d"); + if (index > 0) + strcat(result, dot[index-1]); + return result; + } + + // insert number + if (index == 2) + continue; + // strncpy() doesn't always null-terminated + strncpy(result, filename, dot[index] - filename); + result[dot[index] - filename] = 0; + strcat(result, ".%d"); + strcat(result, dot[index]); + return result; + } + + // append number + strcpy(result, filename); + strcat(result, ".%d"); + + // return printf() format string + return result; +} + +static int load_file_info(UgetPluginCurl* plugin) { UgetCommon* common; char* path; - int value; int length; common = plugin->common; if (common == NULL || common->file == NULL) return FALSE; - // folder - if (common->folder == NULL) - length = 0; - else { - length = strlen (common->folder); - value = common->folder[length - 1]; - if (value != '\\' || value != '/') - length++; - } - // filename - length += strlen (common->file); + // folder + filename + length = plugin->folder.length; + length += strlen(common->file); // path - path = ug_malloc (length + 6 + 1); // length + ".aria2" + '\0' + path = ug_malloc(length + 6 + 1); // length + ".aria2" + '\0' path[0] = 0; // you need this line if common->folder is NULL. - if (common->folder) { - strcpy (path, common->folder); - if (value != '\\' || value != '/') { -#if defined _WIN32 || defined _WIN64 - strcat (path, "\\"); -#else - strcat (path, "/"); -#endif - } - } - strcat (path, common->file); - if (ug_file_is_exist (path) == FALSE) { - ug_free (path); + if (plugin->folder.path) + strcpy(path, plugin->folder.path); + strcat(path, common->file); + if (ug_file_is_exist(path) == FALSE) { + ug_free(path); return FALSE; } - strcat (path, ".aria2"); - // aria2 ctrl file - if (uget_a2cf_load (&plugin->aria2.ctrl, path)) { + strcat(path, ".aria2"); + // aria2 control file + if (uget_a2cf_load(&plugin->aria2.ctrl, path)) { plugin->file.size = plugin->aria2.ctrl.total_len; - plugin->file.path = ug_strndup (path, length); + plugin->file.path = ug_strndup(path, length); plugin->aria2.path = path; - plugin->base.download = uget_a2cf_completed (&plugin->aria2.ctrl); + plugin->base.download = uget_a2cf_completed(&plugin->aria2.ctrl); + plugin->size.download = plugin->base.download; + // update UgetFiles + plugin_decide_files(plugin); return TRUE; } else { - uget_a2cf_clear (&plugin->aria2.ctrl); - ug_free (path); + uget_a2cf_clear(&plugin->aria2.ctrl); + ug_free(path); return FALSE; } } -#if 0 -static int switch_uri (UgetPluginCurl* plugin, UgetCurl* ugcurl, int is_resumable) +static void clear_file_info(UgetPluginCurl* plugin) { - UriLink* uri_link; - UriLink* uri_begin; - int cycled = FALSE; + // update UgetFiles + uget_plugin_lock(plugin); + uget_files_apply_deleted(plugin->files); + uget_plugin_unlock(plugin); - if (plugin->uri.link) - uri_begin = (UriLink*) plugin->uri.link; - else - uri_begin = (UriLink*) plugin->uri.list.head; + uget_a2cf_clear(&plugin->aria2.ctrl); + ug_free(plugin->aria2.path); + plugin->aria2.path = NULL; - for (uri_link = uri_begin; ;) { - if (uri_link == uri_begin && cycled) - break; - if (uri_link == NULL) { - uri_link = (UriLink*) plugin->uri.list.head; - cycled = TRUE; - continue; - } - if (uri_link->tested) { - if (uri_link->ok == FALSE) { - uri_link = uri_link->next; - continue; - } - if (is_resumable && uri_link->resumable == FALSE) { - uri_link = uri_link->next; - continue; - } - } - break; - } - - // set URI and decide it's scheme - uget_curl_set_url (ugcurl, uri_link->uri); - uri_link->scheme_type = ugcurl->scheme_type; - // sync URI flags to UgetCurl - ugcurl->uri.link = uri_link; - ugcurl->resumable = uri_link->resumable; - ugcurl->tested = uri_link->tested; - ugcurl->test_ok = uri_link->ok; - // pointer current URI to next one - plugin->uri.link = (void*) uri_link->next; - - if (uri_link == uri_begin) - return FALSE; - return TRUE; + ug_free(plugin->file.path); + plugin->file.path = NULL; + plugin->file.size = 0; + plugin->base.download = 0; + plugin->size.download = 0; } -#else -static int switch_uri (UgetPluginCurl* plugin, UgetCurl* ugcurl, int is_resumable) + +static int switch_uri(UgetPluginCurl* plugin, UgetCurl* ugcurl, int is_resumable) { UriLink* uri_link; @@ -1226,7 +1365,7 @@ uri_link = (UriLink*) plugin->uri.list.head; // set URI and decide it's scheme - uget_curl_set_url (ugcurl, uri_link->uri); + uget_curl_set_url(ugcurl, uri_link->uri); uri_link->scheme_type = ugcurl->scheme_type; // sync URI flags to UgetCurl ugcurl->uri.link = uri_link; @@ -1238,24 +1377,53 @@ return TRUE; } -#endif -static void complete_file (UgetPluginCurl* plugin) +static void complete_file(UgetPluginCurl* plugin) { - if (plugin->aria2.path) - ug_unlink (plugin->aria2.path); + if (plugin->aria2.path) { + // update UgetFiles + uget_plugin_lock(plugin); + uget_files_replace(plugin->files, + plugin->file.path, + UGET_FILE_REGULAR, UGET_FILE_STATE_COMPLETED); + uget_files_replace(plugin->files, + plugin->aria2.path, + UGET_FILE_ATTACHMENT, UGET_FILE_STATE_DELETED); + uget_plugin_unlock(plugin); + // delete aria2 control file + ug_unlink(plugin->aria2.path); + ug_free(plugin->aria2.path); + plugin->aria2.path = NULL; + } // modify file time if (plugin->common->timestamp == TRUE && plugin->file.time != -1) - ug_modify_file_time (plugin->file.path, plugin->file.time); + ug_modify_file_time(plugin->file.path, plugin->file.time); // completed message - plugin->node->state |= UGET_STATE_COMPLETED; - uget_plugin_post ((UgetPlugin*)plugin, - uget_event_new (UGET_EVENT_COMPLETED)); - uget_plugin_post ((UgetPlugin*)plugin, - uget_event_new (UGET_EVENT_STOP)); + uget_plugin_post((UgetPlugin*)plugin, + uget_event_new(UGET_EVENT_COMPLETED)); + uget_plugin_post((UgetPlugin*)plugin, + uget_event_new(UGET_EVENT_STOP)); } -static int split_download (UgetPluginCurl* plugin, UgetCurl* ugcurl) +static int reuse_download(UgetPluginCurl* plugin, UgetCurl* ugcurl, int next_uri) +{ + if (ugcurl->beg == ugcurl->pos) { + // delete segment if no downloaded data + ug_list_remove(&plugin->segment.list, (void*)ugcurl); + uget_curl_free(ugcurl); + return FALSE; + } + else { + // reuse this segment + if (next_uri == TRUE) + switch_uri(plugin, ugcurl, TRUE); + ugcurl->beg = ugcurl->pos; + uget_curl_run(ugcurl, FALSE); + return TRUE; + } +} + +static int split_download(UgetPluginCurl* plugin, UgetCurl* ugcurl) { UgetCurl* temp; UgetCurl* sibling = NULL; @@ -1264,31 +1432,24 @@ if (plugin->aria2.path == NULL) return FALSE; - // find recycled UgetCurl and start it. - for (temp = (void*)plugin->seg.list.head; temp; temp = temp->next) { - if (temp->state == UGET_CURL_RECYCLED) { - plugin->seg.n_recycled--; - switch_uri (plugin, temp, TRUE); - uget_curl_run (temp, FALSE); - return FALSE; - } - } + // try to find unused space - cur = plugin->seg.beg; - if (uget_a2cf_lack (&plugin->aria2.ctrl, &cur, &end)) { - plugin->seg.beg = end; + cur = plugin->segment.beg; + if (uget_a2cf_lack(&plugin->aria2.ctrl, &cur, &end)) { + plugin->segment.beg = end; #ifndef NDEBUG if (plugin->common->debug_level) { - printf ("\n" "lack %u-%u KiB\n", - (unsigned) cur / 1024, - (unsigned) end / 1024); + printf("\n" "lack %u-%u KiB\n", + (unsigned) cur / 1024, + (unsigned) end / 1024); } #endif } + // if no unused space, try to split downloading segment. else { - // if no unused space, try to split current download + // cur = segment size; end = the largest segment size; end = 0; - for (temp = (void*)plugin->seg.list.head; temp; temp = temp->next) { + for (temp = (void*)plugin->segment.list.head; temp; temp = temp->next) { cur = temp->end - temp->pos; if (end < cur) { end = cur; @@ -1297,10 +1458,11 @@ } if (sibling == NULL) return FALSE; - // cur = (sibling->end - sibling->pos) >> 1; - if (cur < 16384 * 3) + // if segment is too small, don't split it. + if (cur < MIN_SPLIT_SIZE) return FALSE; + // cur = begin of new segment; end = end of new segment; cur = sibling->end - cur; end = sibling->end; if (cur & 16383) @@ -1308,59 +1470,64 @@ #ifndef NDEBUG if (plugin->common->debug_level) { - printf ("\n" "split %u-%u KiB\n", - (unsigned) cur / 1024, - (unsigned) end / 1024); + printf("\n" "split %u-%u KiB\n", + (unsigned) cur / 1024, + (unsigned) end / 1024); } #endif } // reuse or create UgetCurl - // if this UgetCurl has been inserted in seg.list, remove it. + // if this UgetCurl has been inserted in segment.list, remove it. if (ugcurl) - ug_list_remove (&plugin->seg.list, (UgLink*) ugcurl); + ug_list_remove(&plugin->segment.list, (UgLink*) ugcurl); else - ugcurl = create_segment (plugin); + ugcurl = create_segment(plugin); - // add to seg.list + // add to segment.list if (sibling == NULL) - ug_list_append (&plugin->seg.list, (void*) ugcurl); + ug_list_append(&plugin->segment.list, (void*) ugcurl); else { ugcurl->split = TRUE; - ug_list_insert (&plugin->seg.list, + ug_list_insert(&plugin->segment.list, (void*) sibling->next, (void*) ugcurl); } ugcurl->beg = cur; ugcurl->end = end; - uget_curl_run (ugcurl, FALSE); + uget_curl_run(ugcurl, FALSE); return TRUE; } -static void delay_ms (UgetPluginCurl* plugin, int milliseconds) +static void delay_ms(UgetPluginCurl* plugin, int milliseconds) { - while (plugin->stopped == FALSE) { + while (plugin->paused == FALSE) { if (milliseconds > 500) { milliseconds -= 500; - ug_sleep (500); + ug_sleep(500); continue; } - ug_sleep (milliseconds); + ug_sleep(milliseconds); return; } } -static UgetCurl* create_segment (UgetPluginCurl* plugin) +static UgetCurl* create_segment(UgetPluginCurl* plugin) { UgetCurl* ugcurl; - ugcurl = uget_curl_new (); - uget_curl_set_common (ugcurl, plugin->common); - uget_curl_set_proxy (ugcurl, plugin->proxy); - uget_curl_set_http (ugcurl, plugin->http); - uget_curl_set_ftp (ugcurl, plugin->ftp); + ugcurl = uget_curl_new(); + uget_curl_set_common(ugcurl, plugin->common); + uget_curl_set_proxy(ugcurl, plugin->proxy); + uget_curl_set_http(ugcurl, plugin->http); + uget_curl_set_ftp(ugcurl, plugin->ftp); + // set speed limit + if (plugin->limit.download) + ugcurl->limit[0] = plugin->limit.download / (plugin->segment.list.size + 1); + if (plugin->limit.upload) + ugcurl->limit[1] = plugin->limit.upload / (plugin->segment.list.size + 1); // select URL - switch_uri (plugin, ugcurl, FALSE); + switch_uri(plugin, ugcurl, FALSE); // set output function ugcurl->prepare.func = (UgetCurlFunc) prepare_existed; ugcurl->prepare.data = plugin; @@ -1368,50 +1535,49 @@ } // speed control -#define SPEED_MIN 256 - -static void adjust_speed_limit_index (UgetPluginCurl* plugin, int idx, int64_t remain) +static void adjust_speed_limit_index(UgetPluginCurl* plugin, int idx, int64_t remain) { UgetCurl* ucurl; // balance speed - remain = remain / plugin->seg.n_active; + remain = remain / plugin->segment.n_active; - for (ucurl = (UgetCurl*) plugin->seg.list.head; ucurl; ucurl=ucurl->next) { + for (ucurl = (UgetCurl*) plugin->segment.list.head; ucurl; ucurl=ucurl->next) { if (ucurl->state != UGET_CURL_RUN) continue; ucurl->limit[idx] = ucurl->speed[idx] + remain; - if (ucurl->limit[idx] < SPEED_MIN) - ucurl->limit[idx] = SPEED_MIN; + if (ucurl->limit[idx] < MIN_SPEED_LIMIT) + ucurl->limit[idx] = MIN_SPEED_LIMIT; ucurl->limit_changed = TRUE; } } -static void disable_speed_limit (UgetPluginCurl* plugin, int idx) +static void disable_speed_limit(UgetPluginCurl* plugin, int idx) { - UgetCurl* ucurl; + UgetCurl* ugcurl; - for (ucurl = (UgetCurl*) plugin->seg.list.head; ucurl; ucurl=ucurl->next) { - ucurl->limit[idx] = 0; - ucurl->limit_changed = TRUE; + ugcurl = (UgetCurl*) plugin->segment.list.head; + for (; ugcurl; ugcurl = ugcurl->next) { + ugcurl->limit[idx] = 0; + ugcurl->limit_changed = TRUE; } } -static void adjust_speed_limit (UgetPluginCurl* plugin) +static void adjust_speed_limit(UgetPluginCurl* plugin) { - if (plugin->seg.n_active == 0) + if (plugin->segment.n_active == 0) return; // download if (plugin->limit.download > 0) - adjust_speed_limit_index (plugin, 0, plugin->limit.download - plugin->speed.download); + adjust_speed_limit_index(plugin, 0, plugin->limit.download - plugin->speed.download); else if (plugin->limit_changed) - disable_speed_limit (plugin, 0); + disable_speed_limit(plugin, 0); // upload if (plugin->limit.upload > 0) - adjust_speed_limit_index (plugin, 1, plugin->limit.upload - plugin->speed.upload); + adjust_speed_limit_index(plugin, 1, plugin->limit.upload - plugin->speed.upload); else if (plugin->limit_changed) - disable_speed_limit (plugin, 1); + disable_speed_limit(plugin, 1); plugin->limit_changed = FALSE; } diff -Nru uget-2.0.2/uget/UgetPluginCurl.h uget-2.2.2/uget/UgetPluginCurl.h --- uget-2.0.2/uget/UgetPluginCurl.h 2015-09-05 01:34:00.000000000 +0000 +++ uget-2.2.2/uget/UgetPluginCurl.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -42,45 +42,63 @@ #include #include #include -#include +//#include // curl_slist #ifdef __cplusplus extern "C" { #endif -typedef struct UgetPluginCurl UgetPluginCurl; +typedef struct UgetPluginCurl UgetPluginCurl; -extern const UgetPluginInfo* UgetPluginCurlInfo; +extern const UgetPluginInfo* UgetPluginCurlInfo; -// ---------------------------------------------------------------------------- -// UgetPluginCurl: an empty plugin. It derived from UgetPlugin. +/* ---------------------------------------------------------------------------- + UgetPluginCurl: libcurl plug-in that derived from UgetPlugin. + + UgType + | + `---UgetPlugin + | + `--- UgetPluginCurl + */ struct UgetPluginCurl { - UGET_PLUGIN_MEMBERS; // It derived from UgetPlugin -// const UgetPluginInfo* info; -// UgetEvent* messages; -// UgMutex mutex; -// int ref_count; + UGET_PLUGIN_MEMBERS; +/* // ------ UgType members ------ + const UgetPluginInfo* info; + + // ------ UgetPlugin members ------ + UgetEvent* messages; + UgMutex mutex; + int ref_count; + */ - // UgetNode data - UgetNode* node; + // copy these UgData from UgInfo that store in UgetApp UgetCommon* common; + UgetFiles* files; UgetProxy* proxy; UgetHttp* http; UgetFtp* ftp; - // run-time info + // run-time data // struct curl_slist* ftp_command; + + struct { + char* path; // folder + int length; + } folder; + struct { + char* name_fmt; // printf() format string char* path; // folder + filename time_t time; // date and time int64_t size; // total size (0 if size unknown) } file; - // aria2 ctrl file + // aria2 control file struct { - char* path; + char* path; // folder + filename + ".aria2" UgetA2cf ctrl; } aria2; @@ -92,20 +110,19 @@ // segment (split download) struct { - UgList list; // list of UgetCurl - int64_t beg; - uintptr_t n_max; - uintptr_t n_active; - uintptr_t n_recycled; - } seg; + UgList list; // list of segment (UgetCurl) + int64_t beg; // beginning of undownloaded position + int n_max; + int n_active; + } segment; // progress for uget_plugin_sync() time_t start_time; - // base.download = base downloaded size - // base.upload = base uploaded size - // size.download = downloaded size - // size.upload = uploaded size + // base.download = base downloaded size (existing downloaded size) + // base.upload = base uploaded size (existing uploaded size) + // size.download = downloaded size (base + threads downloaded size) + // size.upload = uploaded size (base + threads uploaded size) // speed.download = downloading speed // speed.upload = uploading speed // limit.download = download speed limit @@ -116,12 +133,11 @@ } base, size, speed, limit; // flags - uint8_t limit_by_user:1; // speed limit changed by user - uint8_t limit_changed:1; // speed limit changed + uint8_t limit_changed:1; // speed limit changed by user or program uint8_t file_renamed:1; // has file path? - uint8_t aria2_created:1; // has aria2 ctrl file? uint8_t synced:1; - uint8_t stopped:1; // ctrl + uint8_t paused:1; // paused by user or program + uint8_t stopped:1; // all of downloading thread are stopped uint8_t prepared:1; // prepare to download }; @@ -137,14 +153,18 @@ namespace Uget { +const PluginInfo* const PluginCurlInfo = (const PluginInfo*) UgetPluginCurlInfo; + // This one is for derived use only. No data members here. // Your derived struct/class must be C++11 standard-layout -struct PluginCurlMethod : Uget::PluginMethod -{ -}; +struct PluginCurlMethod : PluginMethod {}; // This one is for directly use only. You can NOT derived it. -struct PluginCurl : Uget::PluginEmptyMethod, UgetPluginCurl {}; +struct PluginCurl : PluginCurlMethod, UgetPluginCurl +{ + inline void* operator new(size_t size) + { return uget_plugin_new(PluginCurlInfo); } +}; }; // namespace Uget diff -Nru uget-2.0.2/uget/UgetPluginEmpty.c uget-2.2.2/uget/UgetPluginEmpty.c --- uget-2.0.2/uget/UgetPluginEmpty.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetPluginEmpty.c 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -40,14 +40,15 @@ #include // ---------------------------------------------------------------------------- -// UgetPluginInfo (derived from UgDataInfo) +// UgetPluginInfo (derived from UgTypeInfo) -static void plugin_init (UgetPluginEmpty* plugin); -static void plugin_final (UgetPluginEmpty* plugin); -static int plugin_ctrl (UgetPluginEmpty* plugin, int code, void* data); -static int plugin_sync (UgetPluginEmpty* plugin); -static UgetResult global_set (int code, void* parameter); -static UgetResult global_get (int code, void* parameter); +static void plugin_init (UgetPluginEmpty* plugin); +static void plugin_final(UgetPluginEmpty* plugin); +static int plugin_ctrl (UgetPluginEmpty* plugin, int code, void* data); +static int plugin_accept(UgetPluginEmpty* plugin, UgInfo* node_info); +static int plugin_sync (UgetPluginEmpty* plugin, UgInfo* node_info); +static UgetResult global_set(int code, void* parameter); +static UgetResult global_get(int code, void* parameter); static const char* schemes[] = {"http", "ftp", NULL}; static const char* types[] = {"torrent", NULL}; @@ -55,18 +56,17 @@ static const UgetPluginInfo UgetPluginEmptyInfoStatic = { "empty", - sizeof (UgetPluginEmpty), - (const UgEntry*) NULL, + sizeof(UgetPluginEmpty), (UgInitFunc) plugin_init, (UgFinalFunc) plugin_final, - (UgAssignFunc) NULL, - (UgetPluginCtrlFunc) plugin_ctrl, + (UgetPluginSyncFunc) plugin_accept, (UgetPluginSyncFunc) plugin_sync, + (UgetPluginCtrlFunc) plugin_ctrl, NULL, schemes, types, - (UgetPluginSetFunc) global_set, - (UgetPluginGetFunc) global_get + (UgetPluginGlobalFunc) global_set, + (UgetPluginGlobalFunc) global_get }; // extern const UgetPluginInfo* UgetPluginEmptyInfo = &UgetPluginEmptyInfoStatic; @@ -80,7 +80,7 @@ int ref_count; } global = {0, 0}; -static UgetResult global_init (void) +static UgetResult global_init(void) { if (global.initialized == FALSE) { // @@ -89,41 +89,41 @@ // return UGET_RESULT_ERROR; // global.initialized = TRUE; - puts ("UgetPluginEmpty global initialize"); + puts("UgetPluginEmpty global initialize"); } global.ref_count++; return UGET_RESULT_OK; } -static void global_ref (void) +static void global_ref(void) { global.ref_count++; } -static void global_unref (void) +static void global_unref(void) { if (global.initialized == FALSE) return; global.ref_count--; if (global.ref_count == 0) { - global.initialized = 0; + global.initialized = FALSE; // // your global finalized code // - puts ("UgetPluginEmpty global finalize"); + puts("UgetPluginEmpty global finalize"); } } -static UgetResult global_set (int option, void* parameter) +static UgetResult global_set(int option, void* parameter) { switch (option) { - case UGET_PLUGIN_INIT: + case UGET_PLUGIN_GLOBAL_INIT: // do global initialize/uninitialize here if (parameter) - return global_init (); + return global_init(); else - global_unref (); + global_unref(); break; default: @@ -133,15 +133,15 @@ return UGET_RESULT_OK; } -static UgetResult global_get (int option, void* parameter) +static UgetResult global_get(int option, void* parameter) { switch (option) { - case UGET_PLUGIN_INIT: + case UGET_PLUGIN_GLOBAL_INIT: if (parameter) *(int*)parameter = global.initialized; break; - case UGET_PLUGIN_ERROR_CODE: + case UGET_PLUGIN_GLOBAL_ERROR_CODE: if (parameter) *(int*)parameter = 0; break; @@ -156,115 +156,133 @@ // ---------------------------------------------------------------------------- // control functions -static void plugin_init (UgetPluginEmpty* plugin) +static void plugin_init(UgetPluginEmpty* plugin) { if (global.initialized == FALSE) - global_init (); + global_init(); else - global_ref (); + global_ref(); + // // your initialized code. // } -static void plugin_final (UgetPluginEmpty* plugin) +static void plugin_final(UgetPluginEmpty* plugin) { // // your finalized code. // - if (plugin->node) - uget_node_unref (plugin->node); - global_unref (); + + // clear UgetCommon + if (plugin->common) + ug_data_free(plugin->common); + + global_unref(); } // ---------------------------------------------------------------------------- // plugin_ctrl -static int plugin_ctrl_speed (UgetPluginEmpty* plugin, int* speed); -static int plugin_start (UgetPluginEmpty* plugin, UgetNode* node); -static void plugin_stop (UgetPluginEmpty* plugin); +static int plugin_ctrl_speed(UgetPluginEmpty* plugin, int* speed); +static int plugin_start(UgetPluginEmpty* plugin); +static void plugin_stop(UgetPluginEmpty* plugin); -static int plugin_ctrl (UgetPluginEmpty* plugin, int code, void* data) +static int plugin_ctrl(UgetPluginEmpty* plugin, int code, void* data) { switch (code) { case UGET_PLUGIN_CTRL_START: - if (plugin->node == NULL) - return plugin_start (plugin, data); + if (plugin->common) + return plugin_start(plugin); break; case UGET_PLUGIN_CTRL_STOP: - plugin_stop (plugin); + plugin_stop(plugin); return TRUE; case UGET_PLUGIN_CTRL_SPEED: // speed control - return plugin_ctrl_speed (plugin, data); + return plugin_ctrl_speed(plugin, data); + + // state ---------------- + case UGET_PLUGIN_GET_STATE: + *(int*)data = FALSE; + return TRUE; - case UGET_PLUGIN_CTRL_NODE_UPDATED: + default: break; } return FALSE; } -static int plugin_ctrl_speed (UgetPluginEmpty* plugin, int* speed) +static int plugin_ctrl_speed(UgetPluginEmpty* plugin, int* speed) { UgetCommon* common; int value; - // Don't do anything if speed limit keep no change. - if (plugin->limit[0] == speed[0] && plugin->limit[1] == speed[1]) - return TRUE; + // notify plug-in that speed limit has been changed + if (plugin->limit[0] != speed[0] || plugin->limit[1] != speed[1]) + plugin->limit_changed = TRUE; // decide speed limit by user specified data. - if (plugin->node == NULL) { + if (plugin->common == NULL) { plugin->limit[0] = speed[0]; plugin->limit[1] = speed[1]; } else { - common = ug_info_realloc (&plugin->node->info, UgetCommonInfo); + common = plugin->common; // download value = speed[0]; if (common->max_download_speed) { - if (value > common->max_download_speed || value == 0) + if (value > common->max_download_speed || value == 0) { value = common->max_download_speed; + plugin->limit_changed = TRUE; + } } plugin->limit[0] = value; // upload value = speed[1]; if (common->max_upload_speed) { - if (value > common->max_upload_speed || value == 0) + if (value > common->max_upload_speed || value == 0) { value = common->max_upload_speed; + plugin->limit_changed = TRUE; + } } plugin->limit[1] = value; } - // notify plugin that speed limit has been changed - plugin->limit_changed = TRUE; - return TRUE; + return plugin->limit_changed; } // ---------------------------------------------------------------------------- -// plugin_sync +// plugin_accept/plugin_sync + +// return TRUE if UgInfo was accepted by plug-in. +// return FALSE if UgInfo is lack of necessary data. +static int plugin_accept(UgetPluginEmpty* plugin, UgInfo* node_info) +{ + UgetCommon* common; + + common = ug_info_get(node_info, UgetCommonInfo); + if (common == NULL || common->uri == NULL) + return FALSE; + + plugin->common = ug_data_copy(plugin->common); + return TRUE; +} -static int plugin_sync (UgetPluginEmpty* plugin) +// return TRUE if plug-in is running or some data need to sync. +// return FALSE if plug-in was stopped and no data need to sync. +static int plugin_sync(UgetPluginEmpty* plugin, UgInfo* node_info) { - // if plugin was stopped, return FALSE. return FALSE; } // ---------------------------------------------------------------------------- -static int plugin_start (UgetPluginEmpty* plugin, UgetNode* node) +static int plugin_start(UgetPluginEmpty* plugin) { - UgetCommon* common; - - common = ug_info_get (&node->info, UgetCommonInfo); - if (common == NULL || common->uri == NULL) - return FALSE; - - plugin->node = node; - uget_node_ref (node); return TRUE; } -static void plugin_stop (UgetPluginEmpty* plugin) +static void plugin_stop(UgetPluginEmpty* plugin) { } diff -Nru uget-2.0.2/uget/UgetPluginEmpty.h uget-2.2.2/uget/UgetPluginEmpty.h --- uget-2.0.2/uget/UgetPluginEmpty.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetPluginEmpty.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -43,27 +43,38 @@ extern "C" { #endif -typedef struct UgetPluginEmpty UgetPluginEmpty; +typedef struct UgetPluginEmpty UgetPluginEmpty; + +extern const UgetPluginInfo* UgetPluginEmptyInfo; typedef enum { - UGET_PLUGIN_EMPTY_BEGIN = UGET_PLUGIN_OPTION_DERIVED, // begin + UGET_PLUGIN_EMPTY_GLOBAL = UGET_PLUGIN_GLOBAL_DERIVED, // begin // your setting ID... } UgetPluginEmptyCode; -extern const UgetPluginInfo* UgetPluginEmptyInfo; +/* ---------------------------------------------------------------------------- + UgetPluginEmpty: an empty plug-in. It derived from UgetPlugin. -// ---------------------------------------------------------------------------- -// UgetPluginEmpty: an empty plugin. It derived from UgetPlugin. + UgType + | + `--- UgetPlugin + | + `--- UgetPluginEmpty + */ struct UgetPluginEmpty { - UGET_PLUGIN_MEMBERS; // It derived from UgetPlugin -// const UgetPluginInfo* info; -// UgetEvent* messages; -// UgMutex mutex; -// int ref_count; + UGET_PLUGIN_MEMBERS; +/* // ------ UgType members ------ + const UgetPluginInfo* info; + + // ------ UgetPlugin members ------ + UgetEvent* messages; + UgMutex mutex; + int ref_count; + */ - UgetNode* node; + UgetCommon* common; // speed limit control // limit[0] = download speed limit @@ -85,14 +96,18 @@ namespace Uget { +const PluginInfo* const PluginEmptyInfo = (const PluginInfo*) UgetPluginEmptyInfo; + // This one is for derived use only. No data members here. // Your derived struct/class must be C++11 standard-layout -struct PluginEmptyMethod : Uget::PluginMethod -{ -}; +struct PluginEmptyMethod : PluginMethod {}; // This one is for directly use only. You can NOT derived it. -struct PluginEmpty : Uget::PluginEmptyMethod, UgetPluginEmpty {}; +struct PluginEmpty : PluginEmptyMethod, UgetPluginEmpty +{ + inline void* operator new(size_t size) + { return uget_plugin_new(PluginEmptyInfo); } +}; }; // namespace Uget diff -Nru uget-2.0.2/uget/UgetPlugin.h uget-2.2.2/uget/UgetPlugin.h --- uget-2.0.2/uget/UgetPlugin.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetPlugin.h 2019-05-19 16:49:06.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -40,8 +40,8 @@ #include #include #include +#include #include -#include #include #ifdef __cplusplus @@ -52,23 +52,28 @@ typedef struct UgetPluginInfo UgetPluginInfo; typedef enum { - UGET_PLUGIN_CTRL_START, // UgetNode* + // input ---------------- + UGET_PLUGIN_CTRL_START, UGET_PLUGIN_CTRL_STOP, UGET_PLUGIN_CTRL_SPEED, // int*, int[0] = download, int[1] = upload - UGET_PLUGIN_CTRL_NODE_UPDATED, - UGET_PLUGIN_CTRL_LIMIT_CHANGED, + + // state ---------------- + UGET_PLUGIN_SET_STATE, // int*, TRUE or FALSE (unused) + UGET_PLUGIN_GET_STATE, // int*, TRUE or FALSE } UgetPluginCtrlCode; +// global typedef enum { - UGET_PLUGIN_INIT, // get/set, parameter = 0 or 1 (FALSE or TRUE) - UGET_PLUGIN_SETTING, // get/set, parameter = (void* custom_struct) - UGET_PLUGIN_SPEED_LIMIT, // get/set, parameter = (int* speed[2]) - UGET_PLUGIN_SPEED, // get, parameter = (int* speed[2]) - UGET_PLUGIN_ERROR_CODE, // get, parameter = (int* error_code) - UGET_PLUGIN_ERROR_STRING, // get, parameter = (char** error_string) + UGET_PLUGIN_GLOBAL_INIT, // get/set, parameter = (intptr_t = FALSE or TRUE) + UGET_PLUGIN_GLOBAL_SETTING, // get/set, parameter = (void* custom_struct) + UGET_PLUGIN_GLOBAL_SPEED_LIMIT, // get/set, parameter = (int speed[2]) + UGET_PLUGIN_GLOBAL_SPEED, // get, parameter = (int speed[2]) + UGET_PLUGIN_GLOBAL_ERROR_CODE, // get, parameter = (int* error_code) + UGET_PLUGIN_GLOBAL_ERROR_STRING, // get, parameter = (char** error_string) + UGET_PLUGIN_GLOBAL_MATCH, // get, parameter = (char* url) - UGET_PLUGIN_OPTION_DERIVED = 10000, // for derived plug-ins -} UgetPluginOption; + UGET_PLUGIN_GLOBAL_DERIVED = 10000, // for derived plug-ins +} UgetPluginGlobalOption; typedef enum { UGET_RESULT_OK = 0, @@ -77,45 +82,98 @@ UGET_RESULT_UNSUPPORT, } UgetResult; -typedef int (*UgetPluginSyncFunc)(UgetPlugin* plugin); +// accept/sync return TRUE or FALSE +typedef int (*UgetPluginSyncFunc)(UgetPlugin* plugin, UgInfo* info); +// start/stop...etc return TRUE or FALSE. typedef int (*UgetPluginCtrlFunc)(UgetPlugin* plugin, int, void* data); -typedef UgetResult (*UgetPluginSetFunc) (int option, void* parameter); -typedef UgetResult (*UgetPluginGetFunc) (int option, void* parameter); +// global_set/global_get +typedef UgetResult (*UgetPluginGlobalFunc)(int option, void* parameter); -// ---------------------------------------------------------------------------- -// UgetPluginInfo +/* ---------------------------------------------------------------------------- + UgetPluginInfo + + UgTypeInfo + | + `-- UgetPluginInfo + */ struct UgetPluginInfo { - UG_DATA_INFO_MEMBERS; -// const char* name; -// uintptr_t size; -// const UgEntry* entry; -// UgInitFunc init; -// UgFinalFunc final; -// UgAssignFunc assign; + UG_TYPE_INFO_MEMBERS; +/* // ------ UgTypeInfo members ------ + const char* name; + uintptr_t size; + UgInitFunc init; + UgFinalFunc final; + */ + UgetPluginSyncFunc accept; // pass data to plug-in. + UgetPluginSyncFunc sync; // call this to sync/exchange data. UgetPluginCtrlFunc ctrl; - UgetPluginSyncFunc sync; // UgetTask call this to sync data // ---------------------------- // Global data and functions - // UgetTask use below data to match UgetPlugin and UgetNode + // global data is used for matching UgetPlugin and UgInfo const char** hosts; const char** schemes; const char** file_exts; - // global set/get function for plugin special setting. - UgetPluginSetFunc set; - UgetPluginGetFunc get; + // global set/get function for plug-in special setting. + UgetPluginGlobalFunc global_set; + UgetPluginGlobalFunc global_get; }; -// ---------------------------------------------------------------------------- -// UgetPlugin: It derived from UgData. -// It it base class/struct that used by plug-ins. +UgetResult uget_plugin_global_set(const UgetPluginInfo* info, + int option, void* parameter); +UgetResult uget_plugin_global_get(const UgetPluginInfo* info, + int option, void* parameter); -#define UGET_PLUGIN_MEMBERS \ +// return matched count. +// return 3 if URI can be matched hosts, schemes, and file_exts. +int uget_plugin_match(const UgetPluginInfo* info, UgUri* uuri); + +/* ---------------------------------------------------------------------------- + UgetPlugin: It is base class/struct that used by plug-ins. + It derived from UgType. + + UgType + | + `-- UgetPlugin + + accept(info) accept(info) + ,----------. -------------> ,-----------. -------------> ,-----------. + | | | | | | + | User App | | plug-in 1 | | plug-in 2 | + | | | | | | + `----------' <------------> `-----------' <------------> `-----------' + sync(info) sync(info) + + // create and start plug-in + plugin = uget_plugin_new(UgetPluginCurlInfo); + uget_plugin_accept(plugin, info); + if (uget_plugin_start(plugin) == FALSE) { + uget_plugin_unref(plugin); + return; + } + + // Running loop sample 1: use uget_plugin_sync() + while (uget_plugin_sync(plugin, info)) { + // sleep(); + // do something here + } + + // Running loop sample 2: use uget_plugin_get_state() + do { + // sleep(); + // do something here + // If you don't want to exchange data (e.g. progress) with plug-in, + // you do not need to call uget_plugin_sync() at last. + uget_plugin_sync(plugin, info); + } while (uget_plugin_get_state(plugin)); + */ + +#define UGET_PLUGIN_MEMBERS \ const UgetPluginInfo* info; \ UgetEvent* events; \ UgMutex mutex; \ @@ -123,63 +181,50 @@ struct UgetPlugin { - UGET_PLUGIN_MEMBERS; // It derived from UgData -// const UgetPluginInfo* info; -// UgetEvent* events; -// UgMutex mutex; -// int ref_count; + UGET_PLUGIN_MEMBERS; +/* // ------ UgType members ------ + const UgetPluginInfo* info; + + // ------ UgetPlugin members ------ + UgetEvent* events; + UgMutex mutex; + int ref_count; + */ }; -// UgetPluginInfo global functions -UgetPlugin* uget_plugin_new (const UgetPluginInfo* info); -UgetResult uget_plugin_set (const UgetPluginInfo* info, int option, void* parameter); -UgetResult uget_plugin_get (const UgetPluginInfo* info, int option, void* parameter); - -// return matched count. -// return 3 if URI can be matched hosts, schemes, and file_exts. -int uget_plugin_match (const UgetPluginInfo* info, UgUri* uuri); - // UgetPlugin functions -//void uget_plugin_init (UgetPlugin* plugin); -#define uget_plugin_init ug_data_init +UgetPlugin* uget_plugin_new(const UgetPluginInfo* info); -//void uget_plugin_final (UgetPlugin* plugin); -#define uget_plugin_final ug_data_final +void uget_plugin_ref(UgetPlugin* plugin); +void uget_plugin_unref(UgetPlugin* plugin); -//void uget_plugin_assign (UgetPlugin* plugin, UgetPlugin* src); -#define uget_plugin_assign ug_data_assign +// return TRUE if UgInfo was accepted by plug-in. +// return FALSE if UgInfo lacks necessary data. +int uget_plugin_accept(UgetPlugin* plugin, UgInfo* info); + +// return TRUE if plug-in is running or some data need to exchange/sync. +// return FALSE if plug-in was stopped and no data need to exchange/sync. +int uget_plugin_sync(UgetPlugin* plugin, UgInfo* info); -// plug-in will start after program call this function. -// if node == NULL, plug-in will stop. // return TRUE or FALSE. -int uget_plugin_ctrl (UgetPlugin* plugin, int code, void* data); +int uget_plugin_ctrl(UgetPlugin* plugin, int code, void* data); -#define uget_plugin_start(plugin, node) \ - uget_plugin_ctrl (plugin, UGET_PLUGIN_CTRL_START, node) -#define uget_plugin_stop(plugin) \ - uget_plugin_ctrl (plugin, UGET_PLUGIN_CTRL_STOP, NULL) +#define uget_plugin_start(plugin) \ + uget_plugin_ctrl(plugin, UGET_PLUGIN_CTRL_START, NULL) +#define uget_plugin_stop(plugin) \ + uget_plugin_ctrl(plugin, UGET_PLUGIN_CTRL_STOP, NULL) #define uget_plugin_ctrl_speed(plugin, dl_ul_int_array) \ - uget_plugin_ctrl (plugin, UGET_PLUGIN_CTRL_SPEED, dl_ul_int_array) -// notify plugin when other data was changed -#define uget_plugin_data_changed(plugin) \ - uget_plugin_ctrl (plugin, UGET_PLUGIN_CTRL_DATA_CHANGED, NULL) -// notify plugin when speed_limit, retry_limit, max_connections...etc was changed -#define uget_plugin_limit_changed(plugin) \ - uget_plugin_ctrl (plugin, UGET_PLUGIN_CTRL_LIMIT_CHANGED, NULL) - -// teturn TRUE if plugin running. -// return FALSE if plugin stopped. -int uget_plugin_sync (UgetPlugin* plugin); + uget_plugin_ctrl(plugin, UGET_PLUGIN_CTRL_SPEED, dl_ul_int_array) -void uget_plugin_ref (UgetPlugin* plugin); -void uget_plugin_unref (UgetPlugin* plugin); +// return > 0 if plug-in is running. +int uget_plugin_get_state(UgetPlugin* plugin); -void uget_plugin_post (UgetPlugin* plugin, UgetEvent* message); -UgetEvent* uget_plugin_pop (UgetPlugin* plugin); +void uget_plugin_post(UgetPlugin* plugin, UgetEvent* message); +UgetEvent* uget_plugin_pop (UgetPlugin* plugin); -#define uget_plugin_lock(plugin) ug_mutex_lock (&(plugin)->mutex) -#define uget_plugin_unlock(plugin) ug_mutex_unlock (&(plugin)->mutex) +#define uget_plugin_lock(plugin) ug_mutex_lock(&(plugin)->mutex) +#define uget_plugin_unlock(plugin) ug_mutex_unlock(&(plugin)->mutex) #ifdef __cplusplus } @@ -197,48 +242,63 @@ // Your derived struct/class must be C++11 standard-layout struct PluginInfoMethod { - inline UgetResult set (int option, void* parameter) - { return uget_plugin_set ((UgetPluginInfo*)this, option, parameter); } - inline UgetResult get (int option, void* parameter) - { return uget_plugin_get ((UgetPluginInfo*)this, option, parameter); } + inline UgetResult globalSet(int option, void* parameter) + { return uget_plugin_global_set((UgetPluginInfo*)this, option, parameter); } + inline UgetResult globalGet(int option, void* parameter) + { return uget_plugin_global_get((UgetPluginInfo*)this, option, parameter); } - inline int match (UgUri* uuri) - { return uget_plugin_match ((UgetPluginInfo*)this, uuri); } + inline int match(UgUri* uuri) + { return uget_plugin_match((UgetPluginInfo*)this, uuri); } }; // This one is for directly use only. You can NOT derived it. -struct PluginInfo : Uget::PluginInfoMethod, UgetPluginInfo {}; +struct PluginInfo : PluginInfoMethod, UgetPluginInfo {}; // This one is for derived use only. No data members here. // Your derived struct/class must be C++11 standard-layout -struct PluginMethod : Ug::DataMethod +struct PluginMethod { - inline void assign (UgetNode* baseNode) - { uget_plugin_assign ((UgetPlugin*) this, baseNode); } - - inline void start (UgetNode* baseNode) - { uget_plugin_start ((UgetPlugin*) this, baseNode); } - - inline void stop (void) - { uget_plugin_stop ((UgetPlugin*) this); } - - inline int sync (void) - { return uget_plugin_sync ((UgetPlugin*) this); } - - inline void ref (void) - { uget_plugin_ref ((UgetPlugin*) this); } - inline void unref (void) - { uget_plugin_unref ((UgetPlugin*) this); } - - inline void post (UgetEvent* message) - { uget_plugin_post ((UgetPlugin*) this, message); } - inline UgetEvent* pop (void) - { return uget_plugin_pop ((UgetPlugin*) this); } + inline void* operator new(size_t size, const UgetPluginInfo* pinfo) + { return uget_plugin_new(pinfo); } + inline void operator delete(void* p) + { uget_plugin_unref((UgetPlugin*)p); } + + inline void ref(void) + { uget_plugin_ref((UgetPlugin*)this); } + inline void unref(void) + { uget_plugin_unref((UgetPlugin*)this); } + + inline int accept(UgInfo* info) + { return uget_plugin_accept((UgetPlugin*)this, info); } + inline int sync(UgInfo* info) + { return uget_plugin_sync((UgetPlugin*)this, info); } + + inline int ctrl(int code, void* data) + { return uget_plugin_ctrl((UgetPlugin*)this, code, data); } + inline int ctrlSpeed(int* DL_UL_array) + { return uget_plugin_ctrl((UgetPlugin*)this, UGET_PLUGIN_CTRL_SPEED, DL_UL_array); } + inline int ctrlSpeed(int dlspeed, int ulspeed) { + int DL_UL_array[2] = {dlspeed, ulspeed}; + return uget_plugin_ctrl((UgetPlugin*)this, UGET_PLUGIN_CTRL_SPEED, DL_UL_array); + } + + inline int start(void) + { return uget_plugin_start((UgetPlugin*)this); } + inline int stop(void) + { return uget_plugin_stop((UgetPlugin*)this); } + + inline int getState(void) + { return uget_plugin_get_state((UgetPlugin*)this); } + + inline void post(UgetEvent* message) + { uget_plugin_post((UgetPlugin*)this, message); } + inline UgetEvent* pop(void) + { return uget_plugin_pop((UgetPlugin*)this); } }; // This one is for directly use only. You can NOT derived it. -struct Plugin : Uget::PluginMethod, UgetPlugin {}; +struct Plugin : PluginMethod, UgetPlugin {}; }; // namespace Uget diff -Nru uget-2.0.2/uget/UgetPluginMedia.c uget-2.2.2/uget/UgetPluginMedia.c --- uget-2.0.2/uget/UgetPluginMedia.c 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetPluginMedia.c 2019-05-19 16:49:07.000000000 +0000 @@ -0,0 +1,524 @@ +/* + * + * Copyright (C) 2016-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#if defined _WIN32 || defined _WIN64 +#include +#define ug_sleep Sleep +#else +#include // usleep() +#define ug_sleep(millisecond) usleep(millisecond * 1000) +#endif // _WIN32 || _WIN64 + +#ifdef HAVE_GLIB +#include +#undef printf +#else +#define N_(x) x +#define _(x) x +#endif + +// ---------------------------------------------------------------------------- +// UgetPluginInfo (derived from UgTypeInfo) + +static void plugin_init (UgetPluginMedia* plugin); +static void plugin_final(UgetPluginMedia* plugin); +static int plugin_ctrl (UgetPluginMedia* plugin, int code, void* data); +static int plugin_accept(UgetPluginMedia* plugin, UgInfo* node_info); +static int plugin_sync (UgetPluginMedia* plugin, UgInfo* node_info); +static UgetResult global_set(int code, void* parameter); +static UgetResult global_get(int code, void* parameter); + +static const char* schemes[] = {"http", "https", NULL}; +static const char* hosts[] = {"youtube.com", "youtu.be", + NULL}; + +static const UgetPluginInfo UgetPluginMediaInfoStatic = +{ + "media", + sizeof(UgetPluginMedia), + (UgInitFunc) plugin_init, + (UgFinalFunc) plugin_final, + (UgetPluginSyncFunc) plugin_accept, + (UgetPluginSyncFunc) plugin_sync, + (UgetPluginCtrlFunc) plugin_ctrl, + hosts, + schemes, + NULL, + (UgetPluginGlobalFunc) global_set, + (UgetPluginGlobalFunc) global_get +}; +// extern +const UgetPluginInfo* UgetPluginMediaInfo = &UgetPluginMediaInfoStatic; + +// ---------------------------------------------------------------------------- +// global data and it's functions. + +static struct +{ + UgetMediaMatchMode match_mode; + UgetMediaQuality quality; + UgetMediaType type; +} global = {UGET_MEDIA_MATCH_NEAR, UGET_MEDIA_QUALITY_360P, UGET_MEDIA_TYPE_MP4}; + +static UgetResult global_set(int option, void* parameter) +{ + switch (option) { + case UGET_PLUGIN_MEDIA_GLOBAL_MATCH_MODE: + global.match_mode = (intptr_t) parameter; + break; + + case UGET_PLUGIN_MEDIA_GLOBAL_QUALITY: + global.quality = (intptr_t) parameter; + break; + + case UGET_PLUGIN_MEDIA_GLOBAL_TYPE: + global.type = (intptr_t) parameter; + break; + + default: + // call parent's global_set() + return uget_plugin_agent_global_set(option, parameter); + } + + return UGET_RESULT_OK; +} + +static UgetResult global_get(int option, void* parameter) +{ + switch (option) { + case UGET_PLUGIN_GLOBAL_MATCH: + if (uget_site_get_id(parameter) < UGET_SITE_MEDIA) + return UGET_RESULT_FAILED; + break; + + default: + // call parent's global_get() + return uget_plugin_agent_global_get(option, parameter); + } + + return UGET_RESULT_OK; +} + +// ---------------------------------------------------------------------------- +// control functions + +static void plugin_init(UgetPluginMedia* plugin) +{ + // initialize UgetPluginAgent + uget_plugin_agent_init((UgetPluginAgent*) plugin); +} + +static void plugin_final(UgetPluginMedia* plugin) +{ + ug_free(plugin->title); + uget_plugin_agent_final((UgetPluginAgent*) plugin); +} + +// ---------------------------------------------------------------------------- +// plugin_ctrl + +static UgThreadResult plugin_thread(UgetPluginMedia* plugin); + +static int plugin_ctrl(UgetPluginMedia* plugin, int code, void* data) +{ + switch (code) { + case UGET_PLUGIN_CTRL_START: + if (plugin->target_info) { + return uget_plugin_agent_start((UgetPluginAgent*)plugin, + (UgThreadFunc)plugin_thread); + } + break; + + default: + // call parent's plugin_ctrl() + return uget_plugin_agent_ctrl((UgetPluginAgent*)plugin, code, data); + } + return FALSE; +} + +// ---------------------------------------------------------------------------- +// plugin_sync + +static int plugin_sync(UgetPluginMedia* plugin, UgInfo* node_info) +{ + UgetFiles* files; + UgetCommon* common; + UgetProgress* progress; + + if (plugin->stopped) { + if (plugin->synced) + return FALSE; + plugin->synced = TRUE; + } + // avoid crash if plug-in failed to start. + if (plugin->target_info == NULL) + return FALSE; + // sync data between plug-in and foreign UgData + common = ug_info_realloc(node_info, UgetCommonInfo); + // sum retry count + common->retry_count = plugin->target_common->retry_count + plugin->retry_count; + + // change name by title ,item_index, and item_total + if (plugin->named == FALSE && plugin->title) { + plugin->named = TRUE; + ug_free(common->name); + // decide to show "(current/total) title" or "title" + if (plugin->item_total > 1) { + common->name = ug_strdup_printf("(%d/%d) %s", + plugin->item_index + 1, + plugin->item_total, + plugin->title); + } + else + common->name = ug_strdup(plugin->title); + } + + // sync common data (include speed limit) between foreign data and target_info + uget_plugin_agent_sync_common((UgetPluginAgent*) plugin, + common, plugin->target_common); + // downloading file name changed + if (plugin->file_renamed == TRUE) { + plugin->file_renamed = FALSE; + uget_plugin_lock(plugin); + ug_free(common->file); + common->file = ug_strdup(plugin->target_common->file); + uget_plugin_unlock(plugin); + } + // update UgetFiles + files = ug_info_realloc(node_info, UgetFilesInfo); + uget_plugin_lock(plugin); + uget_files_sync(files, plugin->target_files); + uget_plugin_unlock(plugin); + + // sync progress data from target_info to foreign data + progress = ug_info_realloc(node_info, UgetProgressInfo); + uget_plugin_agent_sync_progress((UgetPluginAgent*) plugin, + progress, plugin->target_progress); + // recount progress if plug-in download multiple files + if (plugin->item_total > 1) { + // recount percent + progress->percent = (progress->percent + 100 * plugin->item_index) + / plugin->item_total; + // recount/speculate left time + if (progress->download_speed > 0) { + progress->left = + (progress->total * + (plugin->item_total - plugin->item_index) - + progress->complete) + / progress->download_speed; + } + // sum elapsed time + progress->elapsed += plugin->elapsed; + } + + // if plug-in was stopped, return FALSE. + return TRUE; +} + +// ---------------------------------------------------------------------------- + +static int plugin_accept(UgetPluginMedia* plugin, UgInfo* node_info) +{ + UgetCommon* common; + + common = ug_info_get(node_info, UgetCommonInfo); + if (common == NULL || common->uri == NULL) + return FALSE; + + plugin->target_info = ug_info_new(8, 0); + ug_info_assign(plugin->target_info, node_info, NULL); + plugin->target_files = ug_info_realloc(plugin->target_info, UgetFilesInfo); + plugin->target_common = ug_info_get(plugin->target_info, UgetCommonInfo); + plugin->target_proxy = ug_info_get(plugin->target_info, UgetProxyInfo); + plugin->target_progress = ug_info_realloc(plugin->target_info, UgetProgressInfo); + + return TRUE; +} + +static int is_file_completed(const char* file, const char* folder); + +static UgThreadResult plugin_thread(UgetPluginMedia* plugin) +{ + UgetPluginInfo* plugin_info; + UgetMedia* umedia; + UgetMediaItem* umitem; + UgetCommon* common; + UgetHttp* http; + UgetEvent* msg_next; + UgetEvent* msg; + const char* type = NULL; + const char* quality = NULL; + + common = plugin->target_common; + umedia = uget_media_new(common->uri, 0); + if (uget_media_grab_items(umedia, plugin->target_proxy) == 0) { + if (umedia->event) { + uget_plugin_post((UgetPlugin*) plugin, umedia->event); + umedia->event = NULL; + } + else { + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(UGET_EVENT_ERROR_CUSTOM, + _("Failed to get media link."))); + } + goto exit; + } + // tell plugin_sync() to change foreign UgetCommon::name + if (umedia->title) { + plugin->title = umedia->title; + umedia->title = NULL; + plugin->synced = FALSE; + } + + umitem = uget_media_match(umedia, global.match_mode, + global.quality, global.type); + if (umitem == NULL) { + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(UGET_EVENT_ERROR_CUSTOM, + _("No matched media."))); + goto exit; + } + // set item_index and item_total + plugin->item_index = 0; + plugin->item_total = umedia->size - + ug_list_position((UgList*) umedia, (UgLink*) umitem); + + // set HTTP referrer + http = ug_info_realloc(plugin->target_info, UgetHttpInfo); + if (http->referrer == NULL) + http->referrer = ug_strdup_printf("%s%s", common->uri, "# "); + // clear copied common URI + ug_free(common->uri); + common->uri = NULL; + // reset grand total data + plugin->elapsed = 0; + plugin->retry_count = 0; + + for (; umitem; umitem = umitem->next) { + // stop this loop when user paused this plug-in. + if (plugin->paused) + break; + // Don't increase item_index when running this loop first time. + if (type) + plugin->item_index++; + + switch (umitem->type) { + case UGET_MEDIA_TYPE_3GPP: + type = "3gpp"; + break; + case UGET_MEDIA_TYPE_FLV: + type = "flv"; + break; + case UGET_MEDIA_TYPE_MP4: + type = "mp4"; + break; + case UGET_MEDIA_TYPE_WEBM: + type = "webm"; + break; + default: + type = "unknown"; + break; + } + + switch (umitem->quality) { + case UGET_MEDIA_QUALITY_240P: + quality = "240p"; + break; + case UGET_MEDIA_QUALITY_360P: + quality = "360p"; + break; + case UGET_MEDIA_QUALITY_480P: + quality = "480p"; + break; + case UGET_MEDIA_QUALITY_720P: + quality = "720p"; + break; + case UGET_MEDIA_QUALITY_1080P: + quality = "1080p"; + break; + default: + quality = "unknown"; + break; + } + + // generate file name by title, quality, and type. + uget_plugin_lock(plugin); + ug_free(common->file); + common->file = ug_strdup_printf("%s_%s.%s", + (plugin->title) ? plugin->title : "unknown", + quality, type); + ug_str_replace_chars(common->file, "\\/:*?\"<>|", '_'); + uget_plugin_unlock(plugin); + plugin->file_renamed = TRUE; + + // skip completed file + if (is_file_completed(common->file, common->folder)) + continue; + + // use media link to replace common->uri + common->uri = umitem->url; + + // tell plugin_sync() to change foreign UgetCommon::name + plugin->named = FALSE; + // save/reset retry count + plugin->retry_count += common->retry_count; + common->retry_count = 0; + // save/reset elapsed + plugin->elapsed += plugin->target_progress->elapsed; + plugin->target_progress->elapsed = 0; + + uget_plugin_agent_global_get(UGET_PLUGIN_AGENT_GLOBAL_PLUGIN, + &plugin_info); + // create target_plugin to download + plugin->target_plugin = uget_plugin_new(plugin_info); + uget_plugin_accept(plugin->target_plugin, plugin->target_info); + uget_plugin_ctrl_speed(plugin->target_plugin, plugin->limit); + if (uget_plugin_start(plugin->target_plugin) == FALSE) { + msg = uget_event_new_error(UGET_EVENT_ERROR_THREAD_CREATE_FAILED, + NULL); + uget_plugin_post((UgetPlugin*) plugin, msg); + } + + do { + // sleep 0.5 second + ug_sleep(500); + // stop target_plugin when user paused this plug-in. + if (plugin->paused) { + uget_plugin_stop(plugin->target_plugin); + break; + } + if (plugin->limit_changed) { + plugin->limit_changed = FALSE; + uget_plugin_ctrl_speed(plugin->target_plugin, plugin->limit); + } + + // move event from target_plugin to plug-in + msg = uget_plugin_pop((UgetPlugin*) plugin->target_plugin); + for (; msg; msg = msg_next) { + msg_next = msg->next; + msg->prev = NULL; + msg->next = NULL; + + // handle or discard some message + switch (msg->type) { + case UGET_EVENT_NAME: + // tell plugin_sync() to change file name + plugin->file_renamed = TRUE; + break; + + case UGET_EVENT_ERROR: + // stop downloading if error occurred + plugin->paused = TRUE; + break; + + case UGET_EVENT_STOP: + case UGET_EVENT_COMPLETED: + // discard message + uget_event_free(msg); + continue; + } + // post event to plug-in + uget_plugin_post((UgetPlugin*) plugin, msg); + } + // sync data in plugin_sync() + plugin->synced = FALSE; + uget_plugin_lock(plugin); + uget_plugin_sync(plugin->target_plugin, + plugin->target_info); + uget_plugin_unlock(plugin); + } while (uget_plugin_get_state(plugin->target_plugin)); + + // free target_plugin + uget_plugin_unref(plugin->target_plugin); + plugin->target_plugin = NULL; + } + + common->uri = NULL; // Don't free common->uri again. + + if (plugin->paused == FALSE && umitem == NULL) { + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new(UGET_EVENT_COMPLETED)); + } + uget_plugin_post((UgetPlugin*)plugin, + uget_event_new(UGET_EVENT_STOP)); + +exit: + plugin->stopped = TRUE; + uget_media_free(umedia); + uget_plugin_unref((UgetPlugin*) plugin); + return UG_THREAD_RESULT; +} + +static int is_file_completed(const char* file, const char* folder) +{ + char* path; + char* temp; + int result = FALSE; + + if (folder == NULL) + path = ug_strdup(file); + else + path = ug_build_filename(folder, file, NULL); + + if (ug_file_is_exist(path)) { + temp = ug_strdup_printf("%s.%s", path, "aria2"); + ug_free(path); + path = temp; + if (ug_file_is_exist(path) == FALSE) + result = TRUE; + } + + // debug +// if (result) +// printf("%s is completed\n", path); + + ug_free(path); + return result; +} diff -Nru uget-2.0.2/uget/UgetPluginMedia.h uget-2.2.2/uget/UgetPluginMedia.h --- uget-2.0.2/uget/UgetPluginMedia.h 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetPluginMedia.h 2019-05-19 16:49:07.000000000 +0000 @@ -0,0 +1,156 @@ +/* + * + * Copyright (C) 2016-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#ifndef UGET_PLUGIN_MEDIA_H +#define UGET_PLUGIN_MEDIA_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct UgetPluginMedia UgetPluginMedia; + +extern const UgetPluginInfo* UgetPluginMediaInfo; + +typedef enum { + UGET_PLUGIN_MEDIA_GLOBAL = UGET_PLUGIN_AGENT_GLOBAL_DERIVED, // begin + + UGET_PLUGIN_MEDIA_GLOBAL_MATCH_MODE, // set parameter = (UgetMediaMatchMode) + UGET_PLUGIN_MEDIA_GLOBAL_QUALITY, // set parameter = (UgetMediaQuality) + UGET_PLUGIN_MEDIA_GLOBAL_TYPE, // set parameter = (UgetMediaType) +} UgetPluginMediaGlobalCode; + +/* ---------------------------------------------------------------------------- + UgetPluginMedia: It derived from UgetPluginAgent. + It use libcurl to get video info. + It use curl/aria2 plug-in to download media file. + + UgType + | + `--- UgetPlugin + | + `--- UgetPluginAgent + | + `--- UgetPluginMedia + */ + +struct UgetPluginMedia +{ + UGET_PLUGIN_AGENT_MEMBERS; +/* // ------ UgType members ------ + const UgetPluginInfo* info; + + // ------ UgetPlugin members ------ + UgetEvent* messages; + UgMutex mutex; + int ref_count; + + // ------ UgetPluginAgent members ------ + // This plug-in use other plug-in to download files, + // so we need extra UgetPlugin and UgInfo. + + // plugin->target_info is a copy of UgInfo that store in UgetApp + UgInfo* target_info; + // target_plugin use target_info to download + UgetPlugin* target_plugin; + + // speed limit control + // limit[0] = download speed limit + // limit[1] = upload speed limit + int limit[2]; + uint8_t limit_changed:1; // speed limit changed by user or program + + // control flags + uint8_t paused:1; // paused by user or program + uint8_t stopped:1; // all downloading thread are stopped + */ + + uint8_t synced:1; // used by plugin_sync() + uint8_t named:1; // change UgetCommon::name by title + uint8_t file_renamed:1; // downloading filename changed + + // These UgData store in plugin->target_info + UgetFiles* target_files; + UgetProxy* target_proxy; + UgetCommon* target_common; + UgetProgress* target_progress; + + // plug-in use title to rename file + char* title; + + // use these data to recount progress if plug-in download multiple files. + int64_t elapsed; + int retry_count; + int item_index; // downloading nth files + int item_total; // number of files to download +}; + + +#ifdef __cplusplus +} +#endif + +// ---------------------------------------------------------------------------- +// C++11 standard-layout + +#ifdef __cplusplus + +namespace Uget +{ + +const PluginInfo* const PluginMediaInfo = (const PluginInfo*) UgetPluginMediaInfo; + +// This one is for derived use only. No data members here. +// Your derived struct/class must be C++11 standard-layout +struct PluginMediaMethod : PluginAgentMethod {}; + +// This one is for directly use only. You can NOT derived it. +struct PluginMedia : PluginMediaMethod, UgetPluginMedia +{ + inline void* operator new(size_t size) + { return uget_plugin_new(PluginMediaInfo); } +}; + +}; // namespace Uget + +#endif // __cplusplus + + +#endif // End of UGET_PLUGIN_MEDIA_H + diff -Nru uget-2.0.2/uget/UgetPluginMega.c uget-2.2.2/uget/UgetPluginMega.c --- uget-2.0.2/uget/UgetPluginMega.c 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetPluginMega.c 2019-05-19 16:49:07.000000000 +0000 @@ -0,0 +1,781 @@ +/* + * + * Copyright (C) 2016-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + + +#ifdef HAVE_CONFIG_H +#include +#endif + +// use OpenSSL by default in Windows and Android +#if defined _WIN32 || defined _WIN64 || defined __ANDROID__ +# if !(defined USE_OPENSSL || defined USE_GNUTLS) +# define USE_OPENSSL +# endif +#endif + +// OpenSSL +#ifdef USE_OPENSSL +//#include +#include // OPENSSL_VERSION_NUMBER +#include // CRYPTO_ctr128_encrypt +#include // AES_BLOCK_SIZE +// GnuTLS +#elif defined USE_GNUTLS +#include +// mega plug-in must decrypt data +#else +#error mega plug-in need OpenSSL or GnuTLS to compile. +#endif + +#include +#include + +#include +#include +#include +#include +#include + +#if defined _WIN32 || defined _WIN64 +#include +#define ug_sleep Sleep +#else +#include // usleep() +#define ug_sleep(millisecond) usleep(millisecond * 1000) +#endif // _WIN32 || _WIN64 + +#ifdef HAVE_GLIB +#include +#undef printf +#else +#define N_(x) x +#define _(x) x +#endif + +enum +{ + MEGA_INVALID, + MEGA_FOLDER, + MEGA_FILE, +}; + +// ---------------------------------------------------------------------------- +// MEGA site +static int mega_parse_url(UgetPluginMega* plugin, const char* url); +static int mega_request_info(UgetPluginMega* plugin, const char* id); +static int mega_decrypt_file(UgetPluginMega* plugin, int preset_progress); + +// ---------------------------------------------------------------------------- +// UgetPluginInfo (derived from UgTypeInfo) + +static void plugin_init (UgetPluginMega* plugin); +static void plugin_final(UgetPluginMega* plugin); +static int plugin_accept(UgetPluginMega* plugin, UgInfo* node_info); +static int plugin_sync (UgetPluginMega* plugin, UgInfo* node_info); +static int plugin_ctrl (UgetPluginMega* plugin, int code, void* data); + +static const char* schemes[] = {"https", NULL}; +static const char* hosts[] = {"mega.co.nz", "mega.nz", + NULL}; + +static const UgetPluginInfo UgetPluginMegaInfoStatic = +{ + "mega", + sizeof(UgetPluginMega), + (UgInitFunc) plugin_init, + (UgFinalFunc) plugin_final, + (UgetPluginSyncFunc) plugin_accept, + (UgetPluginSyncFunc) plugin_sync, + (UgetPluginCtrlFunc) plugin_ctrl, + hosts, + schemes, + NULL, + (UgetPluginGlobalFunc) uget_plugin_agent_global_set, + (UgetPluginGlobalFunc) uget_plugin_agent_global_get +}; +// extern +const UgetPluginInfo* UgetPluginMegaInfo = &UgetPluginMegaInfoStatic; + +// ---------------------------------------------------------------------------- +// control functions + +static void plugin_init(UgetPluginMega* plugin) +{ + // initialize UgetPluginAgent + uget_plugin_agent_init((UgetPluginAgent*)plugin); + + // initialize UgetPluginMega + ug_json_init(&plugin->json); + ug_value_init_object(&plugin->value, 5); +} + +static void plugin_final(UgetPluginMega* plugin) +{ + // finalize UgetPluginMega + ug_free(plugin->id); + ug_free(plugin->key); + ug_free(plugin->iv); + ug_free(plugin->url); + ug_free(plugin->file); + ug_json_final(&plugin->json); + ug_value_clear(&plugin->value); + + // finalize UgetPluginAgent + uget_plugin_agent_final((UgetPluginAgent*)plugin); +} + +// ---------------------------------------------------------------------------- + +static UgThreadResult plugin_thread(UgetPluginMega* plugin); + +static int plugin_accept(UgetPluginMega* plugin, UgInfo* node_info) +{ + UgetCommon* common; + + common = ug_info_get(node_info, UgetCommonInfo); + if (common == NULL || common->uri == NULL) + return FALSE; + + // parse MEGA URL + if (mega_parse_url(plugin, common->uri) != MEGA_FILE) { + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(UGET_EVENT_ERROR_CUSTOM, + _("Can't handle this MEGA URL."))); + return FALSE; + } + + plugin->target_info = ug_info_new(8, 0); + ug_info_assign(plugin->target_info, node_info, NULL); + plugin->target_files = ug_info_realloc(plugin->target_info, UgetFilesInfo); + plugin->target_proxy = ug_info_get(plugin->target_info, UgetProxyInfo); + plugin->target_common = ug_info_get(plugin->target_info, UgetCommonInfo); + plugin->target_progress = ug_info_realloc(plugin->target_info, UgetProgressInfo); + + return TRUE; +} + +int plugin_ctrl(UgetPluginMega* plugin, int code, void* data) +{ + switch (code) { + case UGET_PLUGIN_CTRL_START: + if (plugin->target_info) { + return uget_plugin_agent_start((UgetPluginAgent*)plugin, + (UgThreadFunc)plugin_thread); + } + break; + + default: + // call parent's plugin_ctrl() + return uget_plugin_agent_ctrl((UgetPluginAgent*)plugin, code, data); + } + return FALSE; +} + +static int is_downloaded(UgetPluginMega* plugin, UgetCommon* target_common); + +static UgThreadResult plugin_thread(UgetPluginMega* plugin) +{ + UgetPluginInfo* plugin_info; + UgetCommon* target_common; + UgetEvent* msg_next; + UgetEvent* msg; + + // get MEGA download URL & attributes + if (mega_request_info(plugin, plugin->id) == FALSE) { + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_error(UGET_EVENT_ERROR_CUSTOM, + _("Can't get download URL."))); + goto exit; + } + + target_common = plugin->target_common; + // set MEGA download URL + ug_free(target_common->uri); + target_common->uri = plugin->url; + plugin->url = NULL; + // set MEGA output file name + if (target_common->file == NULL) + plugin->named = TRUE; + else { + ug_free(plugin->file); + plugin->file = ug_strdup(target_common->file); + } + ug_free(target_common->file); + target_common->file = ug_strdup_printf("%s.enc", plugin->file); + + // check existed file + if (is_downloaded(plugin, target_common) == TRUE) { + mega_decrypt_file(plugin, TRUE); + goto exit; + } + + uget_plugin_agent_global_get(UGET_PLUGIN_AGENT_GLOBAL_PLUGIN, + &plugin_info); + // create target_plugin to download + plugin->target_plugin = uget_plugin_new(plugin_info); + uget_plugin_accept(plugin->target_plugin, plugin->target_info); + uget_plugin_ctrl_speed(plugin->target_plugin, plugin->limit); + if (uget_plugin_start(plugin->target_plugin) == FALSE) { + msg = uget_event_new_error(UGET_EVENT_ERROR_THREAD_CREATE_FAILED, + NULL); + uget_plugin_post((UgetPlugin*) plugin, msg); + goto exit; + } + + do { + // sleep 0.5 second + ug_sleep(500); + // stop target_plugin when user paused this plug-in. + if (plugin->paused) { + uget_plugin_stop(plugin->target_plugin); + break; + } + if (plugin->limit_changed) { + plugin->limit_changed = FALSE; + uget_plugin_ctrl_speed(plugin->target_plugin, plugin->limit); + } + + // move event from target_plugin to plug-in + msg = uget_plugin_pop((UgetPlugin*) plugin->target_plugin); + for (; msg; msg = msg_next) { + msg_next = msg->next; + msg->prev = NULL; + msg->next = NULL; + + // handle or discard some message + switch (msg->type) { + case UGET_EVENT_ERROR: + // stop downloading if error occurred + plugin->paused = TRUE; + break; + + case UGET_EVENT_NORMAL: + // ignore "not resumable" event + if (msg->value.code == UGET_EVENT_NORMAL_NOT_RESUMABLE) + uget_event_free(msg); + continue; + + case UGET_EVENT_STOP: + case UGET_EVENT_COMPLETED: + // discard message + uget_event_free(msg); + continue; + } + // post event to plug-in + uget_plugin_post((UgetPlugin*) plugin, msg); + } + // sync data in plugin_sync() + plugin->synced = FALSE; + uget_plugin_lock(plugin); + uget_plugin_sync(plugin->target_plugin, + plugin->target_info); + uget_plugin_unlock(plugin); + } while (uget_plugin_get_state(plugin->target_plugin)); + + // free target_plugin + uget_plugin_unref(plugin->target_plugin); + plugin->target_plugin = NULL; + + // if downloading completed, decrypt file + if (plugin->paused == FALSE) + mega_decrypt_file(plugin, FALSE); +exit: + plugin->synced = FALSE; + plugin->stopped = TRUE; + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new(UGET_EVENT_STOP)); + uget_plugin_unref((UgetPlugin*) plugin); + return UG_THREAD_RESULT; +} + +static int plugin_sync(UgetPluginMega* plugin, UgInfo* node_info) +{ + UgetFiles* files; + UgetCommon* common; + UgetProgress* progress; + + if (plugin->stopped) { + if (plugin->synced) + return FALSE; + plugin->synced = TRUE; + } + // avoid crash if plug-in failed to start. + if (plugin->target_common == NULL) + return FALSE; + + // sync common data (include speed limit) between foreign info and target_info + common = ug_info_realloc(node_info, UgetCommonInfo); + uget_plugin_agent_sync_common((UgetPluginAgent*) plugin, + common, plugin->target_common); + + // sync progress data from target_info to foreign info + progress = ug_info_realloc(node_info, UgetProgressInfo); + uget_plugin_agent_sync_progress((UgetPluginAgent*) plugin, + progress, plugin->target_progress); + if (plugin->decrypting == FALSE) + progress->percent = progress->percent * 96 / 100; + + // update UgetFiles + files = ug_info_realloc(node_info, UgetFilesInfo); + uget_plugin_lock(plugin); + uget_files_sync(files, plugin->target_files); + uget_plugin_unlock(plugin); + + // plug-in has got file name from server. + if (plugin->named) { + plugin->named = FALSE; + ug_free(common->name); + common->name = ug_strdup(plugin->file); + ug_free(common->file); + common->file = ug_strdup(plugin->file); + } + + // if plug-in was stopped, return FALSE. + return TRUE; +} + +static int is_downloaded(UgetPluginMega* plugin, UgetCommon* target_common) +{ + char* path; + char* temp; + + // check existed file + if (target_common->folder == NULL) + path = ug_strdup(target_common->file); + else + path = ug_build_filename(target_common->folder, target_common->file, NULL); + + if (ug_file_is_exist(path)) { + temp = path; + path = ug_strdup_printf("%s.aria2", path); + ug_free(temp); + if (ug_file_is_exist(path) == FALSE) { + ug_free(path); + return TRUE; + } + ug_free(path); + } + return FALSE; +} + +// ---------------------------------------------------------------------------- +// MEGA site + +static void xor_n(uint8_t* dest, uint8_t* src1, uint8_t* src2, int length) +{ + for (; length > 0; length--) + *dest++ = *src1++ ^ *src2++; +} + +static int mega_parse_url(UgetPluginMega* plugin, const char* url) +{ + uint8_t* binary_key; + int length; + int result; + + plugin->id = strchr(url, '!'); + if (plugin->id == NULL) + return MEGA_INVALID; + else { + // folder or file + if (plugin->id != url && *(plugin->id-1) == 'F') + result = MEGA_FOLDER; + else + result = MEGA_FILE; + plugin->id++; + } + + plugin->key = strchr(plugin->id, '!'); + if (plugin->key == NULL) + return MEGA_INVALID; + else { + plugin->key++; + if (plugin->key[0] == 0) + return MEGA_INVALID; + } + + // copy string from URL + plugin->id = ug_strndup(plugin->id, plugin->key - plugin->id - 1); + plugin->key = ug_strdup(plugin->key); + ug_str_replace_chars(plugin->key, "-", '+'); + ug_str_replace_chars(plugin->key, "_", '/'); + ug_str_remove_chars(plugin->key, plugin->key, ","); + ug_str_remove_chars(plugin->key, plugin->key, "\n"); + + binary_key = ug_base64_decode(plugin->key, strlen(plugin->key), &length); + plugin->key = ug_realloc(plugin->key, 16); + if (length == 16) + memcpy(plugin->key, binary_key, 16); + else if (length == 32) + xor_n((uint8_t*)plugin->key, binary_key, binary_key+16, 16); + else { + // "Invalid key, please verify your MEGA URL." + ug_free(binary_key); + return MEGA_INVALID; + } + + plugin->iv = ug_malloc(16); + memcpy(plugin->iv, binary_key+16, 8); + memset(plugin->iv+8, 0, 8); + return result; +} + +// ------------------------------------ +// MEGA attributes + +// MEGA{ +// "c":"Yy6d4TsrLpaGN0NwGKf_gwRqgYlZ", +// "n":"filename.ext" +// } + +// n is filename + +static int mega_parse_attributes(UgetPluginMega* plugin, char* attributes) +{ + UgValue* member; + char* iv; + char* attr; + char* buffer; + int length; + + ug_str_replace_chars(attributes, "-", '+'); + ug_str_replace_chars(attributes, "_", '/'); + ug_str_remove_chars(attributes, attributes, ","); + ug_str_remove_chars(attributes, attributes, "\n"); + buffer = (char*)ug_base64_decode(attributes, strlen(attributes), &length); + iv = ug_malloc0(16); + attr = NULL; + +#ifdef USE_OPENSSL + { + AES_KEY key; + + attr = ug_malloc(length); + AES_set_decrypt_key((uint8_t*)plugin->key, 128, &key); +// AES_cbc_decrypt(temp, attr, length, &key, iv, AES_DECRYPT); + CRYPTO_cbc128_decrypt((uint8_t*)buffer, (uint8_t*)attr, length, + &key, (uint8_t*)iv, (block128_f)AES_decrypt); + } +#endif // USE_OPENSSL + +#ifdef USE_GNUTLS + { + gcry_cipher_hd_t gchd; + + gcry_cipher_open(&gchd, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CBC, 0); + gcry_cipher_setkey(gchd, plugin->key, 16); + gcry_cipher_setiv(gchd, iv, 16); + gcry_cipher_decrypt(gchd, buffer, length, NULL, 0); + gcry_cipher_close(gchd); + attr = buffer; + buffer = NULL; + } +#endif // USE_GNUTLS + + ug_free(iv); + ug_free(buffer); + +#ifndef NDEBUG + printf("%.*s\n", length, attr); +#endif + + // search JSON object + buffer = strchr(attr, '{'); + if (buffer == NULL) { + ug_free(attr); + return FALSE; + } + length -= buffer - attr; + + // parse JSON object + ug_value_clear(&plugin->value); + ug_json_begin_parse(&plugin->json); + ug_json_push(&plugin->json, ug_json_parse_value, &plugin->value, NULL); + ug_json_parse(&plugin->json, buffer, length); + ug_json_end_parse(&plugin->json); + ug_free(attr); + + if (plugin->value.type != UG_VALUE_OBJECT) + return FALSE; + ug_value_sort(&plugin->value, ug_value_compare_name); + + // get file name + member = ug_value_find_name(&plugin->value, "n"); + if (member == NULL || member->type != UG_VALUE_STRING) + return FALSE; + plugin->file = ug_strdup(member->c.string); + + return TRUE; +} + +// ------------------------------------ +// MEGA file info result + +// [-9] = doesn't exist? +// +// [ +// { +// "s":61297757, +// "at":"m0n8BXaUMWAU0E62cXP6W7dzE3VZQL-luEZJmnRnbJQPR0RoI9ln720tB3xU4fQPpUzdtm2L6mFUFDVJSljHpum8LsAMZnKTo3ANWEcNIOI9mTAzXTp6_Hg7kyqSIkkV", +// "msd":1, +// "tl":0, +// "g":"http://gfs270n155.userstorage.mega.co.nz/dl/44BKOuGpTz7mogJ8dP7I5tFynclZmBl6aJCoF6E3bqPvmy5SjM0u4qxxzxlvEf0s-Y7Yj3IEKzA8zsrHweCDGlyPvdX6DJc4vX6U9-M4xweMdUM-aiVtqsp8pr3mGw" +// } +// ] + +// at is attributes +// g is download URL +// s is size + +static size_t curl_output_mega_result(char* text, size_t size, + size_t nmemb, UgetPluginMega* plugin) +{ + size *= nmemb; + ug_json_parse(&plugin->json, text, size); + +#ifndef NDEBUG + printf("%.*s\n", size, text); +#endif + + return size; +} + +static int mega_request_info(UgetPluginMega* plugin, const char* id) +{ + CURL* curl; + CURLcode code; + UgValue* member; + char* string; + + ug_json_begin_parse(&plugin->json); + ug_json_push(&plugin->json, ug_json_parse_value, &plugin->value, NULL); + ug_json_push(&plugin->json, ug_json_parse_array, NULL, NULL); + + // setup option + string = ug_strdup_printf("[{\"a\":\"g\",\"g\":1,\"p\":\"%s\"}]", id); + curl = curl_easy_init(); + curl_easy_setopt(curl, CURLOPT_URL, "https://eu.api.mega.co.nz/cs"); + curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L); + curl_easy_setopt(curl, CURLOPT_POST, 1L); + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, string); + curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(string)); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_output_mega_result); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, plugin); + ug_curl_set_proxy(curl, plugin->target_proxy); + code = curl_easy_perform(curl); + ug_free(string); + + if (code != CURLE_OK) + return FALSE; + + if (ug_json_end_parse(&plugin->json) != UG_JSON_ERROR_NONE) + return FALSE; + if (plugin->value.type != UG_VALUE_OBJECT) + return FALSE; + ug_value_sort(&plugin->value, ug_value_compare_name); + + // get download URL + member = ug_value_find_name(&plugin->value, "g"); + if (member == NULL || member->type != UG_VALUE_STRING) + return FALSE; + plugin->url = ug_strdup(member->c.string); + + // get attributes + member = ug_value_find_name(&plugin->value, "at"); + if (member == NULL || member->type != UG_VALUE_STRING) + return FALSE; + // mega_parse_attributes() will call ug_value_clear(&plugin->value); + mega_parse_attributes(plugin, member->c.string); + + return TRUE; +} + +int mega_decrypt_file(UgetPluginMega* plugin, int preset_progress) +{ + UgetFile* file; + UgetCommon* target_common; + char *path_in, *path_out; + FILE *file_in, *file_out; + + target_common = plugin->target_common; + // decrypt input/output file --- + if (target_common->folder == NULL) { + path_out = ug_strdup(plugin->file); + path_in = ug_strdup(target_common->file); + } + else { + path_out = ug_build_filename(target_common->folder, plugin->file, NULL); + path_in = ug_build_filename(target_common->folder, target_common->file, NULL); + } + // decrypt output file --- + file_out = ug_fopen(path_out, "wb"); + if (file_out == NULL) { + ug_free(path_out); + ug_free(path_in); + return FALSE; + } + // decrypt input file --- + file_in = ug_fopen(path_in, "rb"); + if (file_in == NULL) { + ug_free(path_out); + ug_free(path_in); + fclose(file_out); + return FALSE; + } + + // preset progress before decrypting + if (preset_progress == TRUE) { + fseek(file_in, 0L, SEEK_END); + plugin->target_progress->percent = 96; + plugin->target_progress->complete = ug_ftell(file_in); + plugin->target_progress->total = plugin->target_progress->complete; + fseek(file_in, 0L, SEEK_SET); // rewind(file_in); + } + + plugin->synced = FALSE; + plugin->decrypting = TRUE; + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_normal(0, _("decrypting file..."))); + +#ifdef USE_OPENSSL + { + AES_KEY aeskey; + int length; + unsigned int num; + unsigned char* data_in; + unsigned char* data_out; + unsigned char* ecount_buf; + + data_in = ug_malloc(AES_BLOCK_SIZE * 3); + data_out = data_in + AES_BLOCK_SIZE; + ecount_buf = data_out + AES_BLOCK_SIZE; + + // set to zeros before the first call to ctr128_encrypt + memset(ecount_buf, 0, AES_BLOCK_SIZE); + num = 0; + + // CTR mode doesn't need separate encrypt and decrypt method. + AES_set_encrypt_key((uint8_t*)plugin->key, 128, &aeskey); + + while (1) { + length = fread(data_in, 1, AES_BLOCK_SIZE, file_in); + + #if OPENSSL_VERSION_NUMBER >= 0x10100000L + CRYPTO_ctr128_encrypt(data_in, data_out, length, + &aeskey, (uint8_t*)plugin->iv, ecount_buf, &num, + (block128_f)AES_encrypt); + #else + AES_ctr128_encrypt(data_in, data_out, length, + &aeskey, (uint8_t*)plugin->iv, ecount_buf, &num); + #endif + + fwrite(data_out, 1, length, file_out); + + // decrypting progress + plugin->target_progress->complete = ug_ftell(file_out); + plugin->target_progress->percent = 96 + + plugin->target_progress->complete * 4 / plugin->target_progress->total; + plugin->synced = FALSE; + // check EOF + if (length < AES_BLOCK_SIZE) + break; + } + + ug_free(data_in); + } +#endif // USE_OPENSSL + +#ifdef USE_GNUTLS + { + char* buffer; + int length; + gcry_cipher_hd_t gchd; + + // CTR mode doesn't need separate encrypt and decrypt method. + gcry_cipher_open(&gchd, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CTR, 0); + gcry_cipher_setkey(gchd, plugin->key, 16); + gcry_cipher_setiv(gchd, plugin->iv, 16); + gcry_cipher_setctr(gchd, plugin->iv, 16); // counter vector + + buffer = ug_malloc(16); + while (1) { + length = fread(buffer, 1, 16, file_in); + gcry_cipher_encrypt(gchd, buffer, length, NULL, 0); + fwrite(buffer, 1, length, file_out); + // decrypting progress + plugin->target_progress->complete = ug_ftell(file_out); + plugin->target_progress->percent = 96 + + plugin->target_progress->complete * 4 / plugin->target_progress->total; + plugin->synced = FALSE; + // check EOF + if (length < 16) + break; + } + ug_free(buffer); + + gcry_cipher_close(gchd); + } +#endif // USE_GNUTLS + + // decryption completed + fclose(file_out); + fclose(file_in); + ug_remove(path_in); + + // update UgetFiles + uget_plugin_lock(plugin); + file = uget_files_realloc(plugin->target_files, path_in); + file->state |= UGET_FILE_STATE_DELETED; + file = uget_files_replace(plugin->target_files, path_out, + UGET_FILE_REGULAR, UGET_FILE_STATE_COMPLETED); + uget_plugin_unlock(plugin); + + // free path and update progress + ug_free(path_in); + ug_free(path_out); + plugin->target_progress->percent = 100; + + // post message + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new_normal(0, _("decryption completed"))); + uget_plugin_post((UgetPlugin*) plugin, + uget_event_new(UGET_EVENT_COMPLETED)); + + return TRUE; +} + diff -Nru uget-2.0.2/uget/UgetPluginMega.h uget-2.2.2/uget/UgetPluginMega.h --- uget-2.0.2/uget/UgetPluginMega.h 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetPluginMega.h 2019-05-19 16:49:07.000000000 +0000 @@ -0,0 +1,154 @@ +/* + * + * Copyright (C) 2016-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#ifndef UGET_PLUGIN_MEGA_H +#define UGET_PLUGIN_MEGA_H + +#include +#include +#include +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct UgetPluginMega UgetPluginMega; + +extern const UgetPluginInfo* UgetPluginMegaInfo; + +/* ---------------------------------------------------------------------------- + UgetPluginMega: It derived from UgetPluginAgent. + It use libcurl to get download URL. + It use curl/aria2 plug-in to download file. + + UgType + | + `--- UgetPlugin + | + `--- UgetPluginAgent + | + `--- UgetPluginMega + */ + +struct UgetPluginMega +{ + UGET_PLUGIN_AGENT_MEMBERS; +/* // ------ UgType members ------ + const UgetPluginInfo* info; + + // ------ UgetPlugin members ------ + UgetEvent* messages; + UgMutex mutex; + int ref_count; + + // ------ UgetPluginAgent members ------ + // This plug-in use other plug-in to download files, + // so we need extra UgetPlugin and UgInfo. + + // plugin->target_info is a copy of UgInfo that store in UgetApp + UgInfo* target_info; + // target_plugin use target_info to download + UgetPlugin* target_plugin; + + // speed limit control + // limit[0] = download speed limit + // limit[1] = upload speed limit + int limit[2]; + uint8_t limit_changed:1; // speed limit changed by user or program + + // control flags + uint8_t paused:1; // paused by user or program + uint8_t stopped:1; // all downloading thread are stopped + */ + + uint8_t named:1; // change UgetCommon::name + uint8_t synced:1; // used by plugin_sync() + uint8_t decrypting:1; // decrypting downloaded file + + // These UgData store in target_info + UgetFiles* target_files; + UgetProxy* target_proxy; + UgetCommon* target_common; + UgetProgress* target_progress; + + // MEGA URL contains these + char* id; // ID + char* key; // decrypt key + char* iv; // Initialization Vector + + // use MEGA ID to request these information + char* url; // file download URL + char* file; // file name + + // JSON parser + UgJson json; + UgValue value; +}; + +#ifdef __cplusplus +} +#endif + +// ---------------------------------------------------------------------------- +// C++11 standard-layout + +#ifdef __cplusplus + +namespace Uget +{ + +const PluginInfo* const PluginMegaInfo = (const PluginInfo*) UgetPluginMegaInfo; + +// This one is for derived use only. No data members here. +// Your derived struct/class must be C++11 standard-layout +struct PluginMegaMethod : PluginAgentMethod {}; + +// This one is for directly use only. You can NOT derived it. +struct PluginMega : PluginMegaMethod, UgetPluginMega +{ + inline void* operator new(size_t size) + { return uget_plugin_new(PluginMegaInfo); } +}; + + +}; // namespace Uget + +#endif // __cplusplus + + +#endif // End of UGET_PLUGIN_MEGA_H diff -Nru uget-2.0.2/uget/UgetRpc.c uget-2.2.2/uget/UgetRpc.c --- uget-2.0.2/uget/UgetRpc.c 2015-09-11 12:12:53.000000000 +0000 +++ uget-2.2.2/uget/UgetRpc.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2015 by C.H. Huang + * Copyright (C) 2015-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -34,6 +34,7 @@ * */ +#include #include // srand() #include // time() #include @@ -41,10 +42,11 @@ #include #include #include +#include #define UGET_RPC_PORT "14777" #define UGET_RPC_ADDR "127.0.0.1" -//#define UGET_RPC_NAME "uGetIPC-" +//#define UGET_RPC_NAME "RPC-socket" //#define UGET_RPC_NAME_ABS "com.ugetdm.uget" //#define UGET_RPC_LIMIT 50 @@ -76,6 +78,10 @@ urpc->backup_dir = ug_strdup (backup_dir); else urpc->backup_dir = NULL; +#ifdef USE_UNIX_DOMAIN_SOCKET + urpc->socket_path = NULL; + urpc->socket_path_len = 0; +#endif return urpc; } @@ -89,6 +95,24 @@ } } +#ifdef USE_UNIX_DOMAIN_SOCKET +void uget_rpc_use_unix_socket (UgetRpc* urpc, const char* path, int path_len) +{ + if (path_len > 0 && path[0] == 0) { + // for Linux abstract socket + urpc->socket_path = ug_malloc (path_len); + memcpy (urpc->socket_path, path, path_len); + } + else { + // for unix domain socket + if (path_len == -1) + path_len = strlen (path); + urpc->socket_path = ug_strndup (path, path_len); + } + urpc->socket_path_len = path_len; +} +#endif // USE_UNIX_DOMAIN_SOCKET + static void uget_rpc_on_destroy (void* data) { UgetRpc* urpc = (UgetRpc*) data; @@ -106,6 +130,12 @@ // ug_list_clear (&urpc->queue, FALSE); ug_mutex_clear (&urpc->queue_lock); +#ifdef USE_UNIX_DOMAIN_SOCKET + // Don't delete file if path is abstract socket names (begin with 0) + if (urpc->server && urpc->socket_path[0]) + ug_unlink (urpc->socket_path); + ug_free (urpc->socket_path); +#endif ug_free (urpc->backup_dir); ug_free (urpc); } @@ -226,6 +256,7 @@ } else #endif // (_WIN32 || _WIN64) && HAVE_GLIB value->c.string = ug_strdup (argv[index]); + // replace invalid characters \/:*?"<>| by _ in filename. if (strncmp (value->c.string, "--filename=", 11) == 0) ug_str_replace_chars (value->c.string +11, "\\/:*?\"<>|", '_'); @@ -235,6 +266,14 @@ uget_rpc_do_request (urpc, jobj); else { jres = ug_jsonrpc_object_new (); +#ifdef USE_UNIX_DOMAIN_SOCKET + if (urpc->socket_path) { + ug_jsonrpc_socket_connect_unix ((UgJsonrpcSocket*) urpc, + urpc->socket_path, + urpc->socket_path_len); + } + else +#endif ug_jsonrpc_socket_connect ((UgJsonrpcSocket*) urpc, UGET_RPC_ADDR, UGET_RPC_PORT); ug_jsonrpc_call (&urpc->rpc, jobj, jres); @@ -255,6 +294,14 @@ uget_rpc_do_request (urpc, jobj); else { jres = ug_jsonrpc_object_new (); +#ifdef USE_UNIX_DOMAIN_SOCKET + if (urpc->socket_path) { + ug_jsonrpc_socket_connect_unix ((UgJsonrpcSocket*) urpc, + urpc->socket_path, + urpc->socket_path_len); + } + else +#endif ug_jsonrpc_socket_connect ((UgJsonrpcSocket*) urpc, UGET_RPC_ADDR, UGET_RPC_PORT); ug_jsonrpc_call (&urpc->rpc, jobj, jres); @@ -263,10 +310,15 @@ ug_jsonrpc_object_free (jobj); } -int uget_rpc_start_server (UgetRpc* urpc) +int uget_rpc_start_server (UgetRpc* urpc, int detect_server) { SOCKET fd; int result; + int in_progress = FALSE; + int opt_value; + socklen_t opt_length; + fd_set fdset; + struct timeval timeout; if (urpc->server) { ug_socket_server_start (urpc->server); @@ -274,13 +326,66 @@ } // detect server - fd = socket (AF_INET, SOCK_STREAM, 0); - result = ug_socket_connect (fd, UGET_RPC_ADDR, UGET_RPC_PORT); - closesocket (fd); - if (result != -1) { - return FALSE; + if (detect_server) { +#ifdef USE_UNIX_DOMAIN_SOCKET + if (urpc->socket_path) { + fd = socket (AF_UNIX, SOCK_STREAM, 0); + ug_socket_set_blocking (fd, FALSE); + result = ug_socket_connect_unix (fd, + urpc->socket_path, + urpc->socket_path_len); + if (errno == EINPROGRESS) + in_progress = TRUE; + } + else +#endif // USE_UNIX_DOMAIN_SOCKET + { + fd = socket (AF_INET, SOCK_STREAM, 0); + ug_socket_set_blocking (fd, FALSE); + result = ug_socket_connect (fd, UGET_RPC_ADDR, UGET_RPC_PORT); +#if (defined _WIN32 || defined _WIN64) + if (WSAGetLastError() == WSAEWOULDBLOCK) + in_progress = TRUE; +#else + if (errno == EINPROGRESS) + in_progress = TRUE; +#endif + } + + // connect with timeout (non-blocking) + if (result < 0 && in_progress) { + FD_ZERO (&fdset); + FD_SET (fd, &fdset); + timeout.tv_sec = 1; + timeout.tv_usec = 0; + // select() return 0 if time limit expired. + // select() return -1 if error. + if (select (fd+1, NULL, &fdset, NULL, &timeout) > 0) { + opt_value = 1; + opt_length = sizeof (opt_value); + getsockopt (fd, SOL_SOCKET, SO_ERROR, (void*)(&opt_value), &opt_length); + if (opt_value == 0) + result = 0; // connect OK + } + } + + closesocket (fd); + if (result != -1) { + return FALSE; + } } + // create server +#ifdef USE_UNIX_DOMAIN_SOCKET + if (urpc->socket_path) { + // Don't delete file if path is abstract socket names (begin with 0) + if (urpc->socket_path[0]) + ug_unlink (urpc->socket_path); + urpc->server = ug_socket_server_new_unix (urpc->socket_path, + urpc->socket_path_len); + } + else +#endif urpc->server = ug_socket_server_new_addr (UGET_RPC_ADDR, UGET_RPC_PORT); if (urpc->server == NULL) return FALSE; diff -Nru uget-2.0.2/uget/UgetRpc.h uget-2.2.2/uget/UgetRpc.h --- uget-2.0.2/uget/UgetRpc.h 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uget/UgetRpc.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2015 by C.H. Huang + * Copyright (C) 2015-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -58,10 +58,12 @@ struct UgetRpc { UG_JSONRPC_SOCKET_MEMBERS; -// UgJson json; -// UgJsonrpc rpc; -// UgBuffer buffer; -// int socket; +/* // ------ UgJsonrpcSocket members ------ + UgJson json; + UgJsonrpc rpc; + UgBuffer buffer; + int socket; + */ UgSocketServer* server; UgJsonrpcObject jobject; @@ -71,17 +73,26 @@ UgList queue; UgMutex queue_lock; char* backup_dir; + +#ifdef USE_UNIX_DOMAIN_SOCKET + char* socket_path; + int socket_path_len; +#endif }; UgetRpc* uget_rpc_new (const char* backup_dir); void uget_rpc_free (UgetRpc* urpc); +#ifdef USE_UNIX_DOMAIN_SOCKET +void uget_rpc_use_unix_socket (UgetRpc* urpc, const char* path, int path_len); +#endif + int uget_rpc_do_request (UgetRpc* urpc, UgJsonrpcObject* jobj); void uget_rpc_send_command (UgetRpc* urpc, int argc, char** argv); void uget_rpc_present (UgetRpc* urpc); // return TRUE if server start -int uget_rpc_start_server (UgetRpc* urpc); +int uget_rpc_start_server (UgetRpc* urpc, int detect_server); void uget_rpc_stop_server (UgetRpc* urpc); int uget_rpc_has_request (UgetRpc* urpc); @@ -98,10 +109,12 @@ struct UgetRpcReq { UGET_RPC_REQ_MEMBERS; // UgLink -// intptr_t method_id; -// UgetRpcReq* next; -// UgetRpcReq* prev; -// UgDeleteFunc free; +/* // ------ UgetRpcReq members ------ + intptr_t method_id; + UgetRpcReq* next; + UgetRpcReq* prev; + UgDeleteFunc free; + */ }; UgetRpcReq* uget_rpc_req_new (void); @@ -113,10 +126,12 @@ struct UgetRpcCmd { UGET_RPC_REQ_MEMBERS; // UgLink -// intptr_t method_id; -// UgetRpcReq* next; -// UgetRpcReq* prev; -// UgDeleteFunc free; +/* // ------ UgetRpcReq members ------ + intptr_t method_id; + UgetRpcReq* next; + UgetRpcReq* prev; + UgDeleteFunc free; + */ UgetOptionValue value; UgList uris; diff -Nru uget-2.0.2/uget/UgetRss.c uget-2.2.2/uget/UgetRss.c --- uget-2.0.2/uget/UgetRss.c 2015-04-30 23:36:03.000000000 +0000 +++ uget-2.2.2/uget/UgetRss.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -369,7 +369,7 @@ return nmemb; } -static UG_THREAD_RETURN_TYPE uget_rss_thread (UgetRss* urss) +static UgThreadResult uget_rss_thread (UgetRss* urss) { CURL* curl; CURLcode res; @@ -415,7 +415,7 @@ urss->updating = FALSE; uget_rss_unref (urss); - return UG_THREAD_RETURN_VALUE; + return UG_THREAD_RESULT; } void uget_rss_update (UgetRss* urss, int joinable) diff -Nru uget-2.0.2/uget/UgetRss.h uget-2.2.2/uget/UgetRss.h --- uget-2.0.2/uget/UgetRss.h 2015-04-30 23:36:03.000000000 +0000 +++ uget-2.2.2/uget/UgetRss.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -66,9 +66,12 @@ struct UgetRssItem { UG_LINK_MEMBERS (UgetRssItem, UgetRssItem, self); -// UgetRssItem* self; -// UgetRssItem* next; -// UgetRssItem* prev; +/* // ------ UgLink members ------ + UgetRssItem* self; + UgetRssItem* next; + UgetRssItem* prev; + */ + char* title; char* link; time_t updated; // pubDate @@ -84,9 +87,12 @@ struct UgetRssFeed { UG_LINK_MEMBERS (UgetRssFeed, UgetRssFeed, self); -// UgetRssFeed* self; -// UgetRssFeed* next; -// UgetRssFeed* prev; +/* // ------ UgLink members ------ + UgetRssFeed* self; + UgetRssFeed* next; + UgetRssFeed* prev; + */ + char* title; char* link; time_t updated; // pubDate diff -Nru uget-2.0.2/uget/UgetSequence.c uget-2.2.2/uget/UgetSequence.c --- uget-2.0.2/uget/UgetSequence.c 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetSequence.c 2019-05-19 16:49:07.000000000 +0000 @@ -0,0 +1,306 @@ +/* + * + * Copyright (C) 2016-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#include +#include +#include +#include + +typedef struct UgLinkString UgLinkString; + +struct UgLinkString +{ + UG_LINK_MEMBERS (UgLinkString, char, data); +// char* data; +// UgLinkString* next; +// UgLinkString* prev; + + char string[1]; +}; + +static UgLink* ug_link_string_new (const char* string, int length) +{ + UgLinkString* link; + + link = ug_malloc (sizeof (UgLinkString) + length); + if (link == NULL) + return NULL; + + link->data = link->string; + link->prev = NULL; + link->next = NULL; + strcpy (link->string, string); + return (UgLink*) link; +} + +// ---------------------------------------------------------------------------- +// UgetSeqRange +static void uget_seq_range_to_first (UgetSeqRange* range) +{ + range->cur = range->first; +} + +static void uget_seq_range_to_last (UgetSeqRange* range) +{ + range->cur = range->last; +} + +// ---------------------------------------------------------------------------- + +void uget_sequence_init (UgetSequence* useq) +{ + ug_array_init (useq, sizeof (UgetSeqRange), 8); + ug_buffer_init (&useq->buf, 128); +} + +void uget_sequence_final (UgetSequence* useq) +{ + ug_array_clear (useq); + ug_buffer_clear (&useq->buf, TRUE); +} + +void uget_sequence_add (UgetSequence* useq, uint32_t first, uint32_t last, int digits) +{ + UgetSeqRange* range; + + range = ug_array_alloc (useq, 1); + range->digits = digits; + + if (first < last) { + range->first = first; + range->last = last; + } + else { + range->first = last; + range->last = first; + } + range->cur = range->first; +} + +void uget_sequence_clear (UgetSequence* useq) +{ + useq->length = 0; +} + +int uget_sequence_count (UgetSequence* useq, const char* pattern) +{ + UgetSeqRange* range; + UgetSeqRange* range_end; + const char* pcur; + int pcur_len; + int count; + + count = 0; + range = useq->at; + range_end = useq->at + useq->length; + + for (pcur = pattern; pcur[0] && range < range_end; pcur++, range++) { + pcur_len = strcspn (pcur, "*"); + if (pcur[pcur_len] != '*') + break; + + if (count == 0) + count = range->last - range->first + 1; + else + count = count * (range->last - range->first + 1); + + pcur += pcur_len; // to next '*' + } + + return count; +} + +// generate string by pattern +static char* uget_sequence_generate1 (UgetSequence* useq, const char* pattern) +{ + UgetSeqRange* range; + char* utf8; + int length; + const char* pcur; + int pcur_len; + + range = useq->at; + useq->buf.cur = useq->buf.beg; + + for (pcur = pattern; pcur[0]; pcur++) { + pcur_len = strcspn (pcur, "*"); + ug_buffer_write (&useq->buf, pcur, pcur_len); + if (pcur[pcur_len] != '*') + break; + + if (range->digits == 0) { + // ASCII or Unicode + if (range->cur < 0x80) + ug_buffer_write_char (&useq->buf, range->cur); + else { + utf8 = ug_ucs4_to_utf8 (&range->cur, 1, &length); + ug_buffer_write (&useq->buf, utf8, length); + ug_free (utf8); + } + } + else { + // digits, 0 - 9 +#ifdef _MSC_VER // for MS C only + length = _scprintf ("%.*u", range->digits, range->cur); +#else // for C99 standard + length = snprintf (NULL, 0, "%.*u", range->digits, range->cur); +#endif + sprintf (ug_buffer_alloc (&useq->buf, length + 1), + "%.*u", range->digits, range->cur); + useq->buf.cur--; // remove null character in tail + } + + if (++range > useq->range_last) + range = useq->at; + pcur += pcur_len; // to next '*' + } + + ug_buffer_write_char (&useq->buf, 0); + return useq->buf.beg; +} + +static int uget_sequence_generate (UgetSequence* useq, const char* pattern, UgetSeqRange* range, UgList* result) +{ + UgLink* link; + int count; + + for (count = 0; range->cur <= range->last; range->cur++) { + if (range+1 <= useq->range_last) + count += uget_sequence_generate (useq, pattern, range+1, result); + else { + uget_sequence_generate1 (useq, pattern); + link = ug_link_string_new (useq->buf.beg, ug_buffer_length (&useq->buf)); + if (link == NULL) + break; + ug_list_append (result, link); + count++; + } + } + + range->cur = range->first; + return count; +} + +static UgetSeqRange* uget_sequence_decide_range_last (UgetSequence* useq, const char* pattern) +{ + const char* wildcard; + int count; + + if (useq->length == 0) + return NULL; + + // count wildcard character (*) to decide the last UgetSeqRange + for (count = 0, wildcard = pattern; wildcard[0]; wildcard++) { + if (wildcard[0] == '*') + count++; + } + if (count < useq->length) + useq->range_last = useq->at + count -1; + else + useq->range_last = useq->at + useq->length -1; + + return useq->range_last; +} + +int uget_sequence_get_list (UgetSequence* useq, const char* pattern, UgList* result) +{ + if (uget_sequence_decide_range_last(useq, pattern) == NULL) + return 0; + + // reset range + ug_array_foreach (useq, (UgForeachFunc)uget_seq_range_to_first, NULL); + // generate list + return uget_sequence_generate (useq, pattern, useq->at, result); +} + +int uget_sequence_get_preview (UgetSequence* useq, const char* pattern, UgList* result) +{ + UgetSeqRange* range_last; + UgetSeqRange* range_prev; + UgLink* link; + int count; + + // use uget_sequence_get_list() to generate preview if possible. + count = uget_sequence_count (useq, pattern); + if (count < 6) + return uget_sequence_get_list (useq, pattern, result); + + range_last = uget_sequence_decide_range_last(useq, pattern); + // decide previous UgetSeqRange by the last UgetSeqRange + for (range_prev = range_last; range_prev != useq->at; range_prev--) { + if (range_prev->last - range_prev->first + 1 > 1) + break; + } + + // reset range to first + ug_array_foreach (useq, (UgForeachFunc)uget_seq_range_to_first, NULL); + + // create 1st string + uget_sequence_generate1 (useq, pattern); + link = ug_link_string_new (useq->buf.beg, ug_buffer_length (&useq->buf)); + ug_list_append (result, link); + // create 2nd string + range_prev->cur++; + uget_sequence_generate1 (useq, pattern); + link = ug_link_string_new (useq->buf.beg, ug_buffer_length (&useq->buf)); + ug_list_append (result, link); + + // create 3rd " ..." + link = ug_link_string_new (" ...", 4); + ug_list_append (result, link); + + // reset range to last + ug_array_foreach (useq, (UgForeachFunc)uget_seq_range_to_last, NULL); + + // create 4th string + range_prev->cur = range_prev->last - 1; + uget_sequence_generate1 (useq, pattern); + link = ug_link_string_new (useq->buf.beg, ug_buffer_length (&useq->buf)); + ug_list_append (result, link); + // create 5th string + range_prev->cur = range_prev->last; + uget_sequence_generate1 (useq, pattern); + link = ug_link_string_new (useq->buf.beg, ug_buffer_length (&useq->buf)); + ug_list_append (result, link); + + return 5; +} + +void uget_sequence_clear_result (UgList* result) +{ + ug_list_foreach_link(result, (UgForeachFunc)ug_free, NULL); + ug_list_clear(result, FALSE); +} diff -Nru uget-2.0.2/uget/UgetSequence.h uget-2.2.2/uget/UgetSequence.h --- uget-2.0.2/uget/UgetSequence.h 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetSequence.h 2019-05-19 16:49:07.000000000 +0000 @@ -0,0 +1,102 @@ +/* + * + * Copyright (C) 2016-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#ifndef UGET_SEQUENCE_H +#define UGET_SEQUENCE_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct UgetSequence UgetSequence; +typedef struct UgetSeqRange UgetSeqRange; + +struct UgetSeqRange +{ + // [first, last] + // e.g. 0-9, A-Z, a-z, or Unicode + uint32_t first; + uint32_t last; + uint32_t cur; + + // if digits == 0, use ASCII or Unicode to generate string. + int digits; +}; + +struct UgetSequence +{ + UG_ARRAY_MEMBERS (UgetSeqRange); +/* // ------ UgArray members ------ + UgetSeqRange* at; + int length; + int allocated; + int element_size; + */ + + UgetSeqRange* range_last; // used by uget_sequence_get_list() + UgBuffer buf; +}; + +void uget_sequence_init (UgetSequence* useq); +void uget_sequence_final (UgetSequence* useq); + +void uget_sequence_add (UgetSequence* useq, uint32_t first, uint32_t last, int digits); +void uget_sequence_clear (UgetSequence* useq); + +int uget_sequence_count (UgetSequence* useq, const char* pattern); + +// call uget_sequence_clear_result() to clear result list +int uget_sequence_get_list (UgetSequence* useq, const char* pattern, UgList* result); +int uget_sequence_get_preview (UgetSequence* useq, const char* pattern, UgList* result); +void uget_sequence_clear_result (UgList* result); +/* + param: pattern is a string that contain wildcard character *. + e.g. Number-*.jpg + Number-0.jpg, Number-1.jpg ...etc + Number-a.jpg, Number-b.jpg ...etc + Number-A.jpg, Number-B.jpg ...etc + */ + +#ifdef __cplusplus +} +#endif + +#endif // UGET_SEQUENCE_H diff -Nru uget-2.0.2/uget/UgetSite.c uget-2.2.2/uget/UgetSite.c --- uget-2.0.2/uget/UgetSite.c 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetSite.c 2019-05-19 16:49:07.000000000 +0000 @@ -0,0 +1,101 @@ +/* + * + * Copyright (C) 2017-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#include +#include +#include + +int uget_site_get_id (const char* url) +{ + UgUri uuri; + + if (ug_uri_init (&uuri, url) == 0) + return UGET_SITE_UNKNOWN; + + if (uuri.scheme_len == 5 && strncmp (url, "https", 5) == 0) { + if (uget_site_is_youtube (&uuri) == TRUE) + return UGET_SITE_YOUTUBE; + if (uget_site_is_mega (&uuri) == TRUE) + return UGET_SITE_MEGA; + } + + return UGET_SITE_UNKNOWN; +} + +// youtube.com +// https://youtube.com/watch?=xxxxxxxxxxx +// https://youtu.be/xxxxxxxxxxx +int uget_site_is_youtube (UgUri* uuri) +{ + int length; + const char* string; + + length = ug_uri_host (uuri, &string); + if (length >= 11 && strncmp (string + length - 11, "youtube.com", 11) == 0) + { + if (strncmp (uuri->uri + uuri->file , "watch?", 6) == 0) + return TRUE; + } + else if (length >= 8 && strncmp (string + length - 8, "youtu.be", 8) == 0) + { + if (uuri->file != -1) + return TRUE; + } + return FALSE; +} + +// mega.co.nz +// https://mega.co.nz/#!xxxxxxxx!xxxxxxxxxxxxxxxxxxxxxx +// https://mega.nz/#!xxxxxxxx!xxxxxxxxxxxxxxxxxxxxxx + +int uget_site_is_mega (UgUri* uuri) +{ + int length; + const char* string; + + length = ug_uri_host (uuri, &string); + if (length >= 10 && strncmp (string + length - 10, "mega.co.nz", 10) == 0) + { + if (uuri->path > 0 && strchr (uuri->uri + uuri->path , '!') != NULL) + return TRUE; + } + else if (length >= 7 && strncmp (string + length - 7, "mega.nz", 7) == 0) + { + if (uuri->path > 0 && strchr (uuri->uri + uuri->path , '!') != NULL) + return TRUE; + } + return FALSE; +} diff -Nru uget-2.0.2/uget/UgetSite.h uget-2.2.2/uget/UgetSite.h --- uget-2.0.2/uget/UgetSite.h 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uget/UgetSite.h 2019-05-19 16:49:07.000000000 +0000 @@ -0,0 +1,70 @@ +/* + * + * Copyright (C) 2017-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#ifndef UGET_SITE_H +#define UGET_SITE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum UgetSiteId +{ + UGET_SITE_UNKNOWN = 0, + + // storage + UGET_SITE_MEGA, + + // media + UGET_SITE_MEDIA = 0x10000000, + UGET_SITE_YOUTUBE = UGET_SITE_MEDIA, +} UgetSiteId; + +// return UgetSiteId +int uget_site_get_id (const char* url); + +// return TRUE or FALSE +int uget_site_is_mega (UgUri* uuri); +int uget_site_is_youtube (UgUri* uuri); + + +#ifdef __cplusplus +} +#endif // __cplusplus + +#endif // UGET_SITE_H diff -Nru uget-2.0.2/uget/UgetTask.c uget-2.2.2/uget/UgetTask.c --- uget-2.0.2/uget/UgetTask.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetTask.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -40,41 +40,48 @@ #include // static function -static int uget_task_dispatch1 (UgetTask* task, UgetNode* node, UgetPlugin* plugin); +static int uget_task_dispatch1(UgetTask* task, UgetNode* node, UgetPlugin* plugin); -void uget_task_init (UgetTask* task) +void uget_task_init(UgetTask* task) { int count; - ug_slinks_init ((UgSLinks*) task, 32); + ug_slinks_init((UgSLinks*) task, 32); for (count = 0; count < UGET_TASK_N_WATCH; count++) { task->watch[count].func = NULL; task->watch[count].data = NULL; } + // current speed & speed limit + task->speed.download = 0; + task->speed.upload = 0; + task->limit.download = 0; + task->limit.upload = 0; } -void uget_task_final (UgetTask* task) +void uget_task_final(UgetTask* task) { - uget_task_remove_all (task); -// ug_slinks_final ((UgSLinks*) task); - ug_array_clear (task); + uget_task_remove_all(task); +// ug_slinks_final((UgSLinks*) task); + ug_array_clear(task); } -int uget_task_add (UgetTask* task, UgetNode* node, const UgetPluginInfo* info) +int uget_task_add(UgetTask* task, UgetNode* node, const UgetPluginInfo* info) { UgetRelation* relation; + int dlul_int_array[2]; + int temp_int_array[2]; union { UgetProgress* progress; UgetCommon* common; } temp; - // UgetRelation: check exist plugin - relation = ug_info_realloc (&node->info, UgetRelationInfo); - if (relation->task.plugin) + // UgetRelation: check exist plug-in + relation = ug_info_realloc(node->info, UgetRelationInfo); + if (relation->task) return FALSE; // UgetProgress: clear progress when it completed - temp.progress = ug_info_get (&node->info, UgetProgressInfo); + temp.progress = ug_info_get(node->info, UgetProgressInfo); if (temp.progress) { // reset progress if it's percent is 100%. if (temp.progress->percent == 100) { @@ -88,73 +95,105 @@ } // UgetCommon: clear retry_count - temp.common = ug_info_get (&node->info, UgetCommonInfo); + temp.common = ug_info_get(node->info, UgetCommonInfo); if (temp.common) temp.common->retry_count = 0; - // UgetRelation - relation->task.plugin = uget_plugin_new (info); - if (uget_plugin_start (relation->task.plugin, node) == FALSE) { - // dispatch error message from plugin - uget_task_dispatch1 (task, node, relation->task.plugin); - // release plugin - uget_plugin_unref (relation->task.plugin); - relation->task.plugin = NULL; + // create plug-in and control it + relation->task = ug_malloc0(sizeof(struct UgetRelationTask)); + relation->task->plugin = uget_plugin_new(info); + uget_plugin_accept(relation->task->plugin, node->info); + if (task->limit.download || task->limit.upload) { + // backup current speed limit + temp_int_array[0] = task->limit.download; + temp_int_array[1] = task->limit.upload; + // set speed limit for existing task + dlul_int_array[0] = task->limit.download / (task->n_links + 1); + dlul_int_array[1] = task->limit.upload / (task->n_links + 1); + uget_task_set_speed(task, + temp_int_array[0] - dlul_int_array[0], + temp_int_array[1] - dlul_int_array[1]); + // set speed limit for new task + uget_plugin_ctrl_speed(relation->task->plugin, dlul_int_array); + // restore current speed limit + task->limit.download = temp_int_array[0]; + task->limit.upload = temp_int_array[1]; + } + if (uget_plugin_start(relation->task->plugin) == FALSE) { + // dispatch error message from plug-in + uget_task_dispatch1(task, node, relation->task->plugin); + // release plug-in + uget_plugin_unref(relation->task->plugin); + // free task runtime data + ug_free(relation->task); + relation->task = NULL; return FALSE; } - relation->task.plugin_name = ug_strdup (info->name); - ug_slinks_add ((UgSLinks*) task, node); + ug_slinks_add((UgSLinks*) task, node); return TRUE; } -int uget_task_remove (UgetTask* task, UgetNode* node) +int uget_task_remove(UgetTask* task, UgetNode* node) { - UgSLink* prev; + UgSLink* prev; UgetRelation* relation; - if (ug_slinks_find ((UgSLinks*) task, node, &prev)) { - ug_slinks_remove ((UgSLinks*) task, node, prev); - node->state &= ~UGET_STATE_ACTIVE; + if (ug_slinks_find((UgSLinks*) task, node, &prev)) { + ug_slinks_remove((UgSLinks*) task, node, prev); // UgetRelation - relation = ug_info_get (&node->info, UgetRelationInfo); + relation = ug_info_get(node->info, UgetRelationInfo); if (relation) { -// uget_plugin_sync (relation->task.plugin, -// uget_event_new_state (node, UGET_STATE_QUEUING)); - uget_plugin_stop (relation->task.plugin); - uget_plugin_unref (relation->task.plugin); - relation->task.plugin = NULL; +// uget_plugin_post(relation->task->plugin, +// uget_event_new_state(node, UGET_GROUP_QUEUING)); + uget_plugin_stop(relation->task->plugin); + uget_plugin_unref(relation->task->plugin); + relation->group &= ~UGET_GROUP_ACTIVE; + // free task runtime data + ug_free(relation->task); + relation->task = NULL; } return TRUE; } return FALSE; } -void uget_task_remove_all (UgetTask* task) +void uget_task_remove_all(UgetTask* task) { while (task->used) - uget_task_remove (task, task->used->data); + uget_task_remove(task, task->used->data); } -static int uget_task_dispatch1 (UgetTask* task, UgetNode* node, UgetPlugin* plugin) +static int uget_task_dispatch1(UgetTask* task, UgetNode* node, UgetPlugin* plugin) { + UgetRelation* relation; UgetEvent* event; UgetEvent* next; int active; union { int count; UgetLog* log; + UgetFiles* files; } temp; - active = uget_plugin_sync (plugin); + active = uget_plugin_sync(plugin, node->info); + // update UgetFiles + temp.files = ug_info_get(node->info, UgetFilesInfo); + if (temp.files) + uget_files_erase_deleted(temp.files); + // plug-in was paused by user (see function uget_app_pause_download) + relation = ug_info_realloc(node->info, UgetRelationInfo); + if (relation->group & UGET_GROUP_PAUSED) + active = FALSE; + // plug-in has stopped if uget_plugin_sync() return FALSE. if (active == FALSE) - node->state &= ~UGET_STATE_ACTIVE; + relation->group &= ~UGET_GROUP_ACTIVE; - event = uget_plugin_pop (plugin); + event = uget_plugin_pop(plugin); for (; event; event = next) { for (temp.count = 0; temp.count < UGET_TASK_N_WATCH; temp.count++) { if (task->watch[temp.count].func) { - task->watch[temp.count].func (task, event, + task->watch[temp.count].func(task, event, node, task->watch[temp.count].data); } } @@ -166,29 +205,41 @@ switch (event->type) { case UGET_EVENT_ERROR: - node->state |= UGET_STATE_ERROR; // don't break here + relation->group |= UGET_GROUP_ERROR; // don't break here case UGET_EVENT_WARNING: case UGET_EVENT_NORMAL: - temp.log = ug_info_realloc (&node->info, UgetLogInfo); - ug_list_prepend (&temp.log->messages, (UgLink*) event); + temp.log = ug_info_realloc(node->info, UgetLogInfo); + ug_list_prepend(&temp.log->messages, (UgLink*) event); break; case UGET_EVENT_START: - node->state |= UGET_STATE_ACTIVE; - uget_event_free (event); + relation->group |= UGET_GROUP_ACTIVE; + uget_event_free(event); break; case UGET_EVENT_STOP: - node->state &= ~UGET_STATE_ACTIVE; - uget_event_free (event); + relation->group &= ~UGET_GROUP_ACTIVE; + uget_event_free(event); active = FALSE; break; -// case UGET_EVENT_INFO: -// case UGET_EVENT_REMOVE: -// case UGET_EVENT_INSERT: + case UGET_EVENT_COMPLETED: + relation->group |= UGET_GROUP_COMPLETED; + uget_event_free(event); + break; + + case UGET_EVENT_UPLOADING: + relation->group |= UGET_GROUP_UPLOADING; + uget_event_free(event); + break; + + case UGET_EVENT_STOP_UPLOADING: + relation->group &= ~UGET_GROUP_UPLOADING; + uget_event_free(event); + break; + default: - uget_event_free (event); + uget_event_free(event); break; } } @@ -196,7 +247,7 @@ return active; } -void uget_task_dispatch (UgetTask* task) +void uget_task_dispatch(UgetTask* task) { UgSLink* link; UgetNode* node; @@ -208,21 +259,21 @@ for (link = task->used; link; link = link->next) { node = link->data; - relation = ug_info_get (&node->info, UgetRelationInfo); - if (uget_task_dispatch1 (task, node, relation->task.plugin) == FALSE) + relation = ug_info_get(node->info, UgetRelationInfo); + if (uget_task_dispatch1(task, node, relation->task->plugin) == FALSE) continue; // speed - progress = ug_info_get (&node->info, UgetProgressInfo); + progress = ug_info_get(node->info, UgetProgressInfo); if (progress) { task->speed.download += progress->download_speed; task->speed.upload += progress->upload_speed; - relation->task.speed[0] = progress->download_speed; - relation->task.speed[1] = progress->upload_speed; + relation->task->speed[0] = progress->download_speed; + relation->task->speed[1] = progress->upload_speed; } } } -void uget_task_add_watch (UgetTask* task, UgetWatchFunc func, void* data) +void uget_task_add_watch(UgetTask* task, UgetWatchFunc func, void* data) { int count; @@ -240,38 +291,38 @@ #define SPEED_MIN 512 -static void uget_task_disable_limit_index (UgetTask* task, int idx); -static void uget_task_adjust_speed_index (UgetTask* task, int idx, int limit_new); +static void uget_task_disable_limit_index(UgetTask* task, int idx); +static void uget_task_adjust_speed_index(UgetTask* task, int idx, int limit_new); -void uget_task_set_speed (UgetTask* task, int dl_speed, int ul_speed) +void uget_task_set_speed(UgetTask* task, int dl_speed, int ul_speed) { // download task->limit.download = dl_speed; if (dl_speed == 0) - uget_task_disable_limit_index (task, 0); + uget_task_disable_limit_index(task, 0); else if (task->n_links > 0) - uget_task_adjust_speed_index (task, 0, dl_speed - task->speed.download); + uget_task_adjust_speed_index(task, 0, dl_speed - task->speed.download); // upload task->limit.upload = ul_speed; if (ul_speed == 0) - uget_task_disable_limit_index (task, 1); + uget_task_disable_limit_index(task, 1); else if (task->n_links > 0) - uget_task_adjust_speed_index (task, 1, ul_speed - task->speed.upload); + uget_task_adjust_speed_index(task, 1, ul_speed - task->speed.upload); } -void uget_task_adjust_speed (UgetTask* task) +void uget_task_adjust_speed(UgetTask* task) { if (task->n_links == 0) return; if (task->limit.download > 0) - uget_task_adjust_speed_index (task, 0, task->limit.download - task->speed.download); + uget_task_adjust_speed_index(task, 0, task->limit.download - task->speed.download); if (task->limit.upload > 0) - uget_task_adjust_speed_index (task, 1, task->limit.upload - task->speed.upload); + uget_task_adjust_speed_index(task, 1, task->limit.upload - task->speed.upload); } -static void uget_task_adjust_speed_index (UgetTask* task, int idx, int remain) +static void uget_task_adjust_speed_index(UgetTask* task, int idx, int remain) { UgSLink* link; UgetNode* node; @@ -283,20 +334,22 @@ // increase speed by priority for (link = task->used; link; link = link->next) { node = (UgetNode*) link->data; - relation = ug_info_get (&node->info, UgetRelationInfo); - relation->task.prev = prev; + relation = ug_info_get(node->info, UgetRelationInfo); + relation->task->prev = prev; prev = relation; - n_piece += relation->task.priority + 1; + n_piece += relation->priority + 1; } remain = remain / n_piece; - for (; relation; relation = relation->task.prev) { - relation->task.limit[idx] = relation->task.speed[idx] + - remain * (relation->task.priority+1); - if (relation->task.limit[idx] < SPEED_MIN) - relation->task.limit[idx] = SPEED_MIN; - uget_plugin_ctrl_speed (relation->task.plugin, - relation->task.limit); + for (; relation; relation = prev) { + relation->task->limit[idx] = relation->task->speed[idx] + + remain * (relation->priority+1); + if (relation->task->limit[idx] < SPEED_MIN) + relation->task->limit[idx] = SPEED_MIN; + uget_plugin_ctrl_speed(relation->task->plugin, + relation->task->limit); + prev = relation->task->prev; + relation->task->prev = NULL; } } else { @@ -304,17 +357,17 @@ remain = remain / task->n_links; for (link = task->used; link; link = link->next) { node = (UgetNode*) link->data; - relation = ug_info_get (&node->info, UgetRelationInfo); - relation->task.limit[idx] = relation->task.speed[idx] + remain; - if (relation->task.limit[idx] < SPEED_MIN) - relation->task.limit[idx] = SPEED_MIN; - uget_plugin_ctrl_speed (relation->task.plugin, - relation->task.limit); + relation = ug_info_get(node->info, UgetRelationInfo); + relation->task->limit[idx] = relation->task->speed[idx] + remain; + if (relation->task->limit[idx] < SPEED_MIN) + relation->task->limit[idx] = SPEED_MIN; + uget_plugin_ctrl_speed(relation->task->plugin, + relation->task->limit); } } } -static void uget_task_disable_limit_index (UgetTask* task, int idx) +static void uget_task_disable_limit_index(UgetTask* task, int idx) { UgSLink* link; UgetNode* node; @@ -322,9 +375,9 @@ for (link = task->used; link; link = link->next) { node = (UgetNode*) link->data; - relation = ug_info_get (&node->info, UgetRelationInfo); - relation->task.limit[idx] = 0; - uget_plugin_ctrl_speed (relation->task.plugin, - relation->task.limit); + relation = ug_info_get(node->info, UgetRelationInfo); + relation->task->limit[idx] = 0; + uget_plugin_ctrl_speed(relation->task->plugin, + relation->task->limit); } } diff -Nru uget-2.0.2/uget/UgetTask.h uget-2.2.2/uget/UgetTask.h --- uget-2.0.2/uget/UgetTask.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uget/UgetTask.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -51,40 +51,49 @@ extern "C" { #endif +/* UgetTask - match/manage UgetNode and UgetPlugin + - adjust/limit speed + */ + typedef struct UgetTask UgetTask; typedef int (*UgetWatchFunc) (void* instance, UgetEvent* msg, UgetNode* node, void* data); // ---------------------------------------------------------------------------- -// UgetTask : match UgetNode and UgetPlugin +// UgetTask functions -void uget_task_init (UgetTask* task); -void uget_task_final (UgetTask* task); +void uget_task_init(UgetTask* task); +void uget_task_final(UgetTask* task); -int uget_task_add (UgetTask* task, UgetNode* node, const UgetPluginInfo* pinfo); -int uget_task_remove (UgetTask* task, UgetNode* node); -void uget_task_remove_all (UgetTask* task); -void uget_task_dispatch (UgetTask* task); -void uget_task_add_watch (UgetTask* task, UgetWatchFunc func, void* data); +int uget_task_add(UgetTask* task, UgetNode* node, const UgetPluginInfo* pinfo); +int uget_task_remove(UgetTask* task, UgetNode* node); +void uget_task_remove_all(UgetTask* task); +void uget_task_dispatch(UgetTask* task); +void uget_task_add_watch(UgetTask* task, UgetWatchFunc func, void* data); -void uget_task_set_speed (UgetTask* task, int dl_speed, int ul_speed); -void uget_task_adjust_speed (UgetTask* task); +void uget_task_set_speed(UgetTask* task, int dl_speed, int ul_speed); +void uget_task_adjust_speed(UgetTask* task); #ifdef __cplusplus } #endif +// ---------------------------------------------------------------------------- +// UgetTask structure + struct UgetTask { UG_SLINKS_MEMBERS; -// UgSLink* at; -// int length; -// int allocated; -// int element_size; -// int n_links; -// UgSLink* used; -// UgSLink* freed; +/* // ------ UgSLinks members ------ + UgSLink* at; + int length; + int allocated; + int element_size; + int n_links; + UgSLink* used; + UgSLink* freed; + */ struct { UgetWatchFunc func; @@ -92,28 +101,31 @@ } watch[UGET_TASK_N_WATCH]; struct { - int upload; - int download; + int upload; + int download; } speed, limit; #ifdef __cplusplus // C++11 standard-layout - inline void init (void) - { uget_task_init ((UgetTask*) this); } - inline void final (void) - { uget_task_final ((UgetTask*) this); } - - inline int add (UgetNode* node, UgetPluginInfo* info) - { return uget_task_add ((UgetTask*) this, node, info); } - inline void remove (UgetNode* node) - { uget_task_remove ((UgetTask*) this, node); } - inline void dispatch (void) - { uget_task_dispatch ((UgetTask*) this); } - + inline void init(void) + { uget_task_init((UgetTask*) this); } + inline void final(void) + { uget_task_final((UgetTask*) this); } + + inline int add(UgetNode* node, UgetPluginInfo* info) + { return uget_task_add((UgetTask*) this, node, info); } + inline void remove(UgetNode* node) + { uget_task_remove((UgetTask*) this, node); } + inline void dispatch(void) + { uget_task_dispatch((UgetTask*) this); } + + inline void setSpeed(int dl_speed, int ul_speed) + { uget_task_set_speed(this, dl_speed, ul_speed); } + inline void adjustSpeed(void) + { uget_task_adjust_speed(this); } #endif // __cplusplus }; - // ---------------------------------------------------------------------------- // C++11 standard-layout diff -Nru uget-2.0.2/uget-gtk.desktop uget-2.2.2/uget-gtk.desktop --- uget-2.0.2/uget-gtk.desktop 2014-04-04 01:47:57.000000000 +0000 +++ uget-2.2.2/uget-gtk.desktop 2019-05-19 16:49:06.000000000 +0000 @@ -1,9 +1,10 @@ [Desktop Entry] Name=uGet +GenericName=Download Manager Comment=Download multiple URLs and apply it to one of setting/queue. -Exec=uget-gtk %u +Exec=env GDK_BACKEND=x11 uget-gtk %u Icon=uget-icon Terminal=false Type=Application Categories=Network;FileTransfer; - +Keywords=filetransfer;download files;download manager; diff -Nru uget-2.0.2/uglib/Android.mk uget-2.2.2/uglib/Android.mk --- uget-2.0.2/uglib/Android.mk 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/Android.mk 2019-05-19 16:49:07.000000000 +0000 @@ -3,6 +3,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := libuglib +LOCAL_CPPFLAGS := -DNDEBUG LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/../curl/include LOCAL_SRC_FILES := \ UgStdio.c \ diff -Nru uget-2.0.2/uglib/CMakeLists.txt uget-2.2.2/uglib/CMakeLists.txt --- uget-2.0.2/uglib/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/uglib/CMakeLists.txt 2019-05-19 16:49:07.000000000 +0000 @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 3.4.1) + +project(uglib) + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNDEBUG") + +include_directories( ${CURL_INCLUDE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ) + +add_library( uglib + STATIC + + UgStdio.c + UgString.c + UgThread.c + UgSocket.c + UgUtil.c + UgFileUtil.c + UgArray.c + UgList.c + UgSLink.c + UgOption.c + UgUri.c + UgNode.c + UgData.c + UgInfo.c + UgRegistry.c + UgValue.c + UgEntry.c + UgBuffer.c + UgJson.c + UgJson-custom.c + UgJsonFile.c + UgJsonrpc.c + UgJsonrpcSocket.c + UgJsonrpcCurl.c + UgHtml.c + UgHtmlEntry.c + UgHtmlFilter.c + ) + diff -Nru uget-2.0.2/uglib/Makefile.am uget-2.2.2/uglib/Makefile.am --- uget-2.0.2/uglib/Makefile.am 2015-03-10 01:26:25.000000000 +0000 +++ uget-2.2.2/uglib/Makefile.am 2019-05-19 16:49:07.000000000 +0000 @@ -2,6 +2,8 @@ ## add `getconf LFS_CFLAGS` to CFLAGS ## add `getconf LFS_LDFLAGS` to LDFLAGS +AUTOMAKE_OPTIONS = no-dependencies + ## static library --- # lib_LIBRARIES = libuglib.a @@ -69,4 +71,6 @@ UgHtmlEntry.h \ UgHtmlFilter.h -EXTRA_DIST = Android.mk +EXTRA_DIST = \ + Android.mk \ + CMakeLists.txt diff -Nru uget-2.0.2/uglib/Makefile.in uget-2.2.2/uglib/Makefile.in --- uget-2.0.2/uglib/Makefile.in 2015-09-11 12:13:21.000000000 +0000 +++ uget-2.2.2/uglib/Makefile.in 2019-05-19 16:51:34.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,6 +16,61 @@ VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -34,18 +88,22 @@ PRE_UNINSTALL = : POST_UNINSTALL = : subdir = uglib -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ + $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = libuglib_a_AR = $(AR) $(ARFLAGS) libuglib_a_LIBADD = am_libuglib_a_OBJECTS = libuglib_a-UgStdio.$(OBJEXT) \ @@ -65,19 +123,65 @@ libuglib_a-UgHtmlEntry.$(OBJEXT) \ libuglib_a-UgHtmlFilter.$(OBJEXT) libuglib_a_OBJECTS = $(am_libuglib_a_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f +depcomp = +am__maybe_remake_depfiles = +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libuglib_a_SOURCES) DIST_SOURCES = $(libuglib_a_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -135,6 +239,7 @@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LFS_CFLAGS = @LFS_CFLAGS@ LFS_LDFLAGS = @LFS_LDFLAGS@ @@ -226,6 +331,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = no-dependencies # lib_LIBRARIES = libuglib.a noinst_LIBRARIES = libuglib.a @@ -290,7 +396,10 @@ UgHtmlEntry.h \ UgHtmlFilter.h -EXTRA_DIST = Android.mk +EXTRA_DIST = \ + Android.mk \ + CMakeLists.txt + all: all-am .SUFFIXES: @@ -307,14 +416,13 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu uglib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu uglib/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -328,10 +436,11 @@ clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + libuglib.a: $(libuglib_a_OBJECTS) $(libuglib_a_DEPENDENCIES) $(EXTRA_libuglib_a_DEPENDENCIES) - -rm -f libuglib.a - $(libuglib_a_AR) libuglib.a $(libuglib_a_OBJECTS) $(libuglib_a_LIBADD) - $(RANLIB) libuglib.a + $(AM_V_at)-rm -f libuglib.a + $(AM_V_AR)$(libuglib_a_AR) libuglib.a $(libuglib_a_OBJECTS) $(libuglib_a_LIBADD) + $(AM_V_at)$(RANLIB) libuglib.a mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -339,446 +448,183 @@ distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgArray.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgBuffer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgData.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgEntry.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgFileUtil.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgHtml.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgHtmlEntry.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgHtmlFilter.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgInfo.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgJson-custom.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgJson.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgJsonFile.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgJsonrpc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgJsonrpcCurl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgJsonrpcSocket.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgList.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgNode.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgOption.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgRegistry.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgSLink.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgSocket.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgStdio.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgString.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgThread.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgUri.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgUtil.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libuglib_a-UgValue.Po@am__quote@ - .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< + $(AM_V_CC)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + $(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` libuglib_a-UgStdio.o: UgStdio.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgStdio.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgStdio.Tpo -c -o libuglib_a-UgStdio.o `test -f 'UgStdio.c' || echo '$(srcdir)/'`UgStdio.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgStdio.Tpo $(DEPDIR)/libuglib_a-UgStdio.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgStdio.c' object='libuglib_a-UgStdio.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgStdio.o `test -f 'UgStdio.c' || echo '$(srcdir)/'`UgStdio.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgStdio.o `test -f 'UgStdio.c' || echo '$(srcdir)/'`UgStdio.c libuglib_a-UgStdio.obj: UgStdio.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgStdio.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgStdio.Tpo -c -o libuglib_a-UgStdio.obj `if test -f 'UgStdio.c'; then $(CYGPATH_W) 'UgStdio.c'; else $(CYGPATH_W) '$(srcdir)/UgStdio.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgStdio.Tpo $(DEPDIR)/libuglib_a-UgStdio.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgStdio.c' object='libuglib_a-UgStdio.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgStdio.obj `if test -f 'UgStdio.c'; then $(CYGPATH_W) 'UgStdio.c'; else $(CYGPATH_W) '$(srcdir)/UgStdio.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgStdio.obj `if test -f 'UgStdio.c'; then $(CYGPATH_W) 'UgStdio.c'; else $(CYGPATH_W) '$(srcdir)/UgStdio.c'; fi` libuglib_a-UgString.o: UgString.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgString.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgString.Tpo -c -o libuglib_a-UgString.o `test -f 'UgString.c' || echo '$(srcdir)/'`UgString.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgString.Tpo $(DEPDIR)/libuglib_a-UgString.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgString.c' object='libuglib_a-UgString.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgString.o `test -f 'UgString.c' || echo '$(srcdir)/'`UgString.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgString.o `test -f 'UgString.c' || echo '$(srcdir)/'`UgString.c libuglib_a-UgString.obj: UgString.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgString.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgString.Tpo -c -o libuglib_a-UgString.obj `if test -f 'UgString.c'; then $(CYGPATH_W) 'UgString.c'; else $(CYGPATH_W) '$(srcdir)/UgString.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgString.Tpo $(DEPDIR)/libuglib_a-UgString.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgString.c' object='libuglib_a-UgString.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgString.obj `if test -f 'UgString.c'; then $(CYGPATH_W) 'UgString.c'; else $(CYGPATH_W) '$(srcdir)/UgString.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgString.obj `if test -f 'UgString.c'; then $(CYGPATH_W) 'UgString.c'; else $(CYGPATH_W) '$(srcdir)/UgString.c'; fi` libuglib_a-UgThread.o: UgThread.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgThread.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgThread.Tpo -c -o libuglib_a-UgThread.o `test -f 'UgThread.c' || echo '$(srcdir)/'`UgThread.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgThread.Tpo $(DEPDIR)/libuglib_a-UgThread.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgThread.c' object='libuglib_a-UgThread.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgThread.o `test -f 'UgThread.c' || echo '$(srcdir)/'`UgThread.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgThread.o `test -f 'UgThread.c' || echo '$(srcdir)/'`UgThread.c libuglib_a-UgThread.obj: UgThread.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgThread.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgThread.Tpo -c -o libuglib_a-UgThread.obj `if test -f 'UgThread.c'; then $(CYGPATH_W) 'UgThread.c'; else $(CYGPATH_W) '$(srcdir)/UgThread.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgThread.Tpo $(DEPDIR)/libuglib_a-UgThread.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgThread.c' object='libuglib_a-UgThread.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgThread.obj `if test -f 'UgThread.c'; then $(CYGPATH_W) 'UgThread.c'; else $(CYGPATH_W) '$(srcdir)/UgThread.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgThread.obj `if test -f 'UgThread.c'; then $(CYGPATH_W) 'UgThread.c'; else $(CYGPATH_W) '$(srcdir)/UgThread.c'; fi` libuglib_a-UgSocket.o: UgSocket.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgSocket.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgSocket.Tpo -c -o libuglib_a-UgSocket.o `test -f 'UgSocket.c' || echo '$(srcdir)/'`UgSocket.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgSocket.Tpo $(DEPDIR)/libuglib_a-UgSocket.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgSocket.c' object='libuglib_a-UgSocket.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgSocket.o `test -f 'UgSocket.c' || echo '$(srcdir)/'`UgSocket.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgSocket.o `test -f 'UgSocket.c' || echo '$(srcdir)/'`UgSocket.c libuglib_a-UgSocket.obj: UgSocket.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgSocket.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgSocket.Tpo -c -o libuglib_a-UgSocket.obj `if test -f 'UgSocket.c'; then $(CYGPATH_W) 'UgSocket.c'; else $(CYGPATH_W) '$(srcdir)/UgSocket.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgSocket.Tpo $(DEPDIR)/libuglib_a-UgSocket.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgSocket.c' object='libuglib_a-UgSocket.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgSocket.obj `if test -f 'UgSocket.c'; then $(CYGPATH_W) 'UgSocket.c'; else $(CYGPATH_W) '$(srcdir)/UgSocket.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgSocket.obj `if test -f 'UgSocket.c'; then $(CYGPATH_W) 'UgSocket.c'; else $(CYGPATH_W) '$(srcdir)/UgSocket.c'; fi` libuglib_a-UgUtil.o: UgUtil.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgUtil.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgUtil.Tpo -c -o libuglib_a-UgUtil.o `test -f 'UgUtil.c' || echo '$(srcdir)/'`UgUtil.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgUtil.Tpo $(DEPDIR)/libuglib_a-UgUtil.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgUtil.c' object='libuglib_a-UgUtil.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgUtil.o `test -f 'UgUtil.c' || echo '$(srcdir)/'`UgUtil.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgUtil.o `test -f 'UgUtil.c' || echo '$(srcdir)/'`UgUtil.c libuglib_a-UgUtil.obj: UgUtil.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgUtil.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgUtil.Tpo -c -o libuglib_a-UgUtil.obj `if test -f 'UgUtil.c'; then $(CYGPATH_W) 'UgUtil.c'; else $(CYGPATH_W) '$(srcdir)/UgUtil.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgUtil.Tpo $(DEPDIR)/libuglib_a-UgUtil.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgUtil.c' object='libuglib_a-UgUtil.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgUtil.obj `if test -f 'UgUtil.c'; then $(CYGPATH_W) 'UgUtil.c'; else $(CYGPATH_W) '$(srcdir)/UgUtil.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgUtil.obj `if test -f 'UgUtil.c'; then $(CYGPATH_W) 'UgUtil.c'; else $(CYGPATH_W) '$(srcdir)/UgUtil.c'; fi` libuglib_a-UgFileUtil.o: UgFileUtil.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgFileUtil.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgFileUtil.Tpo -c -o libuglib_a-UgFileUtil.o `test -f 'UgFileUtil.c' || echo '$(srcdir)/'`UgFileUtil.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgFileUtil.Tpo $(DEPDIR)/libuglib_a-UgFileUtil.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgFileUtil.c' object='libuglib_a-UgFileUtil.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgFileUtil.o `test -f 'UgFileUtil.c' || echo '$(srcdir)/'`UgFileUtil.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgFileUtil.o `test -f 'UgFileUtil.c' || echo '$(srcdir)/'`UgFileUtil.c libuglib_a-UgFileUtil.obj: UgFileUtil.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgFileUtil.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgFileUtil.Tpo -c -o libuglib_a-UgFileUtil.obj `if test -f 'UgFileUtil.c'; then $(CYGPATH_W) 'UgFileUtil.c'; else $(CYGPATH_W) '$(srcdir)/UgFileUtil.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgFileUtil.Tpo $(DEPDIR)/libuglib_a-UgFileUtil.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgFileUtil.c' object='libuglib_a-UgFileUtil.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgFileUtil.obj `if test -f 'UgFileUtil.c'; then $(CYGPATH_W) 'UgFileUtil.c'; else $(CYGPATH_W) '$(srcdir)/UgFileUtil.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgFileUtil.obj `if test -f 'UgFileUtil.c'; then $(CYGPATH_W) 'UgFileUtil.c'; else $(CYGPATH_W) '$(srcdir)/UgFileUtil.c'; fi` libuglib_a-UgArray.o: UgArray.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgArray.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgArray.Tpo -c -o libuglib_a-UgArray.o `test -f 'UgArray.c' || echo '$(srcdir)/'`UgArray.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgArray.Tpo $(DEPDIR)/libuglib_a-UgArray.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgArray.c' object='libuglib_a-UgArray.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgArray.o `test -f 'UgArray.c' || echo '$(srcdir)/'`UgArray.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgArray.o `test -f 'UgArray.c' || echo '$(srcdir)/'`UgArray.c libuglib_a-UgArray.obj: UgArray.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgArray.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgArray.Tpo -c -o libuglib_a-UgArray.obj `if test -f 'UgArray.c'; then $(CYGPATH_W) 'UgArray.c'; else $(CYGPATH_W) '$(srcdir)/UgArray.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgArray.Tpo $(DEPDIR)/libuglib_a-UgArray.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgArray.c' object='libuglib_a-UgArray.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgArray.obj `if test -f 'UgArray.c'; then $(CYGPATH_W) 'UgArray.c'; else $(CYGPATH_W) '$(srcdir)/UgArray.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgArray.obj `if test -f 'UgArray.c'; then $(CYGPATH_W) 'UgArray.c'; else $(CYGPATH_W) '$(srcdir)/UgArray.c'; fi` libuglib_a-UgList.o: UgList.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgList.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgList.Tpo -c -o libuglib_a-UgList.o `test -f 'UgList.c' || echo '$(srcdir)/'`UgList.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgList.Tpo $(DEPDIR)/libuglib_a-UgList.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgList.c' object='libuglib_a-UgList.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgList.o `test -f 'UgList.c' || echo '$(srcdir)/'`UgList.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgList.o `test -f 'UgList.c' || echo '$(srcdir)/'`UgList.c libuglib_a-UgList.obj: UgList.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgList.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgList.Tpo -c -o libuglib_a-UgList.obj `if test -f 'UgList.c'; then $(CYGPATH_W) 'UgList.c'; else $(CYGPATH_W) '$(srcdir)/UgList.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgList.Tpo $(DEPDIR)/libuglib_a-UgList.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgList.c' object='libuglib_a-UgList.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgList.obj `if test -f 'UgList.c'; then $(CYGPATH_W) 'UgList.c'; else $(CYGPATH_W) '$(srcdir)/UgList.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgList.obj `if test -f 'UgList.c'; then $(CYGPATH_W) 'UgList.c'; else $(CYGPATH_W) '$(srcdir)/UgList.c'; fi` libuglib_a-UgSLink.o: UgSLink.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgSLink.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgSLink.Tpo -c -o libuglib_a-UgSLink.o `test -f 'UgSLink.c' || echo '$(srcdir)/'`UgSLink.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgSLink.Tpo $(DEPDIR)/libuglib_a-UgSLink.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgSLink.c' object='libuglib_a-UgSLink.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgSLink.o `test -f 'UgSLink.c' || echo '$(srcdir)/'`UgSLink.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgSLink.o `test -f 'UgSLink.c' || echo '$(srcdir)/'`UgSLink.c libuglib_a-UgSLink.obj: UgSLink.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgSLink.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgSLink.Tpo -c -o libuglib_a-UgSLink.obj `if test -f 'UgSLink.c'; then $(CYGPATH_W) 'UgSLink.c'; else $(CYGPATH_W) '$(srcdir)/UgSLink.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgSLink.Tpo $(DEPDIR)/libuglib_a-UgSLink.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgSLink.c' object='libuglib_a-UgSLink.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgSLink.obj `if test -f 'UgSLink.c'; then $(CYGPATH_W) 'UgSLink.c'; else $(CYGPATH_W) '$(srcdir)/UgSLink.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgSLink.obj `if test -f 'UgSLink.c'; then $(CYGPATH_W) 'UgSLink.c'; else $(CYGPATH_W) '$(srcdir)/UgSLink.c'; fi` libuglib_a-UgOption.o: UgOption.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgOption.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgOption.Tpo -c -o libuglib_a-UgOption.o `test -f 'UgOption.c' || echo '$(srcdir)/'`UgOption.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgOption.Tpo $(DEPDIR)/libuglib_a-UgOption.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgOption.c' object='libuglib_a-UgOption.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgOption.o `test -f 'UgOption.c' || echo '$(srcdir)/'`UgOption.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgOption.o `test -f 'UgOption.c' || echo '$(srcdir)/'`UgOption.c libuglib_a-UgOption.obj: UgOption.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgOption.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgOption.Tpo -c -o libuglib_a-UgOption.obj `if test -f 'UgOption.c'; then $(CYGPATH_W) 'UgOption.c'; else $(CYGPATH_W) '$(srcdir)/UgOption.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgOption.Tpo $(DEPDIR)/libuglib_a-UgOption.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgOption.c' object='libuglib_a-UgOption.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgOption.obj `if test -f 'UgOption.c'; then $(CYGPATH_W) 'UgOption.c'; else $(CYGPATH_W) '$(srcdir)/UgOption.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgOption.obj `if test -f 'UgOption.c'; then $(CYGPATH_W) 'UgOption.c'; else $(CYGPATH_W) '$(srcdir)/UgOption.c'; fi` libuglib_a-UgUri.o: UgUri.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgUri.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgUri.Tpo -c -o libuglib_a-UgUri.o `test -f 'UgUri.c' || echo '$(srcdir)/'`UgUri.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgUri.Tpo $(DEPDIR)/libuglib_a-UgUri.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgUri.c' object='libuglib_a-UgUri.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgUri.o `test -f 'UgUri.c' || echo '$(srcdir)/'`UgUri.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgUri.o `test -f 'UgUri.c' || echo '$(srcdir)/'`UgUri.c libuglib_a-UgUri.obj: UgUri.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgUri.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgUri.Tpo -c -o libuglib_a-UgUri.obj `if test -f 'UgUri.c'; then $(CYGPATH_W) 'UgUri.c'; else $(CYGPATH_W) '$(srcdir)/UgUri.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgUri.Tpo $(DEPDIR)/libuglib_a-UgUri.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgUri.c' object='libuglib_a-UgUri.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgUri.obj `if test -f 'UgUri.c'; then $(CYGPATH_W) 'UgUri.c'; else $(CYGPATH_W) '$(srcdir)/UgUri.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgUri.obj `if test -f 'UgUri.c'; then $(CYGPATH_W) 'UgUri.c'; else $(CYGPATH_W) '$(srcdir)/UgUri.c'; fi` libuglib_a-UgNode.o: UgNode.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgNode.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgNode.Tpo -c -o libuglib_a-UgNode.o `test -f 'UgNode.c' || echo '$(srcdir)/'`UgNode.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgNode.Tpo $(DEPDIR)/libuglib_a-UgNode.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgNode.c' object='libuglib_a-UgNode.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgNode.o `test -f 'UgNode.c' || echo '$(srcdir)/'`UgNode.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgNode.o `test -f 'UgNode.c' || echo '$(srcdir)/'`UgNode.c libuglib_a-UgNode.obj: UgNode.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgNode.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgNode.Tpo -c -o libuglib_a-UgNode.obj `if test -f 'UgNode.c'; then $(CYGPATH_W) 'UgNode.c'; else $(CYGPATH_W) '$(srcdir)/UgNode.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgNode.Tpo $(DEPDIR)/libuglib_a-UgNode.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgNode.c' object='libuglib_a-UgNode.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgNode.obj `if test -f 'UgNode.c'; then $(CYGPATH_W) 'UgNode.c'; else $(CYGPATH_W) '$(srcdir)/UgNode.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgNode.obj `if test -f 'UgNode.c'; then $(CYGPATH_W) 'UgNode.c'; else $(CYGPATH_W) '$(srcdir)/UgNode.c'; fi` libuglib_a-UgData.o: UgData.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgData.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgData.Tpo -c -o libuglib_a-UgData.o `test -f 'UgData.c' || echo '$(srcdir)/'`UgData.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgData.Tpo $(DEPDIR)/libuglib_a-UgData.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgData.c' object='libuglib_a-UgData.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgData.o `test -f 'UgData.c' || echo '$(srcdir)/'`UgData.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgData.o `test -f 'UgData.c' || echo '$(srcdir)/'`UgData.c libuglib_a-UgData.obj: UgData.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgData.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgData.Tpo -c -o libuglib_a-UgData.obj `if test -f 'UgData.c'; then $(CYGPATH_W) 'UgData.c'; else $(CYGPATH_W) '$(srcdir)/UgData.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgData.Tpo $(DEPDIR)/libuglib_a-UgData.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgData.c' object='libuglib_a-UgData.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgData.obj `if test -f 'UgData.c'; then $(CYGPATH_W) 'UgData.c'; else $(CYGPATH_W) '$(srcdir)/UgData.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgData.obj `if test -f 'UgData.c'; then $(CYGPATH_W) 'UgData.c'; else $(CYGPATH_W) '$(srcdir)/UgData.c'; fi` libuglib_a-UgInfo.o: UgInfo.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgInfo.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgInfo.Tpo -c -o libuglib_a-UgInfo.o `test -f 'UgInfo.c' || echo '$(srcdir)/'`UgInfo.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgInfo.Tpo $(DEPDIR)/libuglib_a-UgInfo.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgInfo.c' object='libuglib_a-UgInfo.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgInfo.o `test -f 'UgInfo.c' || echo '$(srcdir)/'`UgInfo.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgInfo.o `test -f 'UgInfo.c' || echo '$(srcdir)/'`UgInfo.c libuglib_a-UgInfo.obj: UgInfo.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgInfo.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgInfo.Tpo -c -o libuglib_a-UgInfo.obj `if test -f 'UgInfo.c'; then $(CYGPATH_W) 'UgInfo.c'; else $(CYGPATH_W) '$(srcdir)/UgInfo.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgInfo.Tpo $(DEPDIR)/libuglib_a-UgInfo.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgInfo.c' object='libuglib_a-UgInfo.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgInfo.obj `if test -f 'UgInfo.c'; then $(CYGPATH_W) 'UgInfo.c'; else $(CYGPATH_W) '$(srcdir)/UgInfo.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgInfo.obj `if test -f 'UgInfo.c'; then $(CYGPATH_W) 'UgInfo.c'; else $(CYGPATH_W) '$(srcdir)/UgInfo.c'; fi` libuglib_a-UgRegistry.o: UgRegistry.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgRegistry.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgRegistry.Tpo -c -o libuglib_a-UgRegistry.o `test -f 'UgRegistry.c' || echo '$(srcdir)/'`UgRegistry.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgRegistry.Tpo $(DEPDIR)/libuglib_a-UgRegistry.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgRegistry.c' object='libuglib_a-UgRegistry.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgRegistry.o `test -f 'UgRegistry.c' || echo '$(srcdir)/'`UgRegistry.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgRegistry.o `test -f 'UgRegistry.c' || echo '$(srcdir)/'`UgRegistry.c libuglib_a-UgRegistry.obj: UgRegistry.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgRegistry.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgRegistry.Tpo -c -o libuglib_a-UgRegistry.obj `if test -f 'UgRegistry.c'; then $(CYGPATH_W) 'UgRegistry.c'; else $(CYGPATH_W) '$(srcdir)/UgRegistry.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgRegistry.Tpo $(DEPDIR)/libuglib_a-UgRegistry.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgRegistry.c' object='libuglib_a-UgRegistry.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgRegistry.obj `if test -f 'UgRegistry.c'; then $(CYGPATH_W) 'UgRegistry.c'; else $(CYGPATH_W) '$(srcdir)/UgRegistry.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgRegistry.obj `if test -f 'UgRegistry.c'; then $(CYGPATH_W) 'UgRegistry.c'; else $(CYGPATH_W) '$(srcdir)/UgRegistry.c'; fi` libuglib_a-UgValue.o: UgValue.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgValue.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgValue.Tpo -c -o libuglib_a-UgValue.o `test -f 'UgValue.c' || echo '$(srcdir)/'`UgValue.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgValue.Tpo $(DEPDIR)/libuglib_a-UgValue.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgValue.c' object='libuglib_a-UgValue.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgValue.o `test -f 'UgValue.c' || echo '$(srcdir)/'`UgValue.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgValue.o `test -f 'UgValue.c' || echo '$(srcdir)/'`UgValue.c libuglib_a-UgValue.obj: UgValue.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgValue.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgValue.Tpo -c -o libuglib_a-UgValue.obj `if test -f 'UgValue.c'; then $(CYGPATH_W) 'UgValue.c'; else $(CYGPATH_W) '$(srcdir)/UgValue.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgValue.Tpo $(DEPDIR)/libuglib_a-UgValue.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgValue.c' object='libuglib_a-UgValue.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgValue.obj `if test -f 'UgValue.c'; then $(CYGPATH_W) 'UgValue.c'; else $(CYGPATH_W) '$(srcdir)/UgValue.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgValue.obj `if test -f 'UgValue.c'; then $(CYGPATH_W) 'UgValue.c'; else $(CYGPATH_W) '$(srcdir)/UgValue.c'; fi` libuglib_a-UgEntry.o: UgEntry.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgEntry.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgEntry.Tpo -c -o libuglib_a-UgEntry.o `test -f 'UgEntry.c' || echo '$(srcdir)/'`UgEntry.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgEntry.Tpo $(DEPDIR)/libuglib_a-UgEntry.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgEntry.c' object='libuglib_a-UgEntry.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgEntry.o `test -f 'UgEntry.c' || echo '$(srcdir)/'`UgEntry.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgEntry.o `test -f 'UgEntry.c' || echo '$(srcdir)/'`UgEntry.c libuglib_a-UgEntry.obj: UgEntry.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgEntry.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgEntry.Tpo -c -o libuglib_a-UgEntry.obj `if test -f 'UgEntry.c'; then $(CYGPATH_W) 'UgEntry.c'; else $(CYGPATH_W) '$(srcdir)/UgEntry.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgEntry.Tpo $(DEPDIR)/libuglib_a-UgEntry.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgEntry.c' object='libuglib_a-UgEntry.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgEntry.obj `if test -f 'UgEntry.c'; then $(CYGPATH_W) 'UgEntry.c'; else $(CYGPATH_W) '$(srcdir)/UgEntry.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgEntry.obj `if test -f 'UgEntry.c'; then $(CYGPATH_W) 'UgEntry.c'; else $(CYGPATH_W) '$(srcdir)/UgEntry.c'; fi` libuglib_a-UgBuffer.o: UgBuffer.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgBuffer.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgBuffer.Tpo -c -o libuglib_a-UgBuffer.o `test -f 'UgBuffer.c' || echo '$(srcdir)/'`UgBuffer.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgBuffer.Tpo $(DEPDIR)/libuglib_a-UgBuffer.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgBuffer.c' object='libuglib_a-UgBuffer.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgBuffer.o `test -f 'UgBuffer.c' || echo '$(srcdir)/'`UgBuffer.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgBuffer.o `test -f 'UgBuffer.c' || echo '$(srcdir)/'`UgBuffer.c libuglib_a-UgBuffer.obj: UgBuffer.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgBuffer.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgBuffer.Tpo -c -o libuglib_a-UgBuffer.obj `if test -f 'UgBuffer.c'; then $(CYGPATH_W) 'UgBuffer.c'; else $(CYGPATH_W) '$(srcdir)/UgBuffer.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgBuffer.Tpo $(DEPDIR)/libuglib_a-UgBuffer.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgBuffer.c' object='libuglib_a-UgBuffer.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgBuffer.obj `if test -f 'UgBuffer.c'; then $(CYGPATH_W) 'UgBuffer.c'; else $(CYGPATH_W) '$(srcdir)/UgBuffer.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgBuffer.obj `if test -f 'UgBuffer.c'; then $(CYGPATH_W) 'UgBuffer.c'; else $(CYGPATH_W) '$(srcdir)/UgBuffer.c'; fi` libuglib_a-UgJson.o: UgJson.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgJson.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgJson.Tpo -c -o libuglib_a-UgJson.o `test -f 'UgJson.c' || echo '$(srcdir)/'`UgJson.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgJson.Tpo $(DEPDIR)/libuglib_a-UgJson.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgJson.c' object='libuglib_a-UgJson.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJson.o `test -f 'UgJson.c' || echo '$(srcdir)/'`UgJson.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJson.o `test -f 'UgJson.c' || echo '$(srcdir)/'`UgJson.c libuglib_a-UgJson.obj: UgJson.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgJson.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgJson.Tpo -c -o libuglib_a-UgJson.obj `if test -f 'UgJson.c'; then $(CYGPATH_W) 'UgJson.c'; else $(CYGPATH_W) '$(srcdir)/UgJson.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgJson.Tpo $(DEPDIR)/libuglib_a-UgJson.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgJson.c' object='libuglib_a-UgJson.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJson.obj `if test -f 'UgJson.c'; then $(CYGPATH_W) 'UgJson.c'; else $(CYGPATH_W) '$(srcdir)/UgJson.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJson.obj `if test -f 'UgJson.c'; then $(CYGPATH_W) 'UgJson.c'; else $(CYGPATH_W) '$(srcdir)/UgJson.c'; fi` libuglib_a-UgJson-custom.o: UgJson-custom.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgJson-custom.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgJson-custom.Tpo -c -o libuglib_a-UgJson-custom.o `test -f 'UgJson-custom.c' || echo '$(srcdir)/'`UgJson-custom.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgJson-custom.Tpo $(DEPDIR)/libuglib_a-UgJson-custom.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgJson-custom.c' object='libuglib_a-UgJson-custom.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJson-custom.o `test -f 'UgJson-custom.c' || echo '$(srcdir)/'`UgJson-custom.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJson-custom.o `test -f 'UgJson-custom.c' || echo '$(srcdir)/'`UgJson-custom.c libuglib_a-UgJson-custom.obj: UgJson-custom.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgJson-custom.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgJson-custom.Tpo -c -o libuglib_a-UgJson-custom.obj `if test -f 'UgJson-custom.c'; then $(CYGPATH_W) 'UgJson-custom.c'; else $(CYGPATH_W) '$(srcdir)/UgJson-custom.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgJson-custom.Tpo $(DEPDIR)/libuglib_a-UgJson-custom.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgJson-custom.c' object='libuglib_a-UgJson-custom.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJson-custom.obj `if test -f 'UgJson-custom.c'; then $(CYGPATH_W) 'UgJson-custom.c'; else $(CYGPATH_W) '$(srcdir)/UgJson-custom.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJson-custom.obj `if test -f 'UgJson-custom.c'; then $(CYGPATH_W) 'UgJson-custom.c'; else $(CYGPATH_W) '$(srcdir)/UgJson-custom.c'; fi` libuglib_a-UgJsonFile.o: UgJsonFile.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgJsonFile.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgJsonFile.Tpo -c -o libuglib_a-UgJsonFile.o `test -f 'UgJsonFile.c' || echo '$(srcdir)/'`UgJsonFile.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgJsonFile.Tpo $(DEPDIR)/libuglib_a-UgJsonFile.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgJsonFile.c' object='libuglib_a-UgJsonFile.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonFile.o `test -f 'UgJsonFile.c' || echo '$(srcdir)/'`UgJsonFile.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonFile.o `test -f 'UgJsonFile.c' || echo '$(srcdir)/'`UgJsonFile.c libuglib_a-UgJsonFile.obj: UgJsonFile.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgJsonFile.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgJsonFile.Tpo -c -o libuglib_a-UgJsonFile.obj `if test -f 'UgJsonFile.c'; then $(CYGPATH_W) 'UgJsonFile.c'; else $(CYGPATH_W) '$(srcdir)/UgJsonFile.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgJsonFile.Tpo $(DEPDIR)/libuglib_a-UgJsonFile.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgJsonFile.c' object='libuglib_a-UgJsonFile.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonFile.obj `if test -f 'UgJsonFile.c'; then $(CYGPATH_W) 'UgJsonFile.c'; else $(CYGPATH_W) '$(srcdir)/UgJsonFile.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonFile.obj `if test -f 'UgJsonFile.c'; then $(CYGPATH_W) 'UgJsonFile.c'; else $(CYGPATH_W) '$(srcdir)/UgJsonFile.c'; fi` libuglib_a-UgJsonrpc.o: UgJsonrpc.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgJsonrpc.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgJsonrpc.Tpo -c -o libuglib_a-UgJsonrpc.o `test -f 'UgJsonrpc.c' || echo '$(srcdir)/'`UgJsonrpc.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgJsonrpc.Tpo $(DEPDIR)/libuglib_a-UgJsonrpc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgJsonrpc.c' object='libuglib_a-UgJsonrpc.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonrpc.o `test -f 'UgJsonrpc.c' || echo '$(srcdir)/'`UgJsonrpc.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonrpc.o `test -f 'UgJsonrpc.c' || echo '$(srcdir)/'`UgJsonrpc.c libuglib_a-UgJsonrpc.obj: UgJsonrpc.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgJsonrpc.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgJsonrpc.Tpo -c -o libuglib_a-UgJsonrpc.obj `if test -f 'UgJsonrpc.c'; then $(CYGPATH_W) 'UgJsonrpc.c'; else $(CYGPATH_W) '$(srcdir)/UgJsonrpc.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgJsonrpc.Tpo $(DEPDIR)/libuglib_a-UgJsonrpc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgJsonrpc.c' object='libuglib_a-UgJsonrpc.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonrpc.obj `if test -f 'UgJsonrpc.c'; then $(CYGPATH_W) 'UgJsonrpc.c'; else $(CYGPATH_W) '$(srcdir)/UgJsonrpc.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonrpc.obj `if test -f 'UgJsonrpc.c'; then $(CYGPATH_W) 'UgJsonrpc.c'; else $(CYGPATH_W) '$(srcdir)/UgJsonrpc.c'; fi` libuglib_a-UgJsonrpcSocket.o: UgJsonrpcSocket.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgJsonrpcSocket.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgJsonrpcSocket.Tpo -c -o libuglib_a-UgJsonrpcSocket.o `test -f 'UgJsonrpcSocket.c' || echo '$(srcdir)/'`UgJsonrpcSocket.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgJsonrpcSocket.Tpo $(DEPDIR)/libuglib_a-UgJsonrpcSocket.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgJsonrpcSocket.c' object='libuglib_a-UgJsonrpcSocket.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonrpcSocket.o `test -f 'UgJsonrpcSocket.c' || echo '$(srcdir)/'`UgJsonrpcSocket.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonrpcSocket.o `test -f 'UgJsonrpcSocket.c' || echo '$(srcdir)/'`UgJsonrpcSocket.c libuglib_a-UgJsonrpcSocket.obj: UgJsonrpcSocket.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgJsonrpcSocket.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgJsonrpcSocket.Tpo -c -o libuglib_a-UgJsonrpcSocket.obj `if test -f 'UgJsonrpcSocket.c'; then $(CYGPATH_W) 'UgJsonrpcSocket.c'; else $(CYGPATH_W) '$(srcdir)/UgJsonrpcSocket.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgJsonrpcSocket.Tpo $(DEPDIR)/libuglib_a-UgJsonrpcSocket.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgJsonrpcSocket.c' object='libuglib_a-UgJsonrpcSocket.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonrpcSocket.obj `if test -f 'UgJsonrpcSocket.c'; then $(CYGPATH_W) 'UgJsonrpcSocket.c'; else $(CYGPATH_W) '$(srcdir)/UgJsonrpcSocket.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonrpcSocket.obj `if test -f 'UgJsonrpcSocket.c'; then $(CYGPATH_W) 'UgJsonrpcSocket.c'; else $(CYGPATH_W) '$(srcdir)/UgJsonrpcSocket.c'; fi` libuglib_a-UgJsonrpcCurl.o: UgJsonrpcCurl.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgJsonrpcCurl.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgJsonrpcCurl.Tpo -c -o libuglib_a-UgJsonrpcCurl.o `test -f 'UgJsonrpcCurl.c' || echo '$(srcdir)/'`UgJsonrpcCurl.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgJsonrpcCurl.Tpo $(DEPDIR)/libuglib_a-UgJsonrpcCurl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgJsonrpcCurl.c' object='libuglib_a-UgJsonrpcCurl.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonrpcCurl.o `test -f 'UgJsonrpcCurl.c' || echo '$(srcdir)/'`UgJsonrpcCurl.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonrpcCurl.o `test -f 'UgJsonrpcCurl.c' || echo '$(srcdir)/'`UgJsonrpcCurl.c libuglib_a-UgJsonrpcCurl.obj: UgJsonrpcCurl.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgJsonrpcCurl.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgJsonrpcCurl.Tpo -c -o libuglib_a-UgJsonrpcCurl.obj `if test -f 'UgJsonrpcCurl.c'; then $(CYGPATH_W) 'UgJsonrpcCurl.c'; else $(CYGPATH_W) '$(srcdir)/UgJsonrpcCurl.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgJsonrpcCurl.Tpo $(DEPDIR)/libuglib_a-UgJsonrpcCurl.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgJsonrpcCurl.c' object='libuglib_a-UgJsonrpcCurl.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonrpcCurl.obj `if test -f 'UgJsonrpcCurl.c'; then $(CYGPATH_W) 'UgJsonrpcCurl.c'; else $(CYGPATH_W) '$(srcdir)/UgJsonrpcCurl.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgJsonrpcCurl.obj `if test -f 'UgJsonrpcCurl.c'; then $(CYGPATH_W) 'UgJsonrpcCurl.c'; else $(CYGPATH_W) '$(srcdir)/UgJsonrpcCurl.c'; fi` libuglib_a-UgHtml.o: UgHtml.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgHtml.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgHtml.Tpo -c -o libuglib_a-UgHtml.o `test -f 'UgHtml.c' || echo '$(srcdir)/'`UgHtml.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgHtml.Tpo $(DEPDIR)/libuglib_a-UgHtml.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgHtml.c' object='libuglib_a-UgHtml.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgHtml.o `test -f 'UgHtml.c' || echo '$(srcdir)/'`UgHtml.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgHtml.o `test -f 'UgHtml.c' || echo '$(srcdir)/'`UgHtml.c libuglib_a-UgHtml.obj: UgHtml.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgHtml.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgHtml.Tpo -c -o libuglib_a-UgHtml.obj `if test -f 'UgHtml.c'; then $(CYGPATH_W) 'UgHtml.c'; else $(CYGPATH_W) '$(srcdir)/UgHtml.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgHtml.Tpo $(DEPDIR)/libuglib_a-UgHtml.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgHtml.c' object='libuglib_a-UgHtml.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgHtml.obj `if test -f 'UgHtml.c'; then $(CYGPATH_W) 'UgHtml.c'; else $(CYGPATH_W) '$(srcdir)/UgHtml.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgHtml.obj `if test -f 'UgHtml.c'; then $(CYGPATH_W) 'UgHtml.c'; else $(CYGPATH_W) '$(srcdir)/UgHtml.c'; fi` libuglib_a-UgHtmlEntry.o: UgHtmlEntry.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgHtmlEntry.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgHtmlEntry.Tpo -c -o libuglib_a-UgHtmlEntry.o `test -f 'UgHtmlEntry.c' || echo '$(srcdir)/'`UgHtmlEntry.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgHtmlEntry.Tpo $(DEPDIR)/libuglib_a-UgHtmlEntry.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgHtmlEntry.c' object='libuglib_a-UgHtmlEntry.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgHtmlEntry.o `test -f 'UgHtmlEntry.c' || echo '$(srcdir)/'`UgHtmlEntry.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgHtmlEntry.o `test -f 'UgHtmlEntry.c' || echo '$(srcdir)/'`UgHtmlEntry.c libuglib_a-UgHtmlEntry.obj: UgHtmlEntry.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgHtmlEntry.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgHtmlEntry.Tpo -c -o libuglib_a-UgHtmlEntry.obj `if test -f 'UgHtmlEntry.c'; then $(CYGPATH_W) 'UgHtmlEntry.c'; else $(CYGPATH_W) '$(srcdir)/UgHtmlEntry.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgHtmlEntry.Tpo $(DEPDIR)/libuglib_a-UgHtmlEntry.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgHtmlEntry.c' object='libuglib_a-UgHtmlEntry.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgHtmlEntry.obj `if test -f 'UgHtmlEntry.c'; then $(CYGPATH_W) 'UgHtmlEntry.c'; else $(CYGPATH_W) '$(srcdir)/UgHtmlEntry.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgHtmlEntry.obj `if test -f 'UgHtmlEntry.c'; then $(CYGPATH_W) 'UgHtmlEntry.c'; else $(CYGPATH_W) '$(srcdir)/UgHtmlEntry.c'; fi` libuglib_a-UgHtmlFilter.o: UgHtmlFilter.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgHtmlFilter.o -MD -MP -MF $(DEPDIR)/libuglib_a-UgHtmlFilter.Tpo -c -o libuglib_a-UgHtmlFilter.o `test -f 'UgHtmlFilter.c' || echo '$(srcdir)/'`UgHtmlFilter.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgHtmlFilter.Tpo $(DEPDIR)/libuglib_a-UgHtmlFilter.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgHtmlFilter.c' object='libuglib_a-UgHtmlFilter.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgHtmlFilter.o `test -f 'UgHtmlFilter.c' || echo '$(srcdir)/'`UgHtmlFilter.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgHtmlFilter.o `test -f 'UgHtmlFilter.c' || echo '$(srcdir)/'`UgHtmlFilter.c libuglib_a-UgHtmlFilter.obj: UgHtmlFilter.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -MT libuglib_a-UgHtmlFilter.obj -MD -MP -MF $(DEPDIR)/libuglib_a-UgHtmlFilter.Tpo -c -o libuglib_a-UgHtmlFilter.obj `if test -f 'UgHtmlFilter.c'; then $(CYGPATH_W) 'UgHtmlFilter.c'; else $(CYGPATH_W) '$(srcdir)/UgHtmlFilter.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libuglib_a-UgHtmlFilter.Tpo $(DEPDIR)/libuglib_a-UgHtmlFilter.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgHtmlFilter.c' object='libuglib_a-UgHtmlFilter.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgHtmlFilter.obj `if test -f 'UgHtmlFilter.c'; then $(CYGPATH_W) 'UgHtmlFilter.c'; else $(CYGPATH_W) '$(srcdir)/UgHtmlFilter.c'; fi` - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libuglib_a_CPPFLAGS) $(CPPFLAGS) $(libuglib_a_CFLAGS) $(CFLAGS) -c -o libuglib_a-UgHtmlFilter.obj `if test -f 'UgHtmlFilter.c'; then $(CYGPATH_W) 'UgHtmlFilter.c'; else $(CYGPATH_W) '$(srcdir)/UgHtmlFilter.c'; fi` + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -790,15 +636,11 @@ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -807,11 +649,29 @@ here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -880,7 +740,6 @@ clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -926,7 +785,6 @@ installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -946,19 +804,21 @@ .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES ctags distclean distclean-compile \ - distclean-generic distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am +.PRECIOUS: Makefile + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru uget-2.0.2/uglib/UgArray.c uget-2.2.2/uglib/UgArray.c --- uget-2.0.2/uglib/UgArray.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgArray.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -47,12 +47,12 @@ // ---------------------------------------------------------------------------- // UgArray: for UG_ENTRY_ARRAY -void ug_array_init (void* arr, int element_size, int allocated_len) +void ug_array_init(void* arr, int element_size, int allocated_len) { UgArrayChar* array = arr; if (allocated_len) - array->at = ug_malloc (element_size * allocated_len); + array->at = ug_malloc(element_size * allocated_len); else array->at = NULL; array->length = 0; @@ -60,17 +60,17 @@ array->element_size = element_size; } -void ug_array_clear (void* arr) +void ug_array_clear(void* arr) { UgArrayChar* array = arr; - ug_free (array->at); + ug_free(array->at); array->at = NULL; array->length = 0; array->allocated = 0; } -void* ug_array_alloc (void* arr, int nElements) +void* ug_array_alloc(void* arr, int nElements) { UgArrayChar* array = arr; int len; @@ -80,14 +80,14 @@ array->allocated = len * 2; // if (array->allocated < 16) // array->allocated = 16; - array->at = ug_realloc (array->at, array->allocated * array->element_size); + array->at = ug_realloc(array->at, array->allocated * array->element_size); } arr = array->at + array->length * array->element_size; array->length += nElements; return arr; } -void ug_array_foreach (void* array, UgForeachFunc func, void* data) +void ug_array_foreach(void* array, UgForeachFunc func, void* data) { char* cur; char* end; @@ -96,30 +96,112 @@ end = cur + ((UgArrayChar*)array)->element_size * ((UgArrayChar*)array)->length; for (; cur < end; cur+= ((UgArrayChar*)array)->element_size) - func (cur, data); + func(cur, data); } -void ug_array_foreach_ptr (void* array, UgForeachFunc func, void* data) +void ug_array_foreach_ptr(void* array, UgForeachFunc func, void* data) { char* cur = ((UgArrayChar*)array)->at; char* end = cur + ((UgArrayChar*)array)->element_size * ((UgArrayChar*)array)->length; for (; cur < end; cur+= ((UgArrayChar*)array)->element_size) - func (*(void**)cur, data); + func(*(void**)cur, data); +} + +void* ug_array_find_sorted(void* array, const void* key, + UgCompareFunc compare, int* inserted_index) +{ + int low; + int cur; + int high; + int diff; + void* cur_key; + + low = 0; + cur = 0; + high = ((UgArrayChar*)array)->length; + while (low < high) { +// cur = low + ((high - low) / 2); + cur = low + ((high - low) >> 1); + cur_key = ((UgArrayChar*)array)->at + cur * + ((UgArrayChar*)array)->element_size; + + diff = compare(cur_key, key); + if (diff == 0) { + if (inserted_index) + inserted_index[0] = cur; + return ((UgArrayChar*)array)->at + cur * + ((UgArrayChar*)array)->element_size; + } + else if (diff > 0) + high = cur; + else if (diff < 0) + low = cur + 1; + } + + if (inserted_index) { + if (cur < low) + cur++; + inserted_index[0] = cur; + } + return NULL; +} + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) +// C99 or C++ inline functions in UgArray.h +#else +void* ug_array_insert(void* array, int index, int length) +{ + char* addr; + ug_array_alloc(array, length); + memmove(ug_array_addr(array, index + length), + addr = ug_array_addr(array, index), + ug_array_count(array, ug_array_length(array) - index - 1)); + return (void*)addr; +} + +void ug_array_erase(void* array, int index, int length) +{ + memmove(ug_array_addr(array, index), + ug_array_addr(array, index + length), + ug_array_count(array, ug_array_length(array) - index - 1)); + ((UgArrayChar*)array)->length -= length; +} + +void ug_array_sort(void* array, UgCompareFunc compare) +{ + qsort( ((UgArrayChar*)array)->at, ((UgArrayChar*)array)->length, + ((UgArrayChar*)array)->element_size, compare); +} +#endif // __STDC_VERSION__ + +int ug_array_compare_int(const void *s1, const void *s2) +{ + return *(int*)s1 - *(int*)s2; +} + +int ug_array_compare_string(const void *s1, const void *s2) +{ + return strcmp(*(char**)s1, *(char**)s2); +} + +int ug_array_compare_pointer(const void *s1, const void *s2) +{ + return *(char**)s1 - *(char**)s2; } // ---------------------------------------------------------------------------- // UgJsonParseFunc for JSON array elements -UgJsonError ug_json_parse_array_bool (UgJson* json, - const char* name, const char* value, - void* array, void* none) +UgJsonError ug_json_parse_array_bool(UgJson* json, + const char* name, const char* value, + void* array, void* none) { int boolValue; if (json->type != UG_JSON_TRUE && json->type != UG_JSON_FALSE) { // if (json->type >= UG_JSON_OBJECT) -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); return UG_JSON_ERROR_TYPE_NOT_MATCH; } @@ -128,138 +210,138 @@ else boolValue = FALSE; - ((UgArrayInt*)array)->element_size = sizeof (int); - *((int*) ug_array_alloc (array, 1)) = boolValue; + ((UgArrayInt*)array)->element_size = sizeof(int); + *((int*) ug_array_alloc(array, 1)) = boolValue; return UG_JSON_ERROR_NONE; } -UgJsonError ug_json_parse_array_int (UgJson* json, - const char* name, const char* value, - void* array, void* none) +UgJsonError ug_json_parse_array_int(UgJson* json, + const char* name, const char* value, + void* array, void* none) { if (json->type != UG_JSON_NUMBER) { // if (json->type >= UG_JSON_OBJECT) -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); return UG_JSON_ERROR_TYPE_NOT_MATCH; } - ((UgArrayInt*)array)->element_size = sizeof (int); - *((int*) ug_array_alloc (array, 1)) = strtol (value, NULL, 10); + ((UgArrayInt*)array)->element_size = sizeof(int); + *((int*) ug_array_alloc(array, 1)) = strtol(value, NULL, 10); return UG_JSON_ERROR_NONE; } -UgJsonError ug_json_parse_array_uint (UgJson* json, - const char* name, const char* value, - void* array, void* none) +UgJsonError ug_json_parse_array_uint(UgJson* json, + const char* name, const char* value, + void* array, void* none) { if (json->type != UG_JSON_NUMBER) { // if (json->type >= UG_JSON_OBJECT) -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); return UG_JSON_ERROR_TYPE_NOT_MATCH; } - ((UgArrayInt*)array)->element_size = sizeof (unsigned int); - *((unsigned int*) ug_array_alloc (array, 1)) = strtoul (value, NULL, 10); + ((UgArrayInt*)array)->element_size = sizeof(unsigned int); + *((unsigned int*) ug_array_alloc(array, 1)) = strtoul(value, NULL, 10); return UG_JSON_ERROR_NONE; } -UgJsonError ug_json_parse_array_int64 (UgJson* json, - const char* name, const char* value, - void* array, void* none) +UgJsonError ug_json_parse_array_int64(UgJson* json, + const char* name, const char* value, + void* array, void* none) { if (json->type != UG_JSON_NUMBER) { // if (json->type >= UG_JSON_OBJECT) -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); return UG_JSON_ERROR_TYPE_NOT_MATCH; } - ((UgArrayInt*)array)->element_size = sizeof (int64_t); - *((int64_t*) ug_array_alloc (array, 1)) = strtoll (value, NULL, 10); + ((UgArrayInt*)array)->element_size = sizeof(int64_t); + *((int64_t*) ug_array_alloc(array, 1)) = strtoll(value, NULL, 10); return UG_JSON_ERROR_NONE; } -UgJsonError ug_json_parse_array_double (UgJson* json, - const char* name, const char* value, - void* array, void* none) +UgJsonError ug_json_parse_array_double(UgJson* json, + const char* name, const char* value, + void* array, void* none) { if (json->type != UG_JSON_NUMBER) { // if (json->type >= UG_JSON_OBJECT) -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); return UG_JSON_ERROR_TYPE_NOT_MATCH; } - ((UgArrayInt*)array)->element_size = sizeof (double); - *((double*) ug_array_alloc (array, 1)) = strtod (value, NULL); + ((UgArrayInt*)array)->element_size = sizeof(double); + *((double*) ug_array_alloc(array, 1)) = strtod(value, NULL); return UG_JSON_ERROR_NONE; } -UgJsonError ug_json_parse_array_string (UgJson* json, - const char* name, const char* value, - void* array, void* none) +UgJsonError ug_json_parse_array_string(UgJson* json, + const char* name, const char* value, + void* array, void* none) { char* string; if (json->type == UG_JSON_STRING) - string = ug_strdup (value); + string = ug_strdup(value); else if (json->type == UG_JSON_NULL) string = NULL; else { // if (json->type >= UG_JSON_OBJECT) -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); return UG_JSON_ERROR_TYPE_NOT_MATCH; } - ((UgArrayInt*)array)->element_size = sizeof (char*); - *((char**) ug_array_alloc (array, 1)) = string; + ((UgArrayInt*)array)->element_size = sizeof(char*); + *((char**) ug_array_alloc(array, 1)) = string; return UG_JSON_ERROR_NONE; } // ---------------------------------------------------------------------------- // write JSON array elements -void ug_json_write_array_bool (UgJson* json, UgArrayInt* array) +void ug_json_write_array_bool(UgJson* json, UgArrayInt* array) { // UgArrayInt* array = src; int index; for (index = 0; index < array->length; index++) - ug_json_write_bool (json, array->at[index]); + ug_json_write_bool(json, array->at[index]); } -void ug_json_write_array_int (UgJson* json, UgArrayInt* array) +void ug_json_write_array_int(UgJson* json, UgArrayInt* array) { // UgArrayInt* array = src; int index; for (index = 0; index < array->length; index++) - ug_json_write_int (json, array->at[index]); + ug_json_write_int(json, array->at[index]); } -void ug_json_write_array_uint (UgJson* json, UgArrayUint* array) +void ug_json_write_array_uint(UgJson* json, UgArrayUint* array) { int index; for (index = 0; index < array->length; index++) - ug_json_write_uint (json, array->at[index]); + ug_json_write_uint(json, array->at[index]); } -void ug_json_write_array_int64 (UgJson* json, UgArrayInt64* array) +void ug_json_write_array_int64(UgJson* json, UgArrayInt64* array) { int index; for (index = 0; index < array->length; index++) - ug_json_write_int64 (json, array->at[index]); + ug_json_write_int64(json, array->at[index]); } -void ug_json_write_array_double (UgJson* json, UgArrayDouble* array) +void ug_json_write_array_double(UgJson* json, UgArrayDouble* array) { int index; for (index = 0; index < array->length; index++) - ug_json_write_double (json, array->at[index]); + ug_json_write_double(json, array->at[index]); } -void ug_json_write_array_string (UgJson* json, UgArrayStr* array) +void ug_json_write_array_string(UgJson* json, UgArrayStr* array) { int index; char* string; @@ -267,9 +349,9 @@ for (index = 0; index < array->length; index++) { string = array->at[index]; if (string == NULL) - ug_json_write_null (json); + ug_json_write_null(json); else - ug_json_write_string (json, string); + ug_json_write_string(json, string); } } diff -Nru uget-2.0.2/uglib/UgArray.h uget-2.2.2/uglib/UgArray.h --- uget-2.0.2/uglib/UgArray.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgArray.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -40,6 +40,7 @@ // uintptr_t is an unsigned int that is guaranteed to be the same size as a pointer. #include // uintptr_t, int64_t #include // qsort(), malloc(), free() +#include // memmove() #include #include @@ -48,7 +49,137 @@ #endif // ---------------------------------------------------------------------------- -// UgArray is a template C array. It used by UgEntry with UG_ENTRY_ARRAY. +// UgArray functions + +void ug_array_init(void* array, int element_size, int allocated_len); +void ug_array_clear(void* array); +void* ug_array_alloc(void* array, int nElements); +void ug_array_foreach(void* array, UgForeachFunc func, void* data); +void ug_array_foreach_ptr(void* array, UgForeachFunc func, void* data); + +// Binary search for sorted array +void* ug_array_find_sorted(void* array, const void* key, + UgCompareFunc func, int* index); + +#define ug_array_foreach_str ug_array_foreach_ptr + +#define ug_array_count(array, length) \ + ( ((UgArrayChar*)(array))->element_size * (length) ) + +#define ug_array_addr(array, index) \ + ( ((UgArrayChar*)(array))->at + ((UgArrayChar*)(array))->element_size * (index) ) + +#define ug_array_length(array) \ + ( ((UgArrayChar*)(array))->length ) + +#define ug_array_allocated(array) \ + ( ((UgArrayChar*)(array))->allocated ) + +#define ug_array_element_size(array) \ + ( ((UgArrayChar*)(array))->element_size ) + +// Binary search: +// int compareFunc(const void *s1, const void *s2); +#define ug_array_bsearch(array, key, compareFunc) \ + bsearch(key, (array)->at, (array)->length, (array)->element_size, compareFunc) + +#define ug_array_append(array, values, len) \ + memcpy(ug_array_alloc((array), len), values, ((UgArrayChar*)(array))->element_size * len) + +#define ug_array_terminate0(array) \ + memset(ug_array_alloc((array), 1), 0, ((UgArrayChar*)(array))->element_size) + +#define ug_array_end0(array) \ + *((char*) ug_array_alloc((array), 1)) = 0 + +int ug_array_compare_int(const void *s1, const void *s2); +int ug_array_compare_string(const void *s1, const void *s2); +int ug_array_compare_pointer(const void *s1, const void *s2); + +#ifdef __cplusplus +} +#endif + +// ---------------------------------------------------------------------------- +// ArrayMethod : a template C++ struct is used by UgArray and it's children. + +#ifdef __cplusplus + +// These definitions are used by Ug::ArrayMethod +inline void* ug_array_insert(void* array, int index, int length); +inline void ug_array_erase(void* array, int index, int length); +inline void ug_array_sort(void* array, UgCompareFunc func); + +namespace Ug +{ + +// This one is for derived use only, no data members here. +// This one is NOT for directly use only, it must has UgArray data members. +// Your derived struct/class must be C++11 standard-layout. +template struct ArrayMethod +{ + inline void init(int allocated_len) + { ug_array_init(this, sizeof(Type), allocated_len); } + inline void clear(void) + { ug_array_clear(this); } + + inline Type* alloc(int nElements) + { return (Type*) ug_array_alloc(this, nElements); } + inline Type* erase(int index, int nElements) + { return (Type*) ug_array_erase(this, index, nElements); } + inline Type* insert(int index, int nElements) + { return (Type*) ug_array_insert(this, index, nElements); } + + inline void sort(UgCompareFunc func) + { ug_array_sort(this, func); } + inline Type* findSorted(const Type* key, UgCompareFunc func, int* index) + { return (Type*) ug_array_find_sorted(this, key, func, index); } + inline Type* findSorted(const Type& key, UgCompareFunc func, int* index) + { return (Type*) ug_array_find_sorted(this, &key, func, index); } + + // for specialization + void sort(); + Type* findSorted(Type key, int* index); +}; + +// template specialization +template<> inline void ArrayMethod::sort() +{ + ug_array_sort(this, ug_array_compare_int); +}; + +template<> inline int* ArrayMethod::findSorted(int key, int* index) +{ + int value = key; + return (int*) ug_array_find_sorted(this, &value, ug_array_compare_int, index); +}; + +template<> inline void ArrayMethod::sort() +{ + ug_array_sort(this, ug_array_compare_string); +}; + +template<> inline char** ArrayMethod::findSorted(char* key, int* index) +{ + return (char**) ug_array_find_sorted(this, &key, ug_array_compare_string, index); +}; + +template<> inline void ArrayMethod::sort() +{ + ug_array_sort(this, ug_array_compare_pointer); +}; + +template<> inline void** ArrayMethod::findSorted(void* key, int* index) +{ + return (void**) ug_array_find_sorted(this, &key, ug_array_compare_pointer, index); +}; + +}; // namespace Ug + +#endif // __cplusplus + +// ---------------------------------------------------------------------------- +// UgArray is a template array. It used by UgEntry with UG_ENTRY_ARRAY. #define UG_ARRAY_MEMBERS(Type) \ Type* at; \ @@ -56,8 +187,24 @@ int allocated; \ int element_size +#ifdef __cplusplus +// C++ template works with C macro +template +struct UgArray : Ug::ArrayMethod +{ + UG_ARRAY_MEMBERS(Type); +/* // ------ UgArray members ------ + Type* at; + int length; + int allocated; + int element_size; + */ +}; +#define UG_ARRAY(Type) struct UgArray +#else // implement C++ template by C macro -#define UG_ARRAY(Type) struct { UG_ARRAY_MEMBERS (Type); } +#define UG_ARRAY(Type) struct { UG_ARRAY_MEMBERS(Type); } +#endif // __cplusplus typedef UG_ARRAY(char) UgArrayChar; typedef UG_ARRAY(char*) UgArrayStr; @@ -67,60 +214,93 @@ typedef UG_ARRAY(int64_t) UgArrayInt64; typedef UG_ARRAY(double) UgArrayDouble; -void ug_array_init (void* array, int element_size, int allocated_len); -void ug_array_clear (void* array); -void* ug_array_alloc (void* array, int nElements); -void ug_array_foreach (void* array, UgForeachFunc func, void* data); -void ug_array_foreach_ptr (void* array, UgForeachFunc func, void* data); +// ---------------------------------------------------------------------------- +// C/C++ inline function -#define ug_array_foreach_str ug_array_foreach_ptr +#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || defined(__cplusplus) +// C99 or C++ inline functions -#define ug_array_append(array, values, len) \ - memcpy (ug_array_alloc ((array), len), values, ((UgArrayChar*)(array))->element_size * len) +#ifdef __cplusplus // C++ +inline +#else // C99 +static inline +#endif +void* ug_array_insert(void* array, int index, int length) +{ + char* addr; + ug_array_alloc(array, length); + memmove(ug_array_addr(array, index + length), + addr = ug_array_addr(array, index), + ug_array_count(array, ug_array_length(array) - index - 1)); + return (void*)addr; +} + +#ifdef __cplusplus // C++ +inline +#else // C99 +static inline +#endif +void ug_array_erase(void* array, int index, int length) +{ + memmove(ug_array_addr(array, index), + ug_array_addr(array, index + length), + ug_array_count(array, ug_array_length(array) - index - 1)); + ((UgArrayChar*)array)->length -= length; +} -#define ug_array_terminate0(array) \ - memset (ug_array_alloc ((array), 1), 0, ((UgArrayChar*)(array))->element_size) +#ifdef __cplusplus // C++ +inline +#else // C99 +static inline +#endif +void ug_array_sort(void* array, UgCompareFunc compare) +{ + qsort( ((UgArrayChar*)array)->at, ((UgArrayChar*)array)->length, + ((UgArrayChar*)array)->element_size, compare); +} -#define ug_array_end0(array) \ - *((char*) ug_array_alloc ((array), 1)) = 0 +#else +// C functions +void* ug_array_insert(void* array, int index, int length); +void ug_array_erase(void* array, int index, int length); +void ug_array_sort(void* array, UgCompareFunc func); // Quick sort -// Quick sort and Binary search: -// int compareFunc(const void *s1, const void *s2); -#define ug_array_sort(array, compareFunc) \ - qsort ((array)->at, (array)->length, (array)->element_size, compareFunc) -#define ug_array_bsearch(array, key, compareFunc) \ - bsearch(key, (array)->at, (array)->length, (array)->element_size, compareFunc) +#endif // __STDC_VERSION__ || __cplusplus // ---------------------------------------------------------------------------- +// JSON parser/writer + +#ifdef __cplusplus +extern "C" { +#endif + // UgJsonParseFunc for JSON array elements -UgJsonError ug_json_parse_array_bool (UgJson* json, - const char* name, const char* value, - void* array, void* none); -UgJsonError ug_json_parse_array_int (UgJson* json, +UgJsonError ug_json_parse_array_bool(UgJson* json, + const char* name, const char* value, + void* array, void* none); +UgJsonError ug_json_parse_array_int(UgJson* json, + const char* name, const char* value, + void* array, void* none); +UgJsonError ug_json_parse_array_uint(UgJson* json, const char* name, const char* value, void* array, void* none); -UgJsonError ug_json_parse_array_uint (UgJson* json, +UgJsonError ug_json_parse_array_int64(UgJson* json, const char* name, const char* value, void* array, void* none); -UgJsonError ug_json_parse_array_int64 (UgJson* json, +UgJsonError ug_json_parse_array_double(UgJson* json, + const char* name, const char* value, + void* array, void* none); +UgJsonError ug_json_parse_array_string(UgJson* json, const char* name, const char* value, void* array, void* none); -UgJsonError ug_json_parse_array_double (UgJson* json, - const char* name, const char* value, - void* array, void* none); -UgJsonError ug_json_parse_array_string (UgJson* json, - const char* name, const char* value, - void* array, void* none); -// ---------------------------------------------------------------------------- // write JSON array elements -void ug_json_write_array_bool (UgJson* json, UgArrayInt* array); -void ug_json_write_array_int (UgJson* json, UgArrayInt* array); -void ug_json_write_array_uint (UgJson* json, UgArrayUint* array); -void ug_json_write_array_int64 (UgJson* json, UgArrayInt64* array); -void ug_json_write_array_double (UgJson* json, UgArrayDouble* array); -void ug_json_write_array_string (UgJson* json, UgArrayStr* array); - +void ug_json_write_array_bool(UgJson* json, UgArrayInt* array); +void ug_json_write_array_int(UgJson* json, UgArrayInt* array); +void ug_json_write_array_uint(UgJson* json, UgArrayUint* array); +void ug_json_write_array_int64(UgJson* json, UgArrayInt64* array); +void ug_json_write_array_double(UgJson* json, UgArrayDouble* array); +void ug_json_write_array_string(UgJson* json, UgArrayStr* array); #ifdef __cplusplus } @@ -133,32 +313,14 @@ namespace Ug { -// This one is for derived use only. No data members here. -// Your derived struct/class must be C++11 standard-layout -template struct ArrayMethod -{ - inline void init (int allocated_len) - { ug_array_init (this, sizeof (Type), allocated_len); } - inline void final (void) - { ug_array_clear (this); } - - inline Type* alloc (int nElements) - { return (Type*) ug_array_alloc (this, nElements); } -}; // This one is for directly use only. You can NOT derived it. -template struct Array : ArrayMethod +template struct Array : UgArray { - UG_ARRAY_MEMBERS (Type); -// Type* at; -// int length; -// int allocated; -// int element_size; - - inline Array (int allocated_len = 0) - { ug_array_init (this, sizeof (Type), allocated_len); } - inline ~Array (void) - { ug_array_clear (this); } +// inline Array(int allocated_len = 0) +// { ug_array_init(this, sizeof(Type), allocated_len); } +// inline ~Array(void) +// { ug_array_clear(this); } }; }; // namespace Ug diff -Nru uget-2.0.2/uglib/UgBuffer.c uget-2.2.2/uglib/UgBuffer.c --- uget-2.0.2/uglib/UgBuffer.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgBuffer.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -39,7 +39,7 @@ #include #include -void ug_buffer_init_external (UgBuffer* buffer, char* exbuf, int length) +void ug_buffer_init_external(UgBuffer* buffer, char* exbuf, int length) { buffer->beg = exbuf; buffer->cur = exbuf; @@ -47,85 +47,113 @@ buffer->more = ug_buffer_restart; } -void ug_buffer_init (UgBuffer* buffer, int length) +void ug_buffer_init(UgBuffer* buffer, int length) { - buffer->beg = ug_malloc (length); + buffer->beg = ug_malloc(length); buffer->cur = buffer->beg; buffer->end = buffer->beg + length; buffer->more = ug_buffer_expand; } -void ug_buffer_clear (UgBuffer* buffer, int free_buffer) +void ug_buffer_clear(UgBuffer* buffer, int free_buffer) { if (free_buffer) - ug_free (buffer->beg); + ug_free(buffer->beg); buffer->beg = NULL; buffer->cur = NULL; buffer->end = NULL; } -void ug_buffer_set_size (UgBuffer* buffer, int length) +void ug_buffer_set_size(UgBuffer* buffer, int length) { char* oldbeg; oldbeg = buffer->beg; - buffer->beg = ug_realloc (buffer->beg, length); + buffer->beg = ug_realloc(buffer->beg, length); buffer->cur = buffer->beg + (buffer->cur - oldbeg); buffer->end = buffer->beg + length; } +char* ug_buffer_alloc(UgBuffer* buffer, int length) +{ + char* result; + int buffer_len; + + if (buffer->end < buffer->cur + length) { + buffer_len = buffer->end - buffer->beg; + if (buffer_len < length) + buffer_len = length * 2; + else + buffer_len *= 2; + ug_buffer_set_size(buffer, buffer_len); + } + result = buffer->cur; + buffer->cur += length; + return result; +} + // UgBuffer.more() default function for external buffer. -int ug_buffer_restart (UgBuffer* buffer) +int ug_buffer_restart(UgBuffer* buffer) { buffer->cur = buffer->beg; return 1; } // UgBuffer.more() default function for internal buffer. -int ug_buffer_expand (UgBuffer* buffer) +int ug_buffer_expand(UgBuffer* buffer) { int length; length = (buffer->end - buffer->beg) * 2; if (length < 1024) length = 1024; - ug_buffer_set_size (buffer, length); + ug_buffer_set_size(buffer, length); return 1; } -void ug_buffer_fill (UgBuffer* buffer, char ch, int count) +void ug_buffer_fill(UgBuffer* buffer, char ch, int count) { while (count--) { if (buffer->cur == buffer->end) - buffer->more (buffer); + buffer->more(buffer); *buffer->cur++ = ch; } } -int ug_buffer_write (UgBuffer* buffer, const char* string, int length) +int ug_buffer_write(UgBuffer* buffer, const char* string, int length) { const char* end; if (length == -1) - length = strlen (string); + length = strlen(string); end = string + length; while (string < end && string[0]) { if (buffer->cur == buffer->end) - buffer->more (buffer); + buffer->more(buffer); *buffer->cur++ = *(uint8_t*)string++; } return length; } -void ug_buffer_write_data (UgBuffer* buffer, const char* binary, int length) +void ug_buffer_write_data(UgBuffer* buffer, const char* binary, int length) { const char* end; end = binary + length; while (binary < end) { if (buffer->cur == buffer->end) - buffer->more (buffer); + buffer->more(buffer); *buffer->cur++ = *binary++; } } +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) +// C99 or C++ inline function in UgBuffer.h +#else +void ug_buffer_write_char(UgBuffer* buffer, char ch) +{ + if ((buffer)->cur >= (buffer)->end) + (buffer)->more(buffer); + *(buffer)->cur++ = (char)(ch); +} +#endif // __STDC_VERSION__ diff -Nru uget-2.0.2/uglib/UgBuffer.h uget-2.2.2/uglib/UgBuffer.h --- uget-2.0.2/uglib/UgBuffer.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgBuffer.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -43,9 +43,48 @@ extern "C" { #endif +// ---------------------------------------------------------------------------- +// UgBuffer functions + typedef struct UgBuffer UgBuffer; typedef int (*UgBufferFunc) (UgBuffer* buffer); +void ug_buffer_init_external(UgBuffer* buffer, char* exbuf, int length); +void ug_buffer_init(UgBuffer* buffer, int length); + +// If you use ug_buffer_init_external() to init UgBuffer, +// you may not free, resize, or allocate buffer. +void ug_buffer_clear(UgBuffer* buffer, int free_buffer); +void ug_buffer_set_size(UgBuffer* buffer, int length); +char* ug_buffer_alloc(UgBuffer* buffer, int length); + +// UgBuffer.more() default function for external buffer. +int ug_buffer_restart(UgBuffer* buffer); +// UgBuffer.more() default function for internal buffer. +int ug_buffer_expand(UgBuffer* buffer); + +void ug_buffer_fill(UgBuffer* buffer, char ch, int count); + +// return number of bytes written +int ug_buffer_write(UgBuffer* buffer, const char* string, int length); +void ug_buffer_write_data(UgBuffer* buffer, const char* binary, int length); + +#define ug_buffer_length(buffer) (int)((buffer)->cur - (buffer)->beg) +#define ug_buffer_allocated(buffer) (int)((buffer)->end - (buffer)->beg) +#define ug_buffer_remain(buffer) (int)((buffer)->end - (buffer)->cur) + +#ifdef __cplusplus +} +#endif + +// This definition is used by UgBuffer::write(char ch) +#ifdef __cplusplus +inline void ug_buffer_write_char(UgBuffer* buffer, char ch); +#endif + +// ---------------------------------------------------------------------------- +// UgBuffer structure + struct UgBuffer { char* beg; @@ -59,36 +98,73 @@ // return = 0 if no more data (read) UgBufferFunc more; // flush/expand (write) or fill/expand (read) void* data; // extra data for UgBuffer.more() + +#ifdef __cplusplus + // C++11 standard-layout + inline void init(int length) + { ug_buffer_init(this, length); } + inline void init(char* exbuf, int length) + { ug_buffer_init_external(this, exbuf, length); } + + // If you use ug_buffer_init_external() to init UgBuffer, + // you may not free, resize, or allocate buffer. + inline void clear(bool free_buffer) + { ug_buffer_clear(this, free_buffer); } + inline void setSize(int length) + { ug_buffer_set_size(this, length); } + inline char* alloc(int length) + { return ug_buffer_alloc(this, length); } + + inline void fill(char ch, int count) + { ug_buffer_fill(this, ch, count); } + + // return number of bytes written + inline int write(const char* string, int length = -1) + { return ug_buffer_write(this, string, length); } + inline void write(char ch) + { ug_buffer_write_char(this, ch); } + inline void writeData(const char* binary, int length) + { ug_buffer_write_data(this, binary, length); } +#endif // __cplusplus }; -void ug_buffer_init_external (UgBuffer* buffer, char* exbuf, int length); -void ug_buffer_init (UgBuffer* buffer, int length); -void ug_buffer_clear (UgBuffer* buffer, int free_buffer); +// ---------------------------------------------------------------------------- +// C/C++ inline function -void ug_buffer_set_size (UgBuffer* buffer, int length); +#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || defined(__cplusplus) +// C99 or C++ inline function -// UgBuffer.more() default function for external buffer. -int ug_buffer_restart (UgBuffer* buffer); -// UgBuffer.more() default function for internal buffer. -int ug_buffer_expand (UgBuffer* buffer); +#ifdef __cplusplus // C++ +inline +#else // C99 +static inline +#endif +void ug_buffer_write_char(UgBuffer* buffer, char ch) +{ + if ((buffer)->cur >= (buffer)->end) + (buffer)->more(buffer); + *(buffer)->cur++ = (char)(ch); +} -void ug_buffer_fill (UgBuffer* buffer, char ch, int count); -int ug_buffer_write (UgBuffer* buffer, const char* string, int length); -void ug_buffer_write_data (UgBuffer* buffer, const char* binary, int length); - -#define ug_buffer_write_char(buffer, ch) \ - { if ((buffer)->cur >= (buffer)->end) \ - (buffer)->more (buffer); \ - *(buffer)->cur++ = (char)(ch); \ - } +#else +// C function +void ug_buffer_write_char(UgBuffer* buffer, char ch); -#define ug_buffer_length(buffer) (int)((buffer)->cur - (buffer)->beg) -#define ug_buffer_allocated(buffer) (int)((buffer)->end - (buffer)->beg) -#define ug_buffer_remain(buffer) (int)((buffer)->end - (buffer)->cur) +#endif // __STDC_VERSION__ || __cplusplus + +// ---------------------------------------------------------------------------- +// C++11 standard-layout #ifdef __cplusplus -} -#endif + +namespace Ug +{ +// This one is for directly use only. You can NOT derived it. +typedef struct UgBuffer Buffer; +}; // namespace Ug + +#endif // __cplusplus + #endif // UG_BUFFER_H diff -Nru uget-2.0.2/uglib/UgData.c uget-2.2.2/uglib/UgData.c --- uget-2.0.2/uglib/UgData.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgData.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -46,122 +46,134 @@ #include #include -// UgData* ug_data_new (const UgDataInfo* iface) -void* ug_data_new (const UgDataInfo* info) +// ---------------------------------------------------------------------------- +// UgTypeInfo +// | +// +-- UgDataInfo + +void* ug_type_new(const void* typeinfo) { UgInitFunc init; - UgData* data; + UgType* type; #ifdef HAVE_GLIB - data = g_slice_alloc0 (info->size); + type = g_slice_alloc0(((UgTypeInfo*)typeinfo)->size); #else - data = ug_malloc0 (info->size); + type = ug_malloc0(((UgTypeInfo*)typeinfo)->size); #endif // HAVE_GLIB - data->info = info; - init = info->init; + type->info = typeinfo; + init = type->info->init; if (init) - init (data); - return data; + init(type); + return type; } -// void ug_data_free (UgData* data) -void ug_data_free (void* data) +void ug_type_free(void* type) { UgFinalFunc final; - final = ((UgData*)data)->info->final; + final = ((UgType*)type)->info->final; if (final) - final (data); + final(type); #ifdef HAVE_GLIB - g_slice_free1 (((UgData*)data)->info->size, data); + g_slice_free1(((UgType*)type)->info->size, type); #else - ug_free (data); + ug_free(type); #endif // HAVE_GLIB } -void ug_data_init (void* data) +void ug_type_init(void* type) { UgInitFunc init; - init = ((UgData*)data)->info->init; + init = ((UgType*)type)->info->init; if (init) - init (data); + init(type); } -void ug_data_final (void* data) +void ug_type_final(void* type) { UgFinalFunc final; - final = ((UgData*)data)->info->final; + final = ((UgType*)type)->info->final; if (final) - final (data); + final(type); } -// UgData* ug_data_copy (UgData* data) -void* ug_data_copy (void* data) +// ---------------------------------------------------------------------------- +// UgData + +// UgData* ug_data_copy(UgData* data) +void* ug_data_copy(void* data) { const UgDataInfo* info; + UgInitFunc init; UgAssignFunc assign; void* newone; if (data) { info = ((UgData*)data)->info; + init = info->init; assign = info->assign; if (assign) { #ifdef HAVE_GLIB - newone = g_slice_alloc0 (info->size); + newone = g_slice_alloc0(info->size); #else - newone = ug_malloc0 (info->size); + newone = ug_malloc0(info->size); #endif ((UgData*)newone)->info = info; - assign (newone, data); + if (init) + init(newone); + assign(newone, data); return newone; } } return NULL; } -//void ug_data_assign (UgData* dest, UgData* src) -void ug_data_assign (void* data, void* src) +//void ug_data_assign(UgData* dest, UgData* src) +int ug_data_assign(void* data, void* src) { UgAssignFunc assign; if (data) { assign = ((UgData*)data)->info->assign; - if (assign) - assign (data, src); + if(assign) + return assign(data, src); } + + return FALSE; } // UgJsonParseFunc for UgData, used by UgEntry with UG_ENTRY_CUSTOM -UgJsonError ug_json_parse_data (UgJson* json, - const char* name, const char* value, - void* data, void* none) +UgJsonError ug_json_parse_data(UgJson* json, + const char* name, const char* value, + void* data, void* none) { UgData* ugdata = (UgData*)data; // UgData's type is UG_JSON_OBJECT if (json->type != UG_JSON_OBJECT) { // if (json->type == UG_JSON_ARRAY) -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); return UG_JSON_ERROR_TYPE_NOT_MATCH; } if (ugdata->info->entry == NULL) - ug_json_push (json, ug_json_parse_unknown, NULL, NULL); + ug_json_push(json, ug_json_parse_unknown, NULL, NULL); else - ug_json_push (json, ug_json_parse_entry, data, (void*)ugdata->info->entry); + ug_json_push(json, ug_json_parse_entry, data, (void*)ugdata->info->entry); return UG_JSON_ERROR_NONE; } // write UgData, used by UgEntry with UG_ENTRY_CUSTOM -void ug_json_write_data (UgJson* json, const UgData* data) +void ug_json_write_data(UgJson* json, const UgData* data) { - ug_json_write_object_head (json); + ug_json_write_object_head(json); if (data->info->entry) - ug_json_write_entry (json, (void*) data, data->info->entry); - ug_json_write_object_tail (json); + ug_json_write_entry(json, (void*) data, data->info->entry); + ug_json_write_object_tail(json); } diff -Nru uget-2.0.2/uglib/UgData.h uget-2.2.2/uglib/UgData.h --- uget-2.0.2/uglib/UgData.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgData.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -44,63 +44,117 @@ extern "C" { #endif +typedef struct UgType UgType; +typedef struct UgTypeInfo UgTypeInfo; typedef struct UgData UgData; typedef struct UgDataInfo UgDataInfo; -typedef void (*UgAssignFunc) (void* instance, void* src); +typedef int (*UgAssignFunc) (void* instance, void* src); // ---------------------------------------------------------------------------- -// UgDataInfo +// UgTypeInfo: a base type info for UgDataInfo and UgetPluginInfo + +#define UG_TYPE_INFO_MEMBERS \ + const char* name; \ + uintptr_t size; \ + UgInitFunc init; \ + UgFinalFunc final + +struct UgTypeInfo +{ + UG_TYPE_INFO_MEMBERS; +/* // ------ UgTypeInfo members ------ + const char* name; + uintptr_t size; + UgInitFunc init; + UgFinalFunc final; + */ +}; + +// ---------------------------------------------------------------------------- +// UgType: a base type for UgData and UgetPlugin + +#define UG_TYPE_MEMBERS \ + const UgTypeInfo* info + +struct UgType +{ + UG_TYPE_MEMBERS; +// const UgTypeInfo* info; // UgType member +}; + +// void* ug_type_new(const UgTypeInfo* typeinfo); +void* ug_type_new(const void* typeinfo); +void ug_type_free(void* type); +void ug_type_init(void* type); +void ug_type_final(void* type); + +/* ---------------------------------------------------------------------------- + UgDataInfo + + UgTypeInfo + | + `-- UgDataInfo + */ #define UG_DATA_INFO_MEMBERS \ - const char* name; \ - uintptr_t size; \ - const UgEntry* entry; \ - UgInitFunc init; \ - UgFinalFunc final; \ - UgAssignFunc assign + UG_TYPE_INFO_MEMBERS; \ + UgAssignFunc assign; \ + const UgEntry* entry struct UgDataInfo { UG_DATA_INFO_MEMBERS; -// const char* name; -// uintptr_t size; -// const UgEntry* entry; -// UgInitFunc init; -// UgFinalFunc final; -// UgAssignFunc assign; +/* // ------ UgTypeInfo members ------ + const char* name; + uintptr_t size; + UgInitFunc init; + UgFinalFunc final; + + // ------ UgDataInfo members ------ + UgAssignFunc assign; + const UgEntry* entry; + */ }; -// ---------------------------------------------------------------------------- -// UgData +/* ---------------------------------------------------------------------------- + UgData: a group of data that store in UgInfo. + + UgType + | + `-- UgData + */ + #define UG_DATA_MEMBERS \ const UgDataInfo* info struct UgData { UG_DATA_MEMBERS; -// const UgDataInfo* info; +// const UgDataInfo* info; // UgType member }; -// UgData* ug_data_new (const UgDataInfo* dinfo); -// void ug_data_free (UgData* data); -void* ug_data_new (const UgDataInfo* dinfo); -void ug_data_free (void* data); - -void ug_data_init (void* data); -void ug_data_final (void* data); - -// UgData* ug_data_copy (UgData* data); -//void ug_data_assign (UgData* data, UgData* src); -void* ug_data_copy (void* data); -void ug_data_assign (void* data, void* src); +// UgData* ug_data_new(const UgDataInfo* dinfo); +// void ug_data_free(UgData* data); +#define ug_data_new ug_type_new +#define ug_data_free ug_type_free + +// void ug_data_init(void* data); +// void ug_data_final(void* data); +#define ug_data_init ug_type_new +#define ug_data_final ug_type_final + +// UgData* ug_data_copy(UgData* data); +// void ug_data_assign(UgData* data, UgData* src); +void* ug_data_copy(void* data); +int ug_data_assign(void* data, void* src); // UgJsonParseFunc for UgData, used by UgEntry with UG_ENTRY_CUSTOM -UgJsonError ug_json_parse_data (UgJson* json, - const char* name, const char* value, - void* data, void* none); +UgJsonError ug_json_parse_data(UgJson* json, + const char* name, const char* value, + void* data, void* none); // write UgData, used by UgEntry with UG_ENTRY_CUSTOM -void ug_json_write_data (UgJson* json, const UgData* data); +void ug_json_write_data(UgJson* json, const UgData* data); #ifdef __cplusplus @@ -114,29 +168,34 @@ namespace Ug { +typedef struct UgTypeInfo TypeInfo; typedef struct UgDataInfo DataInfo; // This one is for derived use only. No data members here. // Your derived struct/class must be C++11 standard-layout +template struct DataMethod { - inline void init (const UgDataInfo* info) { - *(UgDataInfo**)this = (UgDataInfo*)info; - ug_data_init ((void*)this); - } - inline void init () - { ug_data_init ((void*)this); } - inline void final (void) - { ug_data_final ((void*)this); } - - inline void assign (DataMethod* src) - { ug_data_assign ((void*)this, (void*)src); } - inline DataMethod* copy (void) - { return (DataMethod*) ug_data_copy ((void*)this); } + inline void* operator new(size_t size, const UgDataInfo* dinfo) + { return ug_data_new(dinfo); } + inline void operator delete(void* p) + { ug_data_free(p); } + + /* + inline void init() + { ug_data_init((void*)this); } + inline void final(void) + { ug_data_final((void*)this); } + */ + + inline int assign(DataType* src) + { return ug_data_assign((void*)this, (void*)src); } + inline DataType* copy(void) + { return (DataType*)ug_data_copy((void*)this); } }; // This one is for directly use only. You can NOT derived it. -struct Data : DataMethod, UgData {}; +struct Data : DataMethod, UgData {}; }; // namespace Ug diff -Nru uget-2.0.2/uglib/UgDefine.h uget-2.2.2/uglib/UgDefine.h --- uget-2.0.2/uglib/UgDefine.h 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgDefine.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/uglib/UgEntry.c uget-2.2.2/uglib/UgEntry.c --- uget-2.0.2/uglib/UgEntry.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgEntry.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -46,15 +46,15 @@ #define strtoull _strtoui64 #endif -UgJsonError ug_json_parse_entry (UgJson* json, - const char* name, const char* value, - void* dest, void* entry0) +UgJsonError ug_json_parse_entry(UgJson* json, + const char* name, const char* value, + void* dest, void* entry0) { const UgEntry* entry; UgJsonError error = UG_JSON_ERROR_NONE; for (entry = entry0; entry->type; entry++) { - if (entry->name && strcmp (entry->name, name) != 0) + if (entry->name && strcmp(entry->name, name) != 0) continue; // get destination dest = ((char*) dest) + entry->offset; @@ -72,14 +72,14 @@ case UG_ENTRY_INT: if (json->type == UG_JSON_NUMBER) - *(int*) dest = strtol (value, NULL, 10); + *(int*) dest = strtol(value, NULL, 10); else error = UG_JSON_ERROR_TYPE_NOT_MATCH; break; case UG_ENTRY_UINT: if (json->type == UG_JSON_NUMBER) - *(unsigned int*) dest = (unsigned int) strtoul (value, NULL, 10); + *(unsigned int*) dest = (unsigned int) strtoul(value, NULL, 10); else error = UG_JSON_ERROR_TYPE_NOT_MATCH; break; @@ -87,7 +87,7 @@ case UG_ENTRY_INT64: // C99 Standard if (json->type == UG_JSON_NUMBER) - *(int64_t*) dest = strtoll (value, NULL, 10); + *(int64_t*) dest = strtoll(value, NULL, 10); else error = UG_JSON_ERROR_TYPE_NOT_MATCH; break; @@ -95,21 +95,21 @@ case UG_ENTRY_UINT64: // C99 Standard if (json->type == UG_JSON_NUMBER) - *(uint64_t*) dest = strtoull (value, NULL, 10); + *(uint64_t*) dest = strtoull(value, NULL, 10); else error = UG_JSON_ERROR_TYPE_NOT_MATCH; break; case UG_ENTRY_DOUBLE: if (json->type == UG_JSON_NUMBER) - *(double*) dest = strtod (value, NULL); + *(double*) dest = strtod(value, NULL); else error = UG_JSON_ERROR_TYPE_NOT_MATCH; break; case UG_ENTRY_STRING: if (json->type == UG_JSON_STRING) - *(char**) dest = ug_strdup (value); + *(char**) dest = ug_strdup(value); else if (json->type == UG_JSON_NULL) *(char**) dest = NULL; else @@ -120,18 +120,18 @@ if (json->type != UG_JSON_OBJECT) return UG_JSON_ERROR_TYPE_NOT_MATCH; if (entry->param2) - ((UgInitFunc) entry->param2) (dest); - ug_json_push (json, ug_json_parse_entry, dest, entry->param1); + ((UgInitFunc)entry->param2)(dest); + ug_json_push(json, ug_json_parse_entry, dest, entry->param1); return UG_JSON_ERROR_NONE; case UG_ENTRY_ARRAY: if (json->type != UG_JSON_ARRAY) return UG_JSON_ERROR_TYPE_NOT_MATCH; - ug_json_push (json, (UgJsonParseFunc) entry->param1, dest, NULL); + ug_json_push(json, (UgJsonParseFunc) entry->param1, dest, NULL); return UG_JSON_ERROR_NONE; case UG_ENTRY_CUSTOM: - return ((UgJsonParseFunc) entry->param1) (json, name, value, + return ((UgJsonParseFunc)entry->param1)(json, name, value, dest, (void*)entry); default: @@ -144,7 +144,7 @@ // if entry->type != UG_ENTRY_OBJECT or UG_ENTRY_ARRAY // but json->type == UG_JSON_OBJECT or UG_JSON_ARRAY // if (json->type >= UG_JSON_OBJECT) { -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); // return UG_JSON_ERROR_TYPE_NOT_MATCH; // } @@ -153,7 +153,7 @@ // ---------------------------------------------------------------------------- -void ug_json_write_entry (UgJson* json, void* src, const UgEntry* entry) +void ug_json_write_entry(UgJson* json, void* src, const UgEntry* entry) { union { void* src; @@ -173,76 +173,84 @@ switch (entry->type) { case UG_ENTRY_BOOL: if (entry->name) - ug_json_write_string (json, entry->name); - ug_json_write_bool (json, *(value.pint)); + ug_json_write_string(json, entry->name); + ug_json_write_bool(json, *(value.pint)); break; case UG_ENTRY_INT: if (entry->name) - ug_json_write_string (json, entry->name); - ug_json_write_int (json, *(value.pint)); + ug_json_write_string(json, entry->name); + ug_json_write_int(json, *(value.pint)); break; case UG_ENTRY_UINT: if (entry->name) - ug_json_write_string (json, entry->name); - ug_json_write_uint (json, *(value.puint)); + ug_json_write_string(json, entry->name); + ug_json_write_uint(json, *(value.puint)); break; case UG_ENTRY_INT64: if (entry->name) - ug_json_write_string (json, entry->name); - ug_json_write_int64 (json, *(value.pint64)); + ug_json_write_string(json, entry->name); + ug_json_write_int64(json, *(value.pint64)); break; case UG_ENTRY_UINT64: if (entry->name) - ug_json_write_string (json, entry->name); - ug_json_write_uint64 (json, *(value.puint64)); + ug_json_write_string(json, entry->name); + ug_json_write_uint64(json, *(value.puint64)); break; case UG_ENTRY_DOUBLE: if (entry->name) - ug_json_write_string (json, entry->name); - ug_json_write_double (json, *(value.pdouble)); + ug_json_write_string(json, entry->name); + ug_json_write_double(json, *(value.pdouble)); break; case UG_ENTRY_STRING: - // for UG_ENTRY_SKIP_IF_NULL - if (entry->param1 && *(value.pstring) == NULL) + // for UG_ENTRY_NO_NULL + if ((entry->param2==UG_ENTRY_NO_NULL) && *(value.pstring) == NULL) break; if (entry->name) - ug_json_write_string (json, entry->name); - ug_json_write_string (json, *(value.pstring)); + ug_json_write_string(json, entry->name); + ug_json_write_string(json, *(value.pstring)); break; case UG_ENTRY_OBJECT: if (entry->name) - ug_json_write_string (json, entry->name); - ug_json_write_object_head (json); - ug_json_write_entry (json, value.src, entry->param1); - ug_json_write_object_tail (json); + ug_json_write_string(json, entry->name); + ug_json_write_object_head(json); + ug_json_write_entry(json, value.src, entry->param1); + ug_json_write_object_tail(json); break; case UG_ENTRY_ARRAY: + // Don't output if no UgJsonWriteFunc in entry->param2. + if (entry->param2 == NULL) + break; + if (entry->name) - ug_json_write_string (json, entry->name); - ug_json_write_array_head (json); - ((UgJsonWriteFunc) entry->param2) (json, value.src, (void*)entry); - ug_json_write_array_tail (json); + ug_json_write_string(json, entry->name); + ug_json_write_array_head(json); + ((UgJsonWriteFunc)entry->param2)(json, value.src, (void*)entry); + ug_json_write_array_tail(json); break; case UG_ENTRY_CUSTOM: + // Don't output if no UgJsonWriteFunc in entry->param2. + if (entry->param2 == NULL) + break; + if (entry->param2 == (void*) ug_json_write_value) { // for UgValue only if (value.pvalue->type == UG_VALUE_NONE) continue; if (value.pvalue->name == NULL) - ug_json_write_string (json, entry->name); + ug_json_write_string(json, entry->name); } else if (entry->name) - ug_json_write_string (json, entry->name); - ((UgJsonWriteFunc) entry->param2) (json, value.src, (void*)entry); + ug_json_write_string(json, entry->name); + ((UgJsonWriteFunc) entry->param2)(json, value.src, (void*)entry); break; default: diff -Nru uget-2.0.2/uglib/UgEntry.h uget-2.2.2/uglib/UgEntry.h --- uget-2.0.2/uglib/UgEntry.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgEntry.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -67,64 +67,65 @@ UG_ENTRY_CUSTOM, // JSON value, C functions were used. } UgEntryType; -// You can set this in UgEntry.param1 when UgEntry.type is UG_ENTRY_STRING. +// You can set this in UgEntry.param2 when UgEntry.type is UG_ENTRY_STRING. // ug_json_write_entry() will not output this field when value is NULL. -#define UG_ENTRY_SKIP_IF_NULL ((void*)(uintptr_t) 1) +#define UG_ENTRY_NO_NULL ((void*)(uintptr_t) 0x0001) // ---------------------------------------------------------------------------- // UgEntry: It can defines a object member and it's offset of data structure. -// ------------------------------------ -// sample for JSON - -// typedef struct -// { -// char* user; -// int number; -// } Foo; -// -// static UgEntry FooEntry[] = -// { -// { "user", offsetof (Foo, user), UG_ENTRY_STRING, NULL, NULL}, -// { "number", offsetof (Foo, number), UG_ENTRY_INT, NULL, NULL}, -// { NULL } // null-terminated -// }; -// -// JSON output: -// { -// "user": "guest3", -// "number": 2500, -// } - -// if UgEntry.type == 0, this entry is null-terminated. - -// if UgEntry.name == NULL, it can match no name or any name. -// it usually uses at first or last entry. - -// UgEntryType = UG_ENTRY_STRING -// If you don't want to output anything when string value is NULL, -// set UgEntry.param1 to UG_ENTRY_SKIP_IF_NULL. - -// UgEntryType = UG_ENTRY_OBJECT -// UgEntry.param1 pointer to UgEntry -// UgEntry.param2 pointer to UgInitFunc -// --------- -// if (UgInitFunc) -// UgInitFunc (UserData); - -// UgEntryType = UG_ENTRY_ARRAY -// UgEntry.param1 = UgJsonParseFunc, how to parse JSON array elements. -// UgEntry.param2 = UgJsonWriteFunc, how to write JSON array elements. -// --------- -// parser call UgEntry.param1 to parse JSON array. -// writer call UgEntry.param2 to write JSON array. - -// UgEntryType = UG_ENTRY_CUSTOM -// UgEntry.param1 = UgJsonParseFunc, how to parse JSON value. -// UgEntry.param2 = UgJsonWriteFunc, how to write JSON value. -// --------- -// parser call UgEntry.param1 to parse JSON value. -// writer call UgEntry.param2 to write JSON value. +/* + // --- UgEntry sample for JSON --- + typedef struct + { + char* user; + int number; + } Foo; + + static UgEntry FooEntry[] = + { + { "user", offsetof(Foo, user), UG_ENTRY_STRING, NULL, NULL}, + { "number", offsetof(Foo, number), UG_ENTRY_INT, NULL, NULL}, + { NULL } // null-terminated + }; + + // --- JSON output: --- + { + "user": "guest3", + "number": 2500, + } + + ------------------------------------------------------- + if UgEntry.type == 0, this entry is null-terminated. + + if UgEntry.name == NULL, it can match no name or any name. + it usually uses at first or last entry. + + UgEntryType = UG_ENTRY_STRING + If you don't want to output anything when string value is NULL, + set UG_ENTRY_NO_NULL at UgEntry.param2. + + UgEntryType = UG_ENTRY_OBJECT + UgEntry.param1 pointer to UgEntry + UgEntry.param2 pointer to UgInitFunc + --------- + if (UgInitFunc) + UgInitFunc(UserData); + + UgEntryType = UG_ENTRY_ARRAY + UgEntry.param1 = UgJsonParseFunc, how to parse JSON array elements. + UgEntry.param2 = UgJsonWriteFunc, how to write JSON array elements. + --------- + parser call UgEntry.param1 to parse JSON array. + writer call UgEntry.param2 to write JSON array. + + UgEntryType = UG_ENTRY_CUSTOM + UgEntry.param1 = UgJsonParseFunc, how to parse JSON value. + UgEntry.param2 = UgJsonWriteFunc, how to write JSON value. + --------- + parser call UgEntry.param1 to parse JSON value. + writer call UgEntry.param2 to write JSON value. + */ struct UgEntry { @@ -137,12 +138,12 @@ }; // parse JSON value by UgEntry -UgJsonError ug_json_parse_entry (UgJson* json, - const char* name, const char* value, - void* dest, void* entry); +UgJsonError ug_json_parse_entry(UgJson* json, + const char* name, const char* value, + void* dest, void* entry); // write JSON value by UgEntry -void ug_json_write_entry (UgJson* json, void* src, const UgEntry* entry); +void ug_json_write_entry(UgJson* json, void* src, const UgEntry* entry); #ifdef __cplusplus } diff -Nru uget-2.0.2/uglib/UgFileUtil.c uget-2.2.2/uglib/UgFileUtil.c --- uget-2.0.2/uglib/UgFileUtil.c 2015-08-18 01:17:31.000000000 +0000 +++ uget-2.2.2/uglib/UgFileUtil.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -38,20 +38,18 @@ #include #endif -#ifdef _MSC_VER -#define _CRT_SECURE_NO_WARNINGS -#endif - +#include #include #include +#include +#include // ug_strdup #include -#include // ug_create_dir -#include // ug_strdup #if defined _WIN32 || defined _WIN64 +#define _CRT_SECURE_NO_WARNINGS // _MSC_VER #include +#include // _wmkdir(), _wrmdir() #include // struct utimbuf -//#include // SetSuspendState() #else #include #include // struct utimbuf @@ -136,6 +134,47 @@ // file and directory functions #if defined _WIN32 || defined _WIN64 + +int ug_create_dir (const char *dir_utf8) +{ + wchar_t *wfilename = ug_utf8_to_utf16 (dir_utf8, -1, NULL); + int save_errno; + int retval; + + if (wfilename == NULL) { + errno = EINVAL; + return -1; + } + + retval = _wmkdir (wfilename); + save_errno = errno; + + ug_free (wfilename); + + errno = save_errno; + return retval; +} + +int ug_delete_dir (const char *dir_utf8) +{ + wchar_t *wfilename = ug_utf8_to_utf16 (dir_utf8, -1, NULL); + int save_errno; + int retval; + + if (wfilename == NULL) { + errno = EINVAL; + return -1; + } + + retval = _wrmdir (wfilename); + save_errno = errno; + + ug_free (wfilename); + + errno = save_errno; + return retval; +} + int ug_file_is_exist (const char* filename) { int attributes; @@ -167,14 +206,67 @@ #elif defined HAVE_GLIB +int ug_create_dir (const gchar *dir_utf8) +{ + if (g_get_filename_charsets (NULL)) + return g_mkdir (dir_utf8, 0755); + else { + gchar *cp_filename = g_filename_from_utf8 (dir_utf8, -1, NULL, NULL, NULL); + int save_errno; + int retval; + + if (cp_filename == NULL) { + errno = EINVAL; + return -1; + } + + retval = g_mkdir (cp_filename, 0755); + save_errno = errno; + + g_free (cp_filename); + + errno = save_errno; + return retval; + } +} + +int ug_delete_dir (const gchar *dir_utf8) +{ + if (g_get_filename_charsets (NULL)) + return g_rmdir (dir_utf8); + else { + gchar *cp_filename = g_filename_from_utf8 (dir_utf8, -1, NULL, NULL, NULL); + int save_errno; + int retval; + + if (cp_filename == NULL) { + errno = EINVAL; + return -1; + } + + retval = g_rmdir (cp_filename); + save_errno = errno; + + g_free (cp_filename); + + errno = save_errno; + return retval; + } +} + int ug_file_is_exist (const char* filename) { gchar *name; int result; - name = g_filename_from_utf8 (filename, -1, NULL, NULL, NULL); - result = access (name, F_OK); - g_free (name); + if (g_get_filename_charsets (NULL)) + result = g_access (filename, F_OK); + else { + name = g_filename_from_utf8 (filename, -1, NULL, NULL, NULL); + result = g_access (name, F_OK); + g_free (name); + } + if (result == -1) return FALSE; return TRUE; @@ -186,14 +278,21 @@ gchar *cp_dir; int result; - cp_dir = g_filename_from_utf8 (dir, -1, NULL, NULL, NULL); - result = stat (cp_dir, &s) == 0; - g_free (cp_dir); + if (g_get_filename_charsets (NULL)) + result = g_stat (dir, &s); + else { + cp_dir = g_filename_from_utf8 (dir, -1, NULL, NULL, NULL); + result = g_stat (cp_dir, &s) == 0; + g_free (cp_dir); + } + if (result == 0) return S_ISDIR (s.st_mode); return FALSE; } +#elif defined USE__ANDROID__SAF + #else int ug_file_is_exist (const char* filename) @@ -214,6 +313,7 @@ #endif // _WIN32 || _WIN64 +#ifndef USE__ANDROID__SAF int ug_create_dir_all (const char* dir, int len) { const char* dir_end; @@ -222,9 +322,19 @@ if (len == -1) len = strlen (dir); + if (len > 1 && dir[len-1] == UG_DIR_SEPARATOR) + len--; dir_end = dir + len; element_end = dir; + // quick check + element_os = ug_strndup (dir, len); + if (ug_file_is_exist (element_os) && ug_file_is_dir(element_os)) { + ug_free (element_os); + return 0; + } + ug_free (element_os); + for (;;) { // skip directory separator "\\\\" or "//" for (; element_end < dir_end; element_end++) { @@ -244,8 +354,8 @@ if (element_os == NULL) break; - if (ug_create_dir (element_os) == -1) { - if (ug_file_is_exist (element_os) == FALSE) { + if (ug_file_is_exist (element_os) == FALSE) { + if (ug_create_dir (element_os) == -1) { ug_free (element_os); return -1; } @@ -254,6 +364,7 @@ } return -1; } +#endif // USE__ANDROID__SAF // ---------------------------------------------------------------------------- // File I/O diff -Nru uget-2.0.2/uglib/UgFileUtil.h uget-2.2.2/uglib/UgFileUtil.h --- uget-2.0.2/uglib/UgFileUtil.h 2015-03-25 09:15:43.000000000 +0000 +++ uget-2.2.2/uglib/UgFileUtil.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -90,10 +90,21 @@ // ---------------------------------------------------------------------------- // file & directory functions -int ug_file_is_exist (const char* file); -int ug_file_is_dir (const char* file); -int ug_create_dir_all (const char* dir, int len); -//int ug_delete_dir_all (const char* dir, int len); +int ug_file_is_exist (const char* file_utf8); +int ug_file_is_dir (const char* file_utf8); + +// return -1 if error +#if defined _WIN32 || defined _WIN64 || defined HAVE_GLIB || defined USE__ANDROID__SAF +int ug_create_dir (const char *dir_utf8); +int ug_delete_dir (const char *dir_utf8); +#else +# define ug_create_dir(dir) mkdir(dir,0755) +# define ug_delete_dir rmdir +#endif + +// return -1 if error +int ug_create_dir_all (const char* dir_utf8, int len); +//int ug_delete_dir_all (const char* dir_utf8, int len); // ---------------------------------------------------------------------------- // File I/O diff -Nru uget-2.0.2/uglib/UgHtml.c uget-2.2.2/uglib/UgHtml.c --- uget-2.0.2/uglib/UgHtml.c 2015-03-27 09:04:37.000000000 +0000 +++ uget-2.2.2/uglib/UgHtml.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/uglib/UgHtmlEntry.c uget-2.2.2/uglib/UgHtmlEntry.c --- uget-2.0.2/uglib/UgHtmlEntry.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgHtmlEntry.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/uglib/UgHtmlEntry.h uget-2.2.2/uglib/UgHtmlEntry.h --- uget-2.0.2/uglib/UgHtmlEntry.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgHtmlEntry.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -66,31 +66,31 @@ const char** attribute_values, void* dest, void* entry); +/* + UgHtmlEntry.name = element_name + UgHtmlEntry.offset = offset of structure -// UgHtmlEntry.name = element_name -// UgHtmlEntry.offset = offset of structure - -// if UgHtmlEntry.parser == NULL, this entry is null-terminated. - -// if UgHtmlEntry.name == NULL, it can match any name. -// it usually uses at first or last entry. + if UgHtmlEntry.parser == NULL, this entry is null-terminated. -// if UgHtmlEntry.parser == ug_html_parser_custom -// UgEntry.param1 = start element function (UgHtmlParserStartElementFunc) -// UgEntry.param2 = custom writer function + if UgHtmlEntry.name == NULL, it can match any name. + it usually uses at first or last entry. -// UgHtmlEntry.parser == ug_html_parser_int, ug_html_parser_string...etc -// UgHtmlEntry.param2 = UgHtmlEntry for attribute + if UgHtmlEntry.parser == ug_html_parser_custom + UgEntry.param1 = start element function (UgHtmlParserStartElementFunc) + UgEntry.param2 = custom writer function -// UgHtmlEntry.parser == ug_html_parser_string -// If you don't want to output anything when string value is NULL, -// set UgHtmlEntry.param1 != NULL. -// UgHtmlEntry.param2 = UgHtmlEntry for attribute + UgHtmlEntry.parser == ug_html_parser_int, ug_html_parser_string...etc + UgHtmlEntry.param2 = UgHtmlEntry for attribute -// UgHtmlEntry.parser == ug_html_parser_entry -// UgHtmlEntry.param1 = UgHtmlEntry -// UgHtmlEntry.param2 = UgHtmlEntry for attribute + UgHtmlEntry.parser == ug_html_parser_string + If you don't want to output anything when string value is NULL, + set NULL at UgHtmlEntry.param1. + UgHtmlEntry.param2 = UgHtmlEntry for attribute + UgHtmlEntry.parser == ug_html_parser_entry + UgHtmlEntry.param1 = UgHtmlEntry + UgHtmlEntry.param2 = UgHtmlEntry for attribute + */ // ------------------------------------ // parser for unknown element diff -Nru uget-2.0.2/uglib/UgHtmlFilter.c uget-2.2.2/uglib/UgHtmlFilter.c --- uget-2.0.2/uglib/UgHtmlFilter.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgHtmlFilter.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/uglib/UgHtmlFilter.h uget-2.2.2/uglib/UgHtmlFilter.h --- uget-2.0.2/uglib/UgHtmlFilter.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgHtmlFilter.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/uglib/UgHtml.h uget-2.2.2/uglib/UgHtml.h --- uget-2.0.2/uglib/UgHtml.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgHtml.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -70,7 +70,7 @@ // stack of parser // index 0, 2, 4, 6... : UgHtmlParser* parser - // index 1, 3, 5, 7... : void* user_data + // index 1, 3, 5, 7... : void* user_data UgArrayPtr stack; // attribute name & value for callback @@ -97,12 +97,13 @@ void ug_html_push (UgHtml* uhtml, const UgHtmlParser* parser, void* dest, void* data); void ug_html_pop (UgHtml* uhtml); +// use ug_html_push() to push UgHtmlParser before you call thus function. +int ug_html_parse_file (UgHtml* uhtml, const char* file_utf8); + void ug_html_begin_parse (UgHtml* uhtml); UgHtmlError ug_html_end_parse (UgHtml* uhtml); UgHtmlError ug_html_parse (UgHtml* uhtml, const char* buffer, int buffer_len); -int ug_html_parse_file (UgHtml* uhtml, const char* file_utf8); - // ---------------------------------------------------------------------------- // UgHtmlParser @@ -113,6 +114,17 @@ void* dest, void* data); +typedef void (*UgHtmlParserEndElementFunc) (UgHtml* uhtml, + const char* element_name, + void* dest, + void* data); + +typedef void (*UgHtmlParserTextFunc) (UgHtml* uhtml, + const char* text, + int text_len, + void* dest, + void* data); + // This one is similar to GMarkupParser struct UgHtmlParser { @@ -126,18 +138,20 @@ // void* data); /* Called for close tags */ - void (*end_element) (UgHtml* uhtml, - const char* element_name, - void* dest, - void* data); + UgHtmlParserEndElementFunc end_element; +// void (*end_element) (UgHtml* uhtml, +// const char* element_name, +// void* dest, +// void* data); /* Called for character data */ /* text is not null-terminated */ - void (*text) (UgHtml* uhtml, - const char* text, - int text_len, - void* dest, - void* data); + UgHtmlParserTextFunc text; +// void (*text) (UgHtml* uhtml, +// const char* text, +// int text_len, +// void* dest, +// void* data); }; diff -Nru uget-2.0.2/uglib/UgInfo.c uget-2.2.2/uglib/UgInfo.c --- uget-2.0.2/uglib/UgInfo.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgInfo.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -43,12 +43,12 @@ static UgRegistry* ug_info_registry; -UgRegistry* ug_info_get_registry (void) +UgRegistry* ug_info_get_registry(void) { return ug_info_registry; } -void ug_info_set_registry (UgRegistry* registry) +void ug_info_set_registry(UgRegistry* registry) { ug_info_registry = registry; } @@ -56,20 +56,53 @@ // ---------------------------------------------------------------------------- // UgInfo -void ug_info_init (UgInfo* info, int allocated_len, int cache_len) +UgInfo* ug_info_new(int allocated_length, int cache_length) +{ + UgInfo* info; + +#ifdef HAVE_GLIB + info = g_slice_alloc(sizeof(UgInfo)); +#else + info = ug_malloc(sizeof(UgInfo)); +#endif // HAVE_GLIB + ug_info_init(info, allocated_length, cache_length); + return info; +} + +void ug_info_ref(UgInfo* info) +{ + info->ref_count++; +} + +void ug_info_unref(UgInfo* info) +{ + if (--info->ref_count == 0) { + ug_info_final(info); +#ifdef HAVE_GLIB + g_slice_free1(sizeof(UgInfo), info); +#else + ug_free(info); +#endif // HAVE_GLIB + } +} + +void ug_info_init(UgInfo* info, int allocated_length, int cache_length) { int index; - ug_array_init (info, sizeof (UgPair), allocated_len + cache_len); - info->length = cache_len; - info->cache_len = cache_len; - for (index = 0; index < info->allocated; index++) { + ug_array_init(info, sizeof(UgPair), allocated_length + cache_length); + info->length = cache_length; + info->cache_length = cache_length; + info->ref_count = 1; + + // clear cache + for (index = 0; index < info->length; index++) { info->at[index].key = NULL; info->at[index].data = NULL; } } -void ug_info_final (UgInfo* info) +void ug_info_final(UgInfo* info) { UgPair* cur; UgPair* end; @@ -78,87 +111,89 @@ if (cur->key == NULL) continue; if (cur->data) - ug_data_free (cur->data); + ug_data_free(cur->data); } - ug_array_clear (info); + ug_array_clear(info); } -UgPair* ug_info_find (UgInfo* info, const UgDataInfo* key, int* inserted_index) +UgPair* ug_info_find(UgInfo* info, const UgDataInfo* key, int* index) { - UgPair* low; + UgPair* end; UgPair* cur; - UgPair* high; - const UgDataInfo* cur_key; - for (cur = info->at, low = cur + info->cache_len; cur < low; cur++) { + // find key in cache space + for (cur = info->at, end = cur + info->cache_length; cur < end; cur++) { if (cur->key == key) return cur; } - high = info->at + info->length; - while (low < high) { -// cur = low + ((high - low) / 2); - cur = low + ((high - low) >> 1); - cur_key = cur->key; - - if (cur_key == key) - return cur; - else if (cur_key > key) - high = cur; - else if (cur_key < key) - low = cur + 1; - } - - if (inserted_index) { - if (cur < low) - cur++; - *inserted_index = cur - info->at; - } - return NULL; + // find key without cache space + info->at += info->cache_length; + info->length -= info->cache_length; + cur = ug_array_find_sorted(info, &key, ug_array_compare_pointer, index); + info->at -= info->cache_length; + info->length += info->cache_length; + if (index) + index[0] += info->cache_length; + return cur; } -void* ug_info_realloc (UgInfo* info, const UgDataInfo* key) +void* ug_info_realloc(UgInfo* info, const UgDataInfo* key) { UgPair* cur; int index; - cur = ug_info_find (info, key, &index); + cur = ug_info_find(info, key, &index); if (cur == NULL) { - ug_array_alloc (info, 1); - memmove (info->at + index + 1, info->at + index, - sizeof (UgPair) * (info->length - index - 1)); - cur = info->at + index; + cur = ug_array_insert(info, index, 1); cur->key = (void*) key; - cur->data = ug_data_new (key); + cur->data = ug_data_new(key); } else if (cur->data == NULL) - cur->data = ug_data_new (key); + cur->data = ug_data_new(key); return cur->data; } -void ug_info_remove (UgInfo* info, const UgDataInfo* key) +void ug_info_remove(UgInfo* info, const UgDataInfo* key) { UgPair* cur; - cur = ug_info_find (info, key, NULL); + cur = ug_info_find(info, key, NULL); if (cur && cur->data) { - ug_data_free (cur->data); + ug_data_free(cur->data); cur->data = NULL; } } -void* ug_info_get (UgInfo* info, const UgDataInfo* key) +void* ug_info_set(UgInfo* info, const UgDataInfo* key, void* data) { UgPair* cur; + int index; + void* result; - cur = ug_info_find (info, key, NULL); + cur = ug_info_find(info, key, &index); + if (cur == NULL) { + cur = ug_array_insert(info, index, 1); + cur->key = (void*) key; + cur->data = NULL; + } + result = cur->data; + cur->data = data; + return result; +} + +void* ug_info_get(UgInfo* info, const UgDataInfo* key) +{ + UgPair* cur; + + cur = ug_info_find(info, key, NULL); if (cur == NULL) return NULL; return cur->data; } -void ug_info_assign (UgInfo* info, UgInfo* src, const UgDataInfo* exclude_info) +void ug_info_assign(UgInfo* info, UgInfo* src, const UgDataInfo* exclude_info) { int index; UgPair* pair; @@ -170,13 +205,13 @@ continue; if (pair->key == exclude_info) continue; - data = ug_info_realloc (info, pair->key); - ug_data_assign (data, pair->data); + data = ug_info_realloc(info, pair->key); + ug_data_assign(data, pair->data); } } // UgJsonParseFunc for key/data pairs in UgInfo -static UgJsonError ug_json_parse_info_reg (UgJson* json, +static UgJsonError ug_json_parse_info_reg(UgJson* json, const char* name, const char* value, void* info, void* infoRegistry) { @@ -192,57 +227,77 @@ if (registry) { if (registry->sorted == FALSE) - ug_registry_sort (registry); - cur = ug_registry_find (registry, name, NULL); + ug_registry_sort(registry); + cur = ug_registry_find(registry, name, NULL); if (cur) { - ug_json_push (json, ug_json_parse_entry, - ug_info_realloc (info, cur->data), + ug_json_push(json, ug_json_parse_entry, + ug_info_realloc(info, cur->data), (void*)((UgDataInfo*)cur->data)->entry); return UG_JSON_ERROR_NONE; } } if (json->type >= UG_JSON_OBJECT) - ug_json_push (json, ug_json_parse_unknown, NULL, NULL); + ug_json_push(json, ug_json_parse_unknown, NULL, NULL); return UG_JSON_ERROR_CUSTOM; } // ---------------- +// JSON parser/writer that used with UG_ENTRY_CUSTOM. -// JSON parser for UgInfo. -UgJsonError ug_json_parse_info (UgJson* json, - const char* name, const char* value, - void* info, void* none) +// JSON parser for UgInfo pointer. +UgJsonError ug_json_parse_info_ptr(UgJson* json, + const char* name, const char* value, + void** pinfo, void* none) { + UgInfo* info = *pinfo; + // UgInfo's type is UG_JSON_OBJECT if (json->type != UG_JSON_OBJECT) { // if (json->type == UG_JSON_ARRAY) -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); return UG_JSON_ERROR_TYPE_NOT_MATCH; } - ug_json_push (json, ug_json_parse_info_reg, info, NULL); + // confirm that target UgInfo is empty. This can avoid parsing UgInfo repeatedly. + if (info->length == info->cache_length) + ug_json_push(json, ug_json_parse_info_reg, info, NULL); return UG_JSON_ERROR_NONE; } -// JSON writer for UgInfo. -void ug_json_write_info (UgJson* json, const UgInfo* info) +// JSON writer for UgInfo pointer. +void ug_json_write_info_ptr(UgJson* json, UgInfo** pinfo) { + UgInfo* info = *pinfo; UgPair* cur; UgPair* end; - ug_json_write_object_head (json); + ug_json_write_object_head(json); for (cur = info->at, end = cur + info->length; cur < end; cur++) { if (cur->data == NULL || ((UgDataInfo*)cur->key)->entry == NULL) continue; - ug_json_write_string (json, ((UgDataInfo*)cur->key)->name); - ug_json_write_object_head (json); - ug_json_write_entry (json, cur->data, + ug_json_write_string(json, ((UgDataInfo*)cur->key)->name); + ug_json_write_object_head(json); + ug_json_write_entry(json, cur->data, ((UgDataInfo*)cur->key)->entry); - ug_json_write_object_tail (json); + ug_json_write_object_tail(json); } - ug_json_write_object_tail (json); + ug_json_write_object_tail(json); +} + +// JSON parser for UgInfo. +UgJsonError ug_json_parse_info(UgJson* json, + const char* name, const char* value, + void* info, void* none) +{ + return ug_json_parse_info_ptr(json, name, value, &info, none); +} + +// JSON writer for UgInfo. +void ug_json_write_info(UgJson* json, UgInfo* info) +{ + ug_json_write_info_ptr(json, &info); } diff -Nru uget-2.0.2/uglib/UgInfo.h uget-2.2.2/uglib/UgInfo.h --- uget-2.0.2/uglib/UgInfo.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgInfo.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -47,83 +47,123 @@ typedef struct UgInfo UgInfo; -// ---------------------------------------------------------------------------- -// UgRegistry for UgInfo +/* ---------------------------------------------------------------------------- + This UgRegistry used by UgInfo. + User can only store UgDataInfo in this UgRegistry. + key pointer to UgDataInfo.name + data pointer to UgDataInfo + */ -UgRegistry* ug_info_get_registry (void); -void ug_info_set_registry (UgRegistry* registry); +UgRegistry* ug_info_get_registry(void); +void ug_info_set_registry(UgRegistry* registry); -// ---------------------------------------------------------------------------- -// UgInfo +/* ---------------------------------------------------------------------------- + UgInfo - collection of UgDataInfo and UgData + - It uses UgDataInfo to get/alloc UgData. + key pointer to UgDataInfo + data pointer to UgData + */ -void ug_info_init (UgInfo* info, int allocated_len, int cache_len); -void ug_info_final (UgInfo* info); +// ---------------------------------------------------------------------------- +// UgInfo functions -void* ug_info_realloc (UgInfo* info, const UgDataInfo* key); -void ug_info_remove (UgInfo* info, const UgDataInfo* key); -void* ug_info_get (UgInfo* info, const UgDataInfo* key); -UgPair* ug_info_find (UgInfo* info, const UgDataInfo* key, int* inserted_index); +UgInfo* ug_info_new(int allocated_length, int cache_length); +void ug_info_ref(UgInfo* info); +void ug_info_unref(UgInfo* info); + +void ug_info_init(UgInfo* info, int allocated_length, int cache_length); +void ug_info_final(UgInfo* info); + +// ug_info_get() and ug_info_realloc() return UgData +// ug_info_set() replace old data by new one. It return old UgData +void* ug_info_realloc(UgInfo* info, const UgDataInfo* key); +void ug_info_remove(UgInfo* info, const UgDataInfo* key); +void* ug_info_get(UgInfo* info, const UgDataInfo* key); +void* ug_info_set(UgInfo* info, const UgDataInfo* key, void* new_data); +UgPair* ug_info_find(UgInfo* info, const UgDataInfo* key, int* inserted_index); -void ug_info_assign (UgInfo* info, UgInfo* src, const UgDataInfo* exclude); +void ug_info_assign(UgInfo* info, UgInfo* src, const UgDataInfo* exclude); // ---------------- -// JSON parser that used with UG_ENTRY_CUSTOM. -// if (UgRegistry*)registry == NULL, use default registry. -UgJsonError ug_json_parse_info (UgJson* json, - const char* name, const char* value, - void* info, void* registry); -// JSON writer that used with UG_ENTRY_CUSTOM. -void ug_json_write_info (UgJson* json, const UgInfo* info); - -// JSON: -// -// { -// "progress": { -// }, -// "common": { -// }, -// "log": { -// } -// } -// +// JSON parser/writer that used with UG_ENTRY_CUSTOM. +// if 'registry' is NULL, use default registry. + +UgJsonError ug_json_parse_info_ptr(UgJson* json, + const char* name, const char* value, + void** pinfo, void* registry); +void ug_json_write_info_ptr(UgJson* json, UgInfo** pinfo); + +UgJsonError ug_json_parse_info(UgJson* json, + const char* name, const char* value, + void* info, void* registry); +void ug_json_write_info(UgJson* json, UgInfo* info); + +/* + // --- JSON output sample --- + { + "progress": { + }, + "common": { + }, + "log": { + } + } + */ #ifdef __cplusplus } #endif +// ---------------------------------------------------------------------------- +// UgInfo structure + struct UgInfo { - UG_ARRAY_MEMBERS (UgPair); -// void** at; -// int length; -// int allocated; -// int element_size; + UG_ARRAY_MEMBERS(UgPair); +/* // ------ UgArray members ------ + UgPair* at; + int length; + int allocated; + int element_size; + */ - int cache_len; + int cache_length; + int ref_count; #ifdef __cplusplus // C++11 standard-layout - inline UgInfo (void) {} - inline UgInfo (int allocated_len, int cache_len) - { ug_info_init (this, allocated_len, cache_len); } - - inline void init (int allocated_len, int cache_len) - { ug_info_init (this, allocated_len, cache_len); } - inline void final (void) - { ug_info_final (this); } - - inline void remove (const UgDataInfo* key) - { ug_info_remove (this, key); } - inline Ug::DataMethod* realloc (const UgDataInfo* key) - { return (Ug::DataMethod*)ug_info_realloc (this, key); } - inline Ug::DataMethod* get (const UgDataInfo* key) - { return (Ug::DataMethod*)ug_info_get (this, key); } + inline void* operator new(size_t size, int allocated_length, int cache_length) + { return ug_info_new(allocated_length, cache_length); } + inline void operator delete(void* p) + { ug_info_unref((UgInfo*)p); } + + inline void ref() + { ug_info_ref(this); } + inline void unref() + { ug_info_unref(this); } + + inline void init(int allocatedLength, int cacheLength) + { ug_info_init(this, allocatedLength, cacheLength); } + inline void final(void) + { ug_info_final(this); } + + inline void remove(const UgDataInfo* key) + { ug_info_remove(this, key); } + inline void* realloc(const UgDataInfo* key) + { return ug_info_realloc(this, key); } + inline void* get(const UgDataInfo* key) + { return ug_info_get(this, key); } + inline void* set(const UgDataInfo* key, void* new_data) + { return ug_info_set(this, key, new_data); } + + inline void assign(UgInfo* src, const UgDataInfo* exclude) + { ug_info_assign(this, src, exclude); } // static method - static inline UgRegistry* getRegistry (void) - { return ug_info_get_registry (); } - static inline void setRegistry (UgRegistry* registry) - { ug_info_set_registry (registry); } + static inline UgRegistry* getRegistry(void) + { return ug_info_get_registry(); } + static inline void setRegistry(UgRegistry* registry) + { ug_info_set_registry(registry); } #endif // __cplusplus }; diff -Nru uget-2.0.2/uglib/UgJson.c uget-2.2.2/uglib/UgJson.c --- uget-2.0.2/uglib/UgJson.c 2015-04-30 23:37:53.000000000 +0000 +++ uget-2.2.2/uglib/UgJson.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -125,7 +125,6 @@ // clear stack stack_length = json->stack.length; - json->stack.length = 0; if (stack_length > PARSER_STACK_UNIT) return UG_JSON_ERROR_UNCOMPLETED; @@ -150,9 +149,11 @@ } // parse remain value ug_json_call_parser (json); + json->stack.length = 0; return (UgJsonError) json->error; } + json->stack.length = 0; return UG_JSON_ERROR_NONE; } @@ -497,7 +498,7 @@ json->state = UG_JSON_STRING; json->buf.length -= 4; -// json->count = 0; // json->count must reset to 0 +// json->count = 0; // reset json->count to 0 // get UTF-16 value from hex string putf = json->buf.at + json->buf.length; for (value = 0; json->count > 0; json->count--, putf++) { @@ -521,8 +522,8 @@ json->buf.at[json->buf.length++] = 0x80 | ((value >> 0) & 0x3F); } else { - json->buf.at[json->buf.length++] = 0xC0 | ((value >> 12) & 0x1F); - json->buf.at[json->buf.length++] = 0x80 | ((value >> 6) & 0x3F); + json->buf.at[json->buf.length++] = 0xC0 | ((value >> 6) & 0x1F); + json->buf.at[json->buf.length++] = 0x80 | ((value >> 0) & 0x3F); } } break; @@ -850,7 +851,7 @@ } va_start (arg_list, format); -#ifdef _MSC_VER // for M$ C only +#ifdef _MSC_VER // for MS C only length = _vscprintf (format, arg_list) + 1; #else // for C99 standard length = vsnprintf (NULL, 0, format, arg_list) + 1; diff -Nru uget-2.0.2/uglib/UgJson-custom.c uget-2.2.2/uglib/UgJson-custom.c --- uget-2.0.2/uglib/UgJson-custom.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgJson-custom.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -49,134 +49,197 @@ // ---------------------------------------------------------------------------- -UgJsonError ug_json_parse_int_string (UgJson* json, - const char* name, const char* value, - void* dest, void* data) +UgJsonError ug_json_parse_int_string(UgJson* json, + const char* name, const char* value, + void* dest, void* data) { // if (json->type >= UG_JSON_OBJECT) { -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); // return UG_JSON_ERROR_TYPE_NOT_MATCH; // } if (json->type == UG_JSON_STRING || json->type == UG_JSON_NUMBER) - *(int*) dest = strtol (value, NULL, 10); + *(int*) dest = strtol(value, NULL, 10); else return UG_JSON_ERROR_TYPE_NOT_MATCH; return UG_JSON_ERROR_NONE; } -UgJsonError ug_json_parse_uint_string (UgJson* json, - const char* name, const char* value, - void* dest, void* data) +UgJsonError ug_json_parse_uint_string(UgJson* json, + const char* name, const char* value, + void* dest, void* data) { // if (json->type >= UG_JSON_OBJECT) { -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); // return UG_JSON_ERROR_TYPE_NOT_MATCH; // } if (json->type == UG_JSON_STRING || json->type == UG_JSON_NUMBER) - *(unsigned int*) dest = strtoul (value, NULL, 10); + *(unsigned int*) dest = strtoul(value, NULL, 10); else return UG_JSON_ERROR_TYPE_NOT_MATCH; return UG_JSON_ERROR_NONE; } -UgJsonError ug_json_parse_int64_string (UgJson* json, - const char* name, const char* value, - void* dest, void* data) +UgJsonError ug_json_parse_int64_string(UgJson* json, + const char* name, const char* value, + void* dest, void* data) { // if (json->type >= UG_JSON_OBJECT) { -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); // return UG_JSON_ERROR_TYPE_NOT_MATCH; // } if (json->type == UG_JSON_STRING || json->type == UG_JSON_NUMBER) - *(int64_t*) dest = strtoll (value, NULL, 10); + *(int64_t*) dest = strtoll(value, NULL, 10); else return UG_JSON_ERROR_TYPE_NOT_MATCH; return UG_JSON_ERROR_NONE; } -UgJsonError ug_json_parse_double_string (UgJson* json, - const char* name, const char* value, - void* dest, void* data) +UgJsonError ug_json_parse_double_string(UgJson* json, + const char* name, const char* value, + void* dest, void* data) { // if (json->type >= UG_JSON_OBJECT) { -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); // return UG_JSON_ERROR_TYPE_NOT_MATCH; // } if (json->type == UG_JSON_STRING || json->type == UG_JSON_NUMBER) - *(double*) dest = strtod (value, NULL); + *(double*) dest = strtod(value, NULL); else return UG_JSON_ERROR_TYPE_NOT_MATCH; return UG_JSON_ERROR_NONE; } -void ug_json_write_int_string (UgJson* json, int* value) +void ug_json_write_int_string(UgJson* json, int* value) { int len; char* buf; - len = snprintf (NULL, 0, "%d", *value) + 1; - buf = ug_malloc (len); - snprintf (buf, len, "%d", *value); - ug_json_write_string (json, buf); - ug_free (buf); + len = snprintf(NULL, 0, "%d", *value) + 1; + buf = ug_malloc(len); + snprintf(buf, len, "%d", *value); + ug_json_write_string(json, buf); + ug_free(buf); } -void ug_json_write_uint_string (UgJson* json, unsigned int* value) +void ug_json_write_uint_string(UgJson* json, unsigned int* value) { int len; char* buf; - len = snprintf (NULL, 0, "%u", *value) + 1; - buf = ug_malloc (len); - snprintf (buf, len, "%u", *value); - ug_json_write_string (json, buf); - ug_free (buf); + len = snprintf(NULL, 0, "%u", *value) + 1; + buf = ug_malloc(len); + snprintf(buf, len, "%u", *value); + ug_json_write_string(json, buf); + ug_free(buf); } -void ug_json_write_int64_string (UgJson* json, int64_t* value) +void ug_json_write_int64_string(UgJson* json, int64_t* value) { int len; char* buf; #if defined (_MSC_VER) || defined (__MINGW32__) - len = snprintf (NULL, 0, "%I64d", *value) + 1; - buf = ug_malloc (len); - snprintf (buf, len, "%I64d", *value); + len = snprintf(NULL, 0, "%I64d", *value) + 1; + buf = ug_malloc(len); + snprintf(buf, len, "%I64d", *value); #else - len = snprintf (NULL, 0, "%lld", (long long) *value) + 1; - buf = ug_malloc (len); - snprintf (buf, len, "%lld", (long long) *value); + len = snprintf(NULL, 0, "%lld", (long long) *value) + 1; + buf = ug_malloc(len); + snprintf(buf, len, "%lld", (long long) *value); #endif - ug_json_write_string (json, buf); - ug_free (buf); + ug_json_write_string(json, buf); + ug_free(buf); } -void ug_json_write_double_string (UgJson* json, double* value) +void ug_json_write_double_string(UgJson* json, double* value) { int len; char* buf; - len = snprintf (NULL, 0, "%f", *value) + 1; - buf = ug_malloc (len); - snprintf (buf, len, "%f", *value); - ug_json_write_string (json, buf); - ug_free (buf); + len = snprintf(NULL, 0, "%f", *value) + 1; + buf = ug_malloc(len); + snprintf(buf, len, "%f", *value); + ug_json_write_string(json, buf); + ug_free(buf); +} + +// ---------------------------------------------------------------------------- +// parse and write JSON number for C types - uint8_t, int16_t, and int32_t + +UgJsonError ug_json_parse_uint8(UgJson* json, + const char* name, const char* value, + void* dest, void* data) +{ +// if (json->type >= UG_JSON_OBJECT) { +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); +// return UG_JSON_ERROR_TYPE_NOT_MATCH; +// } + + if (json->type != UG_JSON_NUMBER) + return UG_JSON_ERROR_TYPE_NOT_MATCH; + *(uint8_t*) dest = strtol(value, NULL, 10); + return UG_JSON_ERROR_NONE; +} + +UgJsonError ug_json_parse_int16(UgJson* json, + const char* name, const char* value, + void* dest, void* data) +{ +// if (json->type >= UG_JSON_OBJECT) { +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); +// return UG_JSON_ERROR_TYPE_NOT_MATCH; +// } + + if (json->type != UG_JSON_NUMBER) + return UG_JSON_ERROR_TYPE_NOT_MATCH; + *(int16_t*) dest = strtol(value, NULL, 10); + return UG_JSON_ERROR_NONE; +} + +UgJsonError ug_json_parse_int32(UgJson* json, + const char* name, const char* value, + void* dest, void* data) +{ +// if (json->type >= UG_JSON_OBJECT) { +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); +// return UG_JSON_ERROR_TYPE_NOT_MATCH; +// } + + if (json->type != UG_JSON_NUMBER) + return UG_JSON_ERROR_TYPE_NOT_MATCH; + *(int32_t*) dest = strtol(value, NULL, 10); + return UG_JSON_ERROR_NONE; +} + +void ug_json_write_uint8(UgJson* json, uint8_t* value) +{ + ug_json_write_int(json, *(uint8_t*)value); +} + +void ug_json_write_int16(UgJson* json, int16_t* value) +{ + ug_json_write_int(json, *(int16_t*)value); +} + +void ug_json_write_int32(UgJson* json, int32_t* value) +{ + ug_json_write_int(json, *(int32_t*)value); } // ---------------------------------------------------------------------------- // parse string "true" and "false" to integer (boolean). // write integer (boolean) to string "true" and "false". -UgJsonError ug_json_parse_bool_string (UgJson* json, - const char* name, const char* value, - void* dest, void* data) +UgJsonError ug_json_parse_bool_string(UgJson* json, + const char* name, const char* value, + void* dest, void* data) { // if (json->type >= UG_JSON_OBJECT) { -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); // return UG_JSON_ERROR_TYPE_NOT_MATCH; // } @@ -190,16 +253,16 @@ break; // case UG_JSON_NUMBER: -// if (strtol (value, NULL, 10) == 0) +// if (strtol(value, NULL, 10) == 0) // *(int*) dest = FALSE; // else // *(int*) dest = TRUE; // break; case UG_JSON_STRING: - if (strcmp (value, "true") == 0) + if (strcmp(value, "true") == 0) *(int*) dest = TRUE; - else if (strcmp (value, "false") == 0) + else if (strcmp(value, "false") == 0) *(int*) dest = FALSE; break; @@ -209,25 +272,25 @@ return UG_JSON_ERROR_NONE; } -void ug_json_write_bool_string (UgJson* json, int* value) +void ug_json_write_bool_string(UgJson* json, int* value) { if (*value == FALSE) - ug_json_write_string (json, "false"); + ug_json_write_string(json, "false"); else - ug_json_write_string (json, "true"); + ug_json_write_string(json, "true"); } // ---------------------------------------------------------------------------- // UgJsonParseFunc and UgJsonWriteFunc for time_t -UgJsonError ug_json_parse_time_t (UgJson* json, - const char* name, const char* value, - void* dest, void* none) +UgJsonError ug_json_parse_time_t(UgJson* json, + const char* name, const char* value, + void* dest, void* none) { #if 1 if (json->type != UG_JSON_NUMBER) return UG_JSON_ERROR_TYPE_NOT_MATCH; - *(time_t*) dest = strtoll (value, NULL, 10); + *(time_t*) dest = strtoll(value, NULL, 10); return UG_JSON_ERROR_NONE; #else struct tm timem; @@ -242,42 +305,42 @@ *(time_t*) dest = mktime(timem); // if (json->type >= UG_JSON_OBJECT) { -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); // return UG_JSON_ERROR_TYPE_NOT_MATCH; // } #endif } -void ug_json_write_time_t (UgJson* json, void* data) +void ug_json_write_time_t(UgJson* json, void* data) { #if 1 - ug_json_write_int64 (json, *(time_t*) data); + ug_json_write_int64(json, *(time_t*) data); #else - struct tm* timem; + struct tm* timem; char* timestr; - timem = gmtime ((time_t*) dest); // localtime ((time_t*) dest); - timestr = ug_malloc (32); + timem = gmtime((time_t*) dest); // localtime((time_t*) dest); + timestr = ug_malloc(32); // output format : "2013-02-05 21:25:15" - snprintf (timestr, 32, "%.4d-%.2d-%.2d %.2d:%.2d:%.2d", - timem->tm_year + 1900, - timem->tm_mon + 1, - timem->tm_mday, - timem->tm_hour, - timem->tm_min, - timem->tm_sec); - ug_json_write_string (json, timestr); - ug_free (timestr); + snprintf(timestr, 32, "%.4d-%.2d-%.2d %.2d:%.2d:%.2d", + timem->tm_year + 1900, + timem->tm_mon + 1, + timem->tm_mday, + timem->tm_hour, + timem->tm_min, + timem->tm_sec); + ug_json_write_string(json, timestr); + ug_free(timestr); #endif } // ---------------------------------------------------------------------------- // UgJson reparse UgValue: this can convert UgValue to UgEntry // e.g. -// ug_json_begin_parse (json); -// ug_json_push (json, ug_json_parse_entry, entry, dest, data); -// ug_json_reparse_value (json, value); -// ug_json_end_parse (json); +// ug_json_begin_parse(json); +// ug_json_push(json, ug_json_parse_entry, entry, dest, data); +// ug_json_reparse_value(json, value); +// ug_json_end_parse(json); enum { PARSER_STACK_BASE, // 0 @@ -289,7 +352,7 @@ }; // static function -static void ug_json_call_parser_value (UgJson* json, UgValue* uvalue, const char* value) +static void ug_json_call_parser_value(UgJson* json, UgValue* uvalue, const char* value) { UgJsonParseFunc parser; void** stack; @@ -301,17 +364,17 @@ stackLen = json->stack.length; stack = json->stack.at + json->stack.length; parser = *(stack - PARSER_STACK_FUNC); - error = parser (json, - uvalue->name, - value, - *(stack - PARSER_STACK_DATA1), - *(stack - PARSER_STACK_DATA2)); + error = parser(json, + uvalue->name, + value, + *(stack - PARSER_STACK_DATA1), + *(stack - PARSER_STACK_DATA2)); if (error) json->error = error; // It must push parser when getting UG_JSON_OBJECT or UG_JSON_ARRAY. // If callback function does NOT push any parser, push default one. if (json->type >= UG_JSON_OBJECT && stackLen == json->stack.length) - ug_json_push (json, ug_json_parse_unknown, NULL, NULL); + ug_json_push(json, ug_json_parse_unknown, NULL, NULL); } // reset state @@ -321,7 +384,7 @@ json->buf.length = 1; } -void ug_json_parse_by_value (UgJson* json, UgValue* value) +void ug_json_parse_by_value(UgJson* json, UgValue* value) { UgValue* end; @@ -333,134 +396,82 @@ case UG_VALUE_OBJECT: json->type = UG_JSON_OBJECT; - ug_json_call_parser_value (json, value, NULL); + ug_json_call_parser_value(json, value, NULL); json->scope = UG_JSON_OBJECT; end = value->c.object->at + value->c.object->length; for (value = value->c.object->at; value < end; value++) - ug_json_parse_by_value (json, value); - ug_json_pop (json); + ug_json_parse_by_value(json, value); + ug_json_pop(json); break; case UG_VALUE_ARRAY: json->type = UG_JSON_ARRAY; - ug_json_call_parser_value (json, value, NULL); + ug_json_call_parser_value(json, value, NULL); json->scope = UG_JSON_ARRAY; end = value->c.array->at + value->c.array->length; for (value = value->c.array->at; value < end; value++) - ug_json_parse_by_value (json, value); - ug_json_pop (json); + ug_json_parse_by_value(json, value); + ug_json_pop(json); break; case UG_VALUE_BOOL: if (value->c.boolean == FALSE) { json->type = UG_JSON_FALSE; - ug_json_call_parser_value (json, value, "false"); + ug_json_call_parser_value(json, value, "false"); } else { json->type = UG_JSON_TRUE; - ug_json_call_parser_value (json, value, "true"); + ug_json_call_parser_value(json, value, "true"); } break; case UG_VALUE_INT: json->type = UG_JSON_NUMBER; - snprintf (json->buf.at, json->buf.allocated, "%d", value->c.integer); - ug_json_call_parser_value (json, value, json->buf.at); + snprintf(json->buf.at, json->buf.allocated, "%d", value->c.integer); + ug_json_call_parser_value(json, value, json->buf.at); break; case UG_VALUE_UINT: json->type = UG_JSON_NUMBER; - snprintf (json->buf.at, json->buf.allocated, "%u", value->c.uinteger); - ug_json_call_parser_value (json, value, json->buf.at); + snprintf(json->buf.at, json->buf.allocated, "%u", value->c.uinteger); + ug_json_call_parser_value(json, value, json->buf.at); break; case UG_VALUE_INT64: json->type = UG_JSON_NUMBER; #if defined (_MSC_VER) || defined (__MINGW32__) - snprintf (json->buf.at, json->buf.allocated, "%I64d", value->c.integer64); + snprintf(json->buf.at, json->buf.allocated, "%I64d", value->c.integer64); #else - snprintf (json->buf.at, json->buf.allocated, "%lld", (long long int) value->c.integer64); + snprintf(json->buf.at, json->buf.allocated, "%lld", (long long int) value->c.integer64); #endif - ug_json_call_parser_value (json, value, json->buf.at); + ug_json_call_parser_value(json, value, json->buf.at); break; case UG_VALUE_UINT64: json->type = UG_JSON_NUMBER; #if defined (_MSC_VER) || defined (__MINGW32__) - snprintf (json->buf.at, json->buf.allocated, "%I64u", value->c.uinteger64); + snprintf(json->buf.at, json->buf.allocated, "%I64u", value->c.uinteger64); #else - snprintf (json->buf.at, json->buf.allocated, "%llu", (long long int) value->c.uinteger64 ); + snprintf(json->buf.at, json->buf.allocated, "%llu", (long long int) value->c.uinteger64 ); #endif - ug_json_call_parser_value (json, value, json->buf.at); + ug_json_call_parser_value(json, value, json->buf.at); break; case UG_VALUE_DOUBLE: json->type = UG_JSON_NUMBER; - snprintf (json->buf.at, json->buf.allocated, "%f", value->c.fraction); - ug_json_call_parser_value (json, value, json->buf.at); + snprintf(json->buf.at, json->buf.allocated, "%f", value->c.fraction); + ug_json_call_parser_value(json, value, json->buf.at); break; case UG_VALUE_STRING: if (value->c.string == NULL) { json->type = UG_JSON_NULL; - ug_json_call_parser_value (json, value, NULL); + ug_json_call_parser_value(json, value, NULL); } else { json->type = UG_JSON_STRING; - ug_json_call_parser_value (json, value, value->c.string); + ug_json_call_parser_value(json, value, value->c.string); } break; } } - -// ---------------------------------------------------------------------------- -// UgValue use UgValueCustom and UgEntry - -#ifdef HAVE_UG_VALUE_CUSTOM - -// parse JSON object by UgEntry. -static UgJsonError parse_entry_object (UgJson* json, - const char* name, const char* value, - void* dest, void* entry) -{ - if (json->type != UG_JSON_OBJECT) { -// if (json->type == UG_JSON_ARRAY) -// ug_json_push (json, ug_json_parse_unknow, NUL, NULL); - return UG_JSON_ERROR_TYPE_NOT_MATCH; - } - ug_json_push (json, ug_json_parse_entry, dest, entry); - return UG_JSON_ERROR_NONE; -} - -// write JSON object by UgEntry. -static void write_entry_object (UgJson* json, void* src, const UgEntry* entry) -{ - ug_json_write_object_head (json); - ug_json_write_entry (json, src, entry); - ug_json_write_object_tail (json); -} - -void ug_value_init_custom_entry (UgValue* value, void* data, - const UgEntry* entry) -{ - UgValueCustom* custom; - - custom = ug_value_custom_new (); - custom->data = data; - custom->data2 = (void*) entry; - if (entry->name) { - custom->parse = (void*) parse_entry_object; - custom->write = (void*) write_entry_object; - } - else { - custom->parse = (void*) ug_json_parse_entry; - custom->write = (void*) ug_json_write_entry; - } - custom->free_this = TRUE; - - value->type = UG_VALUE_CUSTOM; - value->c.custom = custom; -} - -#endif // HAVE_UG_VALUE_CUSTOM - diff -Nru uget-2.0.2/uglib/UgJson-custom.h uget-2.2.2/uglib/UgJson-custom.h --- uget-2.0.2/uglib/UgJson-custom.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgJson-custom.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -50,59 +50,66 @@ // parse and write JSON number as JSON string // below 4 functions can parse JSON number and JSON string. -UgJsonError ug_json_parse_int_string (UgJson* json, +UgJsonError ug_json_parse_int_string(UgJson* json, + const char* name, const char* value, + void* dest, void* data); +UgJsonError ug_json_parse_uint_string(UgJson* json, const char* name, const char* value, void* dest, void* data); -UgJsonError ug_json_parse_uint_string (UgJson* json, +UgJsonError ug_json_parse_int64_string(UgJson* json, const char* name, const char* value, void* dest, void* data); -UgJsonError ug_json_parse_int64_string (UgJson* json, +UgJsonError ug_json_parse_double_string(UgJson* json, const char* name, const char* value, void* dest, void* data); -UgJsonError ug_json_parse_double_string (UgJson* json, - const char* name, const char* value, - void* dest, void* data); - -void ug_json_write_int_string (UgJson* json, int* value); -void ug_json_write_uint_string (UgJson* json, unsigned int* value); -void ug_json_write_int64_string (UgJson* json, int64_t* value); -void ug_json_write_double_string (UgJson* json, double* value); + +void ug_json_write_int_string(UgJson* json, int* value); +void ug_json_write_uint_string(UgJson* json, unsigned int* value); +void ug_json_write_int64_string(UgJson* json, int64_t* value); +void ug_json_write_double_string(UgJson* json, double* value); + +// ---------------------------------------------------------------------------- +// parse and write JSON number for C types - uint8_t, int16_t, and int32_t + +UgJsonError ug_json_parse_uint8(UgJson* json, + const char* name, const char* value, + void* dest, void* data); +UgJsonError ug_json_parse_int16(UgJson* json, + const char* name, const char* value, + void* dest, void* data); +UgJsonError ug_json_parse_int32(UgJson* json, + const char* name, const char* value, + void* dest, void* data); +void ug_json_write_uint8(UgJson* json, uint8_t* value); +void ug_json_write_int16(UgJson* json, int16_t* value); +void ug_json_write_int32(UgJson* json, int32_t* value); // ---------------------------------------------------------------------------- // parse string "true" and "false" to integer (boolean). // write integer (boolean) to string "true" and "false". -UgJsonError ug_json_parse_bool_string (UgJson* json, - const char* name, const char* value, - void* dest, void* data); -void ug_json_write_bool_string (UgJson* json, int* value); +UgJsonError ug_json_parse_bool_string(UgJson* json, + const char* name, const char* value, + void* dest, void* data); +void ug_json_write_bool_string(UgJson* json, int* value); // ---------------------------------------------------------------------------- // UgJsonParseFunc and UgJsonWriteFunc for time_t -UgJsonError ug_json_parse_time_t (UgJson* json, - const char* name, const char* value, - void* dest, void* none); -void ug_json_write_time_t (UgJson* json, void* src); +UgJsonError ug_json_parse_time_t(UgJson* json, + const char* name, const char* value, + void* dest, void* none); +void ug_json_write_time_t(UgJson* json, void* src); // ---------------------------------------------------------------------------- // UgJson parse by UgValue: convert UgValue to UgEntry // e.g. -// ug_json_begin_parse (json); -// ug_json_push (json, ug_json_parse_entry, entry, dest, data); -// ug_json_parse_by_value (json, value); -// ug_json_end_parse (json); - -void ug_json_parse_by_value (UgJson* json, UgValue* value); - -// ---------------------------------------------------------------------------- -// UgValue use UgValueCustom and UgEntry - -#ifdef HAVE_UG_VALUE_CUSTOM +// ug_json_begin_parse(json); +// ug_json_push(json, ug_json_parse_entry, dest, entry); +// ug_json_parse_by_value(json, value); +// ug_json_end_parse(json); -void ug_value_init_custom_entry (UgValue* value, void* data, - const UgEntry* entry); +void ug_json_parse_by_value(UgJson* json, UgValue* value); -#endif // HAVE_UG_VALUE_CUSTOM #ifdef __cplusplus } diff -Nru uget-2.0.2/uglib/UgJsonFile.c uget-2.2.2/uglib/UgJsonFile.c --- uget-2.0.2/uglib/UgJsonFile.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgJsonFile.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -60,30 +60,49 @@ void ug_json_file_free (UgJsonFile* jfile) { + if (jfile->fd != -1) + ug_close (jfile->fd); ug_json_final (&jfile->json); ug_free (jfile); } int ug_json_file_begin_parse (UgJsonFile* jfile, const char* path) { -// jfile->fd = open (path, O_RDONLY, 0); - jfile->fd = ug_open (path, UG_O_RDONLY | UG_O_TEXT, 0); - if (jfile->fd == -1) + int fd; + +// fd = open (path, O_RDONLY, 0); + fd = ug_open (path, UG_O_RDONLY | UG_O_TEXT, 0); + if (fd == -1) return FALSE; - // ready to parse - ug_json_begin_parse (&jfile->json); - return TRUE; + return ug_json_file_begin_parse_fd (jfile, fd); } int ug_json_file_begin_write (UgJsonFile* jfile, const char* path, UgJsonFormat format) { -// jfile->fd = open (path, O_CREAT | O_WRONLY | O_TRUNC, + int fd; + +// fd = open (path, O_CREAT | O_WRONLY | O_TRUNC, // S_IREAD | S_IWRITE | S_IRGRP | S_IROTH); - jfile->fd = ug_open (path, UG_O_CREAT | UG_O_WRONLY | UG_O_TRUNC | UG_O_TEXT, + fd = ug_open (path, UG_O_CREAT | UG_O_WRONLY | UG_O_TRUNC | UG_O_TEXT, UG_S_IREAD | UG_S_IWRITE | UG_S_IRGRP | UG_S_IROTH); - if (jfile->fd == -1) + if (fd == -1) return FALSE; + + return ug_json_file_begin_write_fd (jfile, fd, format); +} + +int ug_json_file_begin_parse_fd (UgJsonFile* jfile, int fd) +{ + jfile->fd = fd; + // ready to parse + ug_json_begin_parse (&jfile->json); + return TRUE; +} + +int ug_json_file_begin_write_fd (UgJsonFile* jfile, int fd, UgJsonFormat format) +{ + jfile->fd = fd; // init UgBuffer for writer ug_buffer_init_external (&jfile->buffer, jfile->bytes, jfile->n_bytes); jfile->buffer.data = (void*)(uintptr_t) jfile->fd; @@ -117,6 +136,11 @@ ug_json_end_write (&jfile->json); ug_buffer_clear (&jfile->buffer, FALSE); ug_write (jfile->fd, "\n\n", 2); + + // close() doesn't call fsync() + // If you want to avoid delayed write, call fsync() before close() + ug_sync (jfile->fd); + ug_close (jfile->fd); jfile->fd = -1; } diff -Nru uget-2.0.2/uglib/UgJsonFile.h uget-2.2.2/uglib/UgJsonFile.h --- uget-2.0.2/uglib/UgJsonFile.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgJsonFile.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -64,6 +64,8 @@ // return TRUE or FALSE int ug_json_file_begin_parse (UgJsonFile* jfile, const char* filename); int ug_json_file_begin_write (UgJsonFile* jfile, const char* filename, UgJsonFormat format); +int ug_json_file_begin_parse_fd (UgJsonFile* jfile, int fd); +int ug_json_file_begin_write_fd (UgJsonFile* jfile, int fd, UgJsonFormat format); UgJsonError ug_json_file_end_parse (UgJsonFile* jfile); void ug_json_file_end_write (UgJsonFile* jfile); diff -Nru uget-2.0.2/uglib/UgJson.h uget-2.2.2/uglib/UgJson.h --- uget-2.0.2/uglib/UgJson.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgJson.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -203,6 +203,9 @@ } #endif +// ---------------------------------------------------------------------------- +// UgJson structure + struct UgJson { // buffer is used by parser & writer @@ -299,7 +302,6 @@ #endif // __cplusplus }; - // ---------------------------------------------------------------------------- // C++11 standard-layout diff -Nru uget-2.0.2/uglib/UgJsonrpc.c uget-2.2.2/uglib/UgJsonrpc.c --- uget-2.0.2/uglib/UgJsonrpc.c 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgJsonrpc.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -47,27 +47,27 @@ const UgEntry UgJsonrpcErrorEntry[] = { - {"code", offsetof (UgJsonrpcError, code), UG_ENTRY_INT, + {"code", offsetof(UgJsonrpcError, code), UG_ENTRY_INT, NULL, NULL}, - {"message", offsetof (UgJsonrpcError, message), UG_ENTRY_STRING, + {"message", offsetof(UgJsonrpcError, message), UG_ENTRY_STRING, NULL, NULL}, - {"data", offsetof (UgJsonrpcError, data), UG_ENTRY_CUSTOM, + {"data", offsetof(UgJsonrpcError, data), UG_ENTRY_CUSTOM, ug_json_parse_value, ug_json_write_value}, {NULL}, }; -void ug_jsonrpc_error_init (UgJsonrpcError* error) +void ug_jsonrpc_error_init(UgJsonrpcError* error) { - memset (error, 0, sizeof (UgJsonrpcError)); + memset(error, 0, sizeof(UgJsonrpcError)); } -void ug_jsonrpc_error_clear (UgJsonrpcError* error) +void ug_jsonrpc_error_clear(UgJsonrpcError* error) { // error - ug_free (error->message); + ug_free(error->message); error->message = NULL; error->code = 0; - ug_value_clear (&error->data); + ug_value_clear(&error->data); } // ---------------------------------------------------------------------------- @@ -75,135 +75,135 @@ const UgEntry UgJsonrpcObjectEntry[] = { -// {"jsonrpc", offsetof (UgJsonrpcObject, jsonrpc), UG_ENTRY_STRING, +// {"jsonrpc", offsetof(UgJsonrpcObject, jsonrpc), UG_ENTRY_STRING, // NULL, NULL}, - {"id", offsetof (UgJsonrpcObject, id), UG_ENTRY_CUSTOM, + {"id", offsetof(UgJsonrpcObject, id), UG_ENTRY_CUSTOM, ug_json_parse_value, ug_json_write_value}, - {"method", offsetof (UgJsonrpcObject, method), UG_ENTRY_STRING, - UG_ENTRY_SKIP_IF_NULL, NULL}, - {"params", offsetof (UgJsonrpcObject, params), UG_ENTRY_CUSTOM, + {"method", offsetof(UgJsonrpcObject, method), UG_ENTRY_STRING, + NULL, UG_ENTRY_NO_NULL}, + {"params", offsetof(UgJsonrpcObject, params), UG_ENTRY_CUSTOM, ug_json_parse_value, ug_json_write_value}, - {"result", offsetof (UgJsonrpcObject, result), UG_ENTRY_CUSTOM, + {"result", offsetof(UgJsonrpcObject, result), UG_ENTRY_CUSTOM, ug_json_parse_value, ug_json_write_value}, - {"error", offsetof (UgJsonrpcObject, error), UG_ENTRY_OBJECT, + {"error", offsetof(UgJsonrpcObject, error), UG_ENTRY_OBJECT, (void*)UgJsonrpcErrorEntry, NULL}, {NULL}, }; -UgJsonrpcObject* ug_jsonrpc_object_new (void) +UgJsonrpcObject* ug_jsonrpc_object_new(void) { UgJsonrpcObject* jobj; - jobj = ug_malloc0 (sizeof (UgJsonrpcObject)); + jobj = ug_malloc0(sizeof(UgJsonrpcObject)); return jobj; } -void ug_jsonrpc_object_free (UgJsonrpcObject* jobj) +void ug_jsonrpc_object_free(UgJsonrpcObject* jobj) { // check NULL for uget_aria2_unref() if (jobj) { - ug_jsonrpc_object_clear (jobj); - ug_free (jobj); + ug_jsonrpc_object_clear(jobj); + ug_free(jobj); } } -void ug_jsonrpc_object_init (UgJsonrpcObject* jobj) +void ug_jsonrpc_object_init(UgJsonrpcObject* jobj) { - memset (jobj, 0, sizeof (UgJsonrpcObject)); + memset(jobj, 0, sizeof(UgJsonrpcObject)); } -void ug_jsonrpc_object_clear (UgJsonrpcObject* jobj) +void ug_jsonrpc_object_clear(UgJsonrpcObject* jobj) { if (jobj == NULL) return; // jsonrpc -// ug_free (jobj->jsonrpc); +// ug_free(jobj->jsonrpc); // jobj->jsonrpc = NULL; // id - ug_value_clear (&jobj->id); + ug_value_clear(&jobj->id); // method - ug_free (jobj->method); + ug_free(jobj->method); jobj->method = NULL; jobj->method_static = NULL; // params - ug_value_clear (&jobj->params); + ug_value_clear(&jobj->params); // result - ug_value_clear (&jobj->result); + ug_value_clear(&jobj->result); // error - ug_jsonrpc_error_clear (&jobj->error); + ug_jsonrpc_error_clear(&jobj->error); } -void ug_jsonrpc_object_clear_request (UgJsonrpcObject* jobj) +void ug_jsonrpc_object_clear_request(UgJsonrpcObject* jobj) { - ug_free (jobj->method); + ug_free(jobj->method); jobj->method = NULL; jobj->method_static = NULL; - ug_value_clear (&jobj->params); + ug_value_clear(&jobj->params); } -void ug_jsonrpc_object_clear_response (UgJsonrpcObject* jobj) +void ug_jsonrpc_object_clear_response(UgJsonrpcObject* jobj) { - ug_value_clear (&jobj->result); - ug_jsonrpc_error_clear (&jobj->error); + ug_value_clear(&jobj->result); + ug_jsonrpc_error_clear(&jobj->error); } -void ug_json_write_rpc_object (UgJson* json, UgJsonrpcObject* jobj) +void ug_json_write_rpc_object(UgJson* json, UgJsonrpcObject* jobj) { - ug_json_write_object_head (json); + ug_json_write_object_head(json); // jsonrpc - ug_json_write_string (json, "jsonrpc"); - ug_json_write_string (json, "2.0"); -// ug_json_write_string (json, (jobj->jsonrpc) ? jobj->jsonrpc : "2.0"); + ug_json_write_string(json, "jsonrpc"); + ug_json_write_string(json, "2.0"); +// ug_json_write_string(json, (jobj->jsonrpc) ? jobj->jsonrpc : "2.0"); // id if (jobj->id.type != UG_VALUE_NONE) { if (jobj->id.name == NULL) - ug_json_write_string (json, "id"); - ug_json_write_value (json, &jobj->id); + ug_json_write_string(json, "id"); + ug_json_write_value(json, &jobj->id); } if (jobj->result.type == UG_VALUE_NONE && jobj->error.code == 0) { if (jobj->method || jobj->method_static) { - ug_json_write_string (json, "method"); - ug_json_write_string (json, + ug_json_write_string(json, "method"); + ug_json_write_string(json, (jobj->method_static)? jobj->method_static : jobj->method); if (jobj->params.type != UG_VALUE_NONE) { if (jobj->params.name == NULL) - ug_json_write_string (json, "params"); - ug_json_write_value (json, &jobj->params); + ug_json_write_string(json, "params"); + ug_json_write_value(json, &jobj->params); } } } else if (jobj->result.type != UG_VALUE_NONE) { if (jobj->result.name == NULL) - ug_json_write_string (json, "result"); - ug_json_write_value (json, &jobj->result); + ug_json_write_string(json, "result"); + ug_json_write_value(json, &jobj->result); } else { - ug_json_write_string (json, "error"); - ug_json_write_object_head (json); - ug_json_write_entry (json, &jobj->error, UgJsonrpcErrorEntry); - ug_json_write_object_tail (json); + ug_json_write_string(json, "error"); + ug_json_write_object_head(json); + ug_json_write_entry(json, &jobj->error, UgJsonrpcErrorEntry); + ug_json_write_object_tail(json); } - ug_json_write_object_tail (json); + ug_json_write_object_tail(json); } // ---------------------------------------------------------------------------- // UgJsonrpcArray: a UgJsonrpcObject array -//void ug_jsonrpc_array_init (UgJsonrpcArray* joarray, int allocated_len); +//void ug_jsonrpc_array_init(UgJsonrpcArray* joarray, int allocated_len); -void ug_jsonrpc_array_clear (UgJsonrpcArray* joarray, int free_objects) +void ug_jsonrpc_array_clear(UgJsonrpcArray* joarray, int free_objects) { if (free_objects) { - ug_array_foreach_ptr (joarray, + ug_array_foreach_ptr(joarray, (UgForeachFunc) ug_jsonrpc_object_clear, NULL); } - ug_array_clear (joarray); + ug_array_clear(joarray); } -UgJsonrpcObject* ug_jsonrpc_array_find (UgJsonrpcArray* joarray, UgValue* id, int* index) +UgJsonrpcObject* ug_jsonrpc_array_find(UgJsonrpcArray* joarray, UgValue* id, int* index) { UgJsonrpcObject** cur; UgJsonrpcObject** end; @@ -226,7 +226,7 @@ else if (id->type == UG_VALUE_STRING) { for (; cur < end; cur++) { if (cur[0]->id.type == UG_VALUE_STRING && - strcmp (cur[0]->id.c.string, id->c.string) == 0) + strcmp(cur[0]->id.c.string, id->c.string) == 0) { result = *cur; break; @@ -239,18 +239,18 @@ return result; } -UgJsonrpcObject* ug_jsonrpc_array_alloc (UgJsonrpcArray* joarray) +UgJsonrpcObject* ug_jsonrpc_array_alloc(UgJsonrpcArray* joarray) { UgJsonrpcObject** jobj; - jobj = ug_array_alloc (joarray, 1); - *jobj = ug_jsonrpc_object_new (); + jobj = ug_array_alloc(joarray, 1); + *jobj = ug_jsonrpc_object_new(); return *jobj; } -UgJsonError ug_json_parse_rpc_array (UgJson* json, - const char* name, const char* value, - void* jrarray, void* none) +UgJsonError ug_json_parse_rpc_array(UgJson* json, + const char* name, const char* value, + void* jrarray, void* none) { UgJsonrpcArray* array; UgJsonrpcObject* object; @@ -258,37 +258,38 @@ array = (UgJsonrpcArray*) jrarray; if (json->type != UG_JSON_OBJECT) { // if (json->type == UG_JSON_ARRAY) -// ug_json_push (json, ug_json_parse_unknown, NULL, NULL); +// ug_json_push(json, ug_json_parse_unknown, NULL, NULL); return UG_JSON_ERROR_RPC_INVALID; } - object = ug_jsonrpc_array_alloc (array); - ug_json_push (json, ug_json_parse_entry, - object, (void*)UgJsonrpcObjectEntry); + object = ug_jsonrpc_array_alloc(array); + ug_json_push(json, ug_json_parse_entry, + object, (void*)UgJsonrpcObjectEntry); return UG_JSON_ERROR_NONE; } -void ug_json_write_rpc_array (UgJson* json, UgJsonrpcArray* objects, int noArrayIfOk) +void ug_json_write_rpc_array(UgJson* json, UgJsonrpcArray* objects, + int noArrayIfPossible) { UgJsonrpcObject** cur; UgJsonrpcObject** end; - if (noArrayIfOk == 0 || objects->length > 1) - ug_json_write_array_head (json); + if (noArrayIfPossible == FALSE || objects->length > 1) + ug_json_write_array_head(json); end = objects->at + objects->length; cur = objects->at; for (; cur < end; cur++) - ug_json_write_rpc_object (json, *cur); + ug_json_write_rpc_object(json, *cur); - if (noArrayIfOk == 0 || objects->length > 1) - ug_json_write_array_tail (json); + if (noArrayIfPossible == FALSE || objects->length > 1) + ug_json_write_array_tail(json); } // ---------------------------------------------------------------------------- // UgJsonrpc: JSON-RPC -void ug_jsonrpc_init (UgJsonrpc* jrpc, UgJson* json, UgBuffer* buffer) +void ug_jsonrpc_init(UgJsonrpc* jrpc, UgJson* json, UgBuffer* buffer) { jrpc->json = json; jrpc->buffer = buffer; @@ -296,16 +297,16 @@ jrpc->data.id.current = 0; } -void ug_jsonrpc_clear (UgJsonrpc* jrpc) +void ug_jsonrpc_clear(UgJsonrpc* jrpc) { } // ------------------------------------ // client API : set response == NULL if this is notify request -int ug_jsonrpc_call (UgJsonrpc* jrpc, - UgJsonrpcObject* request, - UgJsonrpcObject* response) +int ug_jsonrpc_call(UgJsonrpc* jrpc, + UgJsonrpcObject* request, + UgJsonrpcObject* response) { int n; @@ -314,35 +315,35 @@ jrpc->error = 0; // write --- start --- - ug_json_begin_write (jrpc->json, 0, jrpc->buffer); + ug_json_begin_write(jrpc->json, 0, jrpc->buffer); // notify does NOT have id if (request->id.type != UG_VALUE_NONE) - ug_value_clear (&request->id); + ug_value_clear(&request->id); if (response) { request->id.type = UG_VALUE_INT; request->id.c.integer = jrpc->data.id.current++; } - ug_json_write_rpc_object (jrpc->json, request); - ug_json_end_write (jrpc->json); + ug_json_write_rpc_object(jrpc->json, request); + ug_json_end_write(jrpc->json); // write --- end --- #ifdef DEBUG - printf ("\n%.*s\n", jrpc->buffer->cur - jrpc->buffer->beg, jrpc->buffer->beg); + printf("\n%.*s\n", jrpc->buffer->cur - jrpc->buffer->beg, jrpc->buffer->beg); #endif // DEBUG // parser --- start --- - ug_json_begin_parse (jrpc->json); + ug_json_begin_parse(jrpc->json); if (response == NULL) { - ug_json_push (jrpc->json, ug_json_parse_unknown, - NULL, NULL); + ug_json_push(jrpc->json, ug_json_parse_unknown, + NULL, NULL); } else { - ug_json_push (jrpc->json, ug_json_parse_entry, - response, (void*)UgJsonrpcObjectEntry); - ug_json_push (jrpc->json, ug_json_parse_object, NULL, NULL); + ug_json_push(jrpc->json, ug_json_parse_entry, + response, (void*)UgJsonrpcObjectEntry); + ug_json_push(jrpc->json, ug_json_parse_object, NULL, NULL); } // send request - n = jrpc->send.func (jrpc->send.data); + n = jrpc->send.func(jrpc->send.data); if (n == -1) return -1; @@ -352,10 +353,10 @@ return 0; jrpc->data.id.previous = jrpc->data.id.current; - n = jrpc->receive.func (jrpc->receive.data); + n = jrpc->receive.func(jrpc->receive.data); if (n == -1) return -1; - n = ug_json_end_parse (jrpc->json); + n = ug_json_end_parse(jrpc->json); if (n < 0 || jrpc->error == 0) jrpc->error = n; // parser --- end --- @@ -363,9 +364,9 @@ return 0; // no error } -int ug_jsonrpc_call_batch (UgJsonrpc* jrpc, - UgJsonrpcArray* request, - UgJsonrpcArray* response) +int ug_jsonrpc_call_batch(UgJsonrpc* jrpc, + UgJsonrpcArray* request, + UgJsonrpcArray* response) { UgJsonrpcObject** cur; UgJsonrpcObject** end; @@ -378,8 +379,8 @@ if (request->length == 0) return 0; // write --- start --- - ug_json_begin_write (jrpc->json, 0, jrpc->buffer); - ug_json_write_array_head (jrpc->json); + ug_json_begin_write(jrpc->json, 0, jrpc->buffer); + ug_json_write_array_head(jrpc->json); cur = request->at; end = request->at + request->length; for (; cur < end; cur++) { @@ -387,31 +388,31 @@ continue; // notify does NOT have id if (cur[0]->id.type != UG_VALUE_NONE) { - ug_value_clear (&cur[0]->id); + ug_value_clear(&cur[0]->id); cur[0]->id.type = UG_VALUE_INT; cur[0]->id.c.integer = jrpc->data.id.current++; } - ug_json_write_rpc_object (jrpc->json, cur[0]); + ug_json_write_rpc_object(jrpc->json, cur[0]); } - ug_json_write_array_tail (jrpc->json); - ug_json_end_write (jrpc->json); + ug_json_write_array_tail(jrpc->json); + ug_json_end_write(jrpc->json); // write --- end --- #ifdef DEBUG - printf ("\n%.*s\n", jrpc->buffer->cur - jrpc->buffer->beg, jrpc->buffer->beg); + printf("\n%.*s\n", jrpc->buffer->cur - jrpc->buffer->beg, jrpc->buffer->beg); #endif // parser --- start --- - ug_json_begin_parse (jrpc->json); + ug_json_begin_parse(jrpc->json); if (response == NULL) - ug_json_push (jrpc->json, ug_json_parse_unknown, NULL, NULL); + ug_json_push(jrpc->json, ug_json_parse_unknown, NULL, NULL); else { - ug_json_push (jrpc->json, ug_json_parse_rpc_array, response, NULL); - ug_json_push (jrpc->json, ug_json_parse_array, NULL, NULL); + ug_json_push(jrpc->json, ug_json_parse_rpc_array, response, NULL); + ug_json_push(jrpc->json, ug_json_parse_array, NULL, NULL); } // send request - n = jrpc->send.func (jrpc->send.data); + n = jrpc->send.func(jrpc->send.data); if (n == -1) return -1; @@ -421,10 +422,10 @@ return 0; jrpc->data.id.previous = jrpc->data.id.current; - n = jrpc->receive.func (jrpc->receive.data); + n = jrpc->receive.func(jrpc->receive.data); if (n == -1) return -1; - n = ug_json_end_parse (jrpc->json); + n = ug_json_end_parse(jrpc->json); if (n < 0 || jrpc->error == 0) jrpc->error = n; // parser --- end --- @@ -435,9 +436,9 @@ // ------------------------------------ // server API -int ug_jsonrpc_receive (UgJsonrpc* jrpc, - UgJsonrpcObject* jr_object, - UgJsonrpcArray* jr_array) +int ug_jsonrpc_receive(UgJsonrpc* jrpc, + UgJsonrpcObject* jr_object, + UgJsonrpcArray* jr_array) { int n; int type; @@ -449,23 +450,23 @@ jrpc->data.request.array = jr_array; // parser --- start --- - ug_json_begin_parse (jrpc->json); - ug_json_push (jrpc->json, ug_json_parse_rpc_request, - jrpc, &type); + ug_json_begin_parse(jrpc->json); + ug_json_push(jrpc->json, ug_json_parse_rpc_request, + jrpc, &type); // receive request - n = jrpc->receive.func (jrpc->receive.data); + n = jrpc->receive.func(jrpc->receive.data); if (n <= 0) { - ug_json_end_parse (jrpc->json); + ug_json_end_parse(jrpc->json); return n; } - n = ug_json_end_parse (jrpc->json); + n = ug_json_end_parse(jrpc->json); if (n < 0 || jrpc->error == 0) jrpc->error = n; // parser --- end --- if (jrpc->error == UG_JSON_ERROR_UNCOMPLETED) { // {"jsonrpc": "2.0", "error": {"code": -32700, "message": "Parse error"}, "id": null} - jres = ug_jsonrpc_object_new (); + jres = ug_jsonrpc_object_new(); // "id": null jres->id.type = UG_VALUE_STRING; jres->id.c.string = NULL; @@ -473,15 +474,15 @@ jres->error.code = -32700; jres->error.message = "Parse error"; // send response to client - ug_jsonrpc_response (jrpc, jres); + ug_jsonrpc_response(jrpc, jres); // clear response jres->error.message = NULL; - ug_jsonrpc_object_free (jres); + ug_jsonrpc_object_free(jres); return -1; } if (type < UG_JSON_OBJECT) { // {"jsonrpc": "2.0", "error": {"code": -32600, "message": "Invalid Request"}, "id": null} - jres = ug_jsonrpc_object_new (); + jres = ug_jsonrpc_object_new(); // "id": null jres->id.type = UG_VALUE_STRING; jres->id.c.string = NULL; @@ -489,18 +490,18 @@ jres->error.code = -32600; jres->error.message = "Invalid Request"; // send response to client - ug_jsonrpc_response (jrpc, jres); + ug_jsonrpc_response(jrpc, jres); // clear response jres->error.message = NULL; - ug_jsonrpc_object_free (jres); + ug_jsonrpc_object_free(jres); return -1; } return type; } -int ug_jsonrpc_response (UgJsonrpc* jrpc, - UgJsonrpcObject* response) +int ug_jsonrpc_response(UgJsonrpc* jrpc, + UgJsonrpcObject* response) { int n; @@ -509,20 +510,20 @@ jrpc->error = 0; // write --- start --- - ug_json_begin_write (jrpc->json, 0, jrpc->buffer); - ug_json_write_rpc_object (jrpc->json, response); - ug_json_end_write (jrpc->json); + ug_json_begin_write(jrpc->json, 0, jrpc->buffer); + ug_json_write_rpc_object(jrpc->json, response); + ug_json_end_write(jrpc->json); // write --- end --- // send responses - n = jrpc->send.func (jrpc->send.data); + n = jrpc->send.func(jrpc->send.data); if (n == -1) return -1; return n; } -int ug_jsonrpc_response_batch (UgJsonrpc* jrpc, - UgJsonrpcArray* responses) +int ug_jsonrpc_response_batch(UgJsonrpc* jrpc, + UgJsonrpcArray* responses) { UgJsonrpcObject** cur; UgJsonrpcObject** end; @@ -535,8 +536,8 @@ if (responses->length == 0) return 0; // write --- start --- - ug_json_begin_write (jrpc->json, 0, jrpc->buffer); - ug_json_write_array_head (jrpc->json); + ug_json_begin_write(jrpc->json, 0, jrpc->buffer); + ug_json_write_array_head(jrpc->json); cur = responses->at; end = responses->at + responses->length; for (n = 0; cur < end; cur++) { @@ -544,11 +545,11 @@ if (cur[0] == NULL) continue; // output object and increase count - ug_json_write_rpc_object (jrpc->json, cur[0]); + ug_json_write_rpc_object(jrpc->json, cur[0]); n++; } - ug_json_write_array_tail (jrpc->json); - ug_json_end_write (jrpc->json); + ug_json_write_array_tail(jrpc->json); + ug_json_end_write(jrpc->json); // write --- end --- // if no object outputted, don't send response @@ -556,15 +557,15 @@ return 0; // send responses - n = jrpc->send.func (jrpc->send.data); + n = jrpc->send.func(jrpc->send.data); if (n == -1) return -1; return n; } -UgJsonError ug_json_parse_rpc_request (UgJson* json, - const char* name, const char* value, - void* jsonrpc, void* type) +UgJsonError ug_json_parse_rpc_request(UgJson* json, + const char* name, const char* value, + void* jsonrpc, void* type) { UgJsonrpc* jrpc = jsonrpc; @@ -573,18 +574,18 @@ *(int*)type = UG_JSON_OBJECT; if (jrpc->data.request.object == NULL) break; - ug_json_push (json, ug_json_parse_entry, + ug_json_push(json, ug_json_parse_entry, jrpc->data.request.object, (void*)UgJsonrpcObjectEntry); - return ug_json_parse_entry (json, name, value, + return ug_json_parse_entry(json, name, value, jrpc->data.request.object, (void*)UgJsonrpcObjectEntry); case UG_JSON_ARRAY: *(int*)type = UG_JSON_ARRAY; if (jrpc->data.request.array == NULL) break; - ug_json_push (json, ug_json_parse_rpc_array, + ug_json_push(json, ug_json_parse_rpc_array, jrpc->data.request.array, NULL); - return ug_json_parse_rpc_array (json, name, value, + return ug_json_parse_rpc_array(json, name, value, jrpc->data.request.array, NULL); default: diff -Nru uget-2.0.2/uglib/UgJsonrpcCurl.c uget-2.2.2/uglib/UgJsonrpcCurl.c --- uget-2.0.2/uglib/UgJsonrpcCurl.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgJsonrpcCurl.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -92,7 +92,8 @@ curl_easy_setopt (jrcurl->curl, CURLOPT_CONNECTTIMEOUT, 15); curl_easy_setopt (jrcurl->curl, CURLOPT_NOSIGNAL, 1L); // disable peer SSL certificate verification - curl_easy_setopt (jrcurl->curl, CURLOPT_SSL_VERIFYPEER, FALSE); + curl_easy_setopt (jrcurl->curl, CURLOPT_SSL_VERIFYHOST, 0L); + curl_easy_setopt (jrcurl->curl, CURLOPT_SSL_VERIFYPEER, 0L); } static size_t ug_jsonrpc_curl_write (char* buffer, size_t size, size_t nmemb, UgJsonrpcCurl* jrcurl) diff -Nru uget-2.0.2/uglib/UgJsonrpcCurl.h uget-2.2.2/uglib/UgJsonrpcCurl.h --- uget-2.0.2/uglib/UgJsonrpcCurl.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgJsonrpcCurl.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/uglib/UgJsonrpc.h uget-2.2.2/uglib/UgJsonrpc.h --- uget-2.0.2/uglib/UgJsonrpc.h 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgJsonrpc.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -101,49 +101,50 @@ UgJsonrpcError error; }; -UgJsonrpcObject* ug_jsonrpc_object_new (void); -void ug_jsonrpc_object_free (UgJsonrpcObject* jrobj); +UgJsonrpcObject* ug_jsonrpc_object_new(void); +void ug_jsonrpc_object_free(UgJsonrpcObject* jrobj); -void ug_jsonrpc_object_init (UgJsonrpcObject* jrobj); -void ug_jsonrpc_object_clear (UgJsonrpcObject* jrobj); +void ug_jsonrpc_object_init(UgJsonrpcObject* jrobj); +void ug_jsonrpc_object_clear(UgJsonrpcObject* jrobj); -void ug_jsonrpc_object_clear_request (UgJsonrpcObject* jrobj); -void ug_jsonrpc_object_clear_response (UgJsonrpcObject* jrobj); +void ug_jsonrpc_object_clear_request(UgJsonrpcObject* jrobj); +void ug_jsonrpc_object_clear_response(UgJsonrpcObject* jrobj); // check request, and return error code. -//int ug_jsonrpc_object_check (UgJsonrpcObject* jrobj); +//int ug_jsonrpc_object_check(UgJsonrpcObject* jrobj); // parser: ug_json_parse_entry // writer: ug_json_write_entry will output all value in UgJsonrpcObject. // use below function to output JSON-RPC request and response object -void ug_json_write_rpc_object (UgJson* json, UgJsonrpcObject* jrobj); +void ug_json_write_rpc_object(UgJson* json, UgJsonrpcObject* jrobj); // ---------------------------------------------------------------------------- // UgJsonrpcArray: a UgJsonrpcObject array for batch -//void ug_jsonrpc_array_init (UgJsonrpcArray* joarray, int allocated_len); +//void ug_jsonrpc_array_init(UgJsonrpcArray* joarray, int allocated_len); #define ug_jsonrpc_array_init(array, allocated_len) \ - ug_array_init (array, sizeof (UgJsonrpcObject*), allocated_len) + ug_array_init(array, sizeof(UgJsonrpcObject*), allocated_len) -// bool free_objects -void ug_jsonrpc_array_clear (UgJsonrpcArray* joarray, int free_objects); +// param free_objects: TRUE or FALSE +void ug_jsonrpc_array_clear(UgJsonrpcArray* joarray, int free_objects); -UgJsonrpcObject* ug_jsonrpc_array_find (UgJsonrpcArray* joarray, UgValue* id, int* index); -UgJsonrpcObject* ug_jsonrpc_array_alloc (UgJsonrpcArray* joarray); +UgJsonrpcObject* ug_jsonrpc_array_find(UgJsonrpcArray* joarray, UgValue* id, int* index); +UgJsonrpcObject* ug_jsonrpc_array_alloc(UgJsonrpcArray* joarray); // ------------------------------------ -UgJsonError ug_json_parse_rpc_array (UgJson* json, - const char* name, const char* value, - void* jrarray, void* none); -// bool noArrayIfOk -void ug_json_write_rpc_array (UgJson* json, UgJsonrpcArray* objects, int noArrayIfOk); +UgJsonError ug_json_parse_rpc_array(UgJson* json, + const char* name, const char* value, + void* jrarray, void* none); +// param noArrayIfPossible: TRUE or FALSE +void ug_json_write_rpc_array(UgJson* json, UgJsonrpcArray* objects, + int noArrayIfPossible); // If program doesn't known incoming data type, // this function can parse UgJsonrpcArray or UgJsonrpcObject. // This function used by server. -UgJsonError ug_json_parse_rpc_unknown (UgJson* json, - const char* name, const char* value, - void* jrarray, void* jrobject); +UgJsonError ug_json_parse_rpc_unknown(UgJson* json, + const char* name, const char* value, + void* jrarray, void* jrobject); // ---------------------------------------------------------------------------- // UgJsonrpc: JSON-RPC Client & Server @@ -184,20 +185,20 @@ } data; }; -void ug_jsonrpc_init (UgJsonrpc* jrpc, UgJson* json, UgBuffer* buffer); -void ug_jsonrpc_clear (UgJsonrpc* jrpc); +void ug_jsonrpc_init(UgJsonrpc* jrpc, UgJson* json, UgBuffer* buffer); +void ug_jsonrpc_clear(UgJsonrpc* jrpc); // ------------------------------------ // client API : set response == NULL if this is notify request // if error occurred, return -1 -int ug_jsonrpc_call (UgJsonrpc* jrpc, - UgJsonrpcObject* request, - UgJsonrpcObject* response); - -int ug_jsonrpc_call_batch (UgJsonrpc* jrpc, - UgJsonrpcArray* request, - UgJsonrpcArray* response); +int ug_jsonrpc_call(UgJsonrpc* jrpc, + UgJsonrpcObject* request, + UgJsonrpcObject* response); + +int ug_jsonrpc_call_batch(UgJsonrpc* jrpc, + UgJsonrpcArray* request, + UgJsonrpcArray* response); // ------------------------------------ // server API @@ -205,20 +206,20 @@ // return 0 if remote disconnected. // return -1 if error occurred. // if ok, return UG_JSON_ARRAY or UG_JSON_OBJECT and set jr_array or jr_object. -int ug_jsonrpc_receive (UgJsonrpc* jrpc, - UgJsonrpcObject* jr_object, - UgJsonrpcArray* jr_array); +int ug_jsonrpc_receive(UgJsonrpc* jrpc, + UgJsonrpcObject* jr_object, + UgJsonrpcArray* jr_array); -int ug_jsonrpc_response (UgJsonrpc* jrpc, - UgJsonrpcObject* jr_object); +int ug_jsonrpc_response(UgJsonrpc* jrpc, + UgJsonrpcObject* jr_object); -int ug_jsonrpc_response_batch (UgJsonrpc* jrpc, - UgJsonrpcArray* jr_array); +int ug_jsonrpc_response_batch(UgJsonrpc* jrpc, + UgJsonrpcArray* jr_array); // This function used by UgJsonrpc server mode. -UgJsonError ug_json_parse_rpc_request (UgJson* json, - const char* name, const char* value, - void* jsonrpc, void* type); +UgJsonError ug_json_parse_rpc_request(UgJson* json, + const char* name, const char* value, + void* jsonrpc, void* type); #ifdef __cplusplus } diff -Nru uget-2.0.2/uglib/UgJsonrpcSocket.c uget-2.2.2/uglib/UgJsonrpcSocket.c --- uget-2.0.2/uglib/UgJsonrpcSocket.c 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgJsonrpcSocket.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -209,7 +209,7 @@ UgThread thread; }; -static UG_THREAD_RETURN_TYPE jrpc_thread (struct UgJsonrpcSocketThread* jrst) +static UgThreadResult jrpc_thread (struct UgJsonrpcSocketThread* jrst) { UgSocketServer* server; UgJsonrpcServerFunc callback; @@ -221,7 +221,7 @@ ug_free (jrst); ug_socket_server_unref (server); // ref() on on_accepted() - return UG_THREAD_RETURN_VALUE; + return UG_THREAD_RESULT; } static void on_receiving (UgSocketServer* server, SOCKET client_fd, void* data) diff -Nru uget-2.0.2/uglib/UgJsonrpcSocket.h uget-2.2.2/uglib/UgJsonrpcSocket.h --- uget-2.0.2/uglib/UgJsonrpcSocket.h 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgJsonrpcSocket.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -64,10 +64,12 @@ struct UgJsonrpcSocket { UG_JSONRPC_SOCKET_MEMBERS; -// UgJson json; -// UgJsonrpc rpc; -// UgBuffer buffer; -// int socket; +/* // ------ UgJsonrpcSocket members ------ + UgJson json; + UgJsonrpc rpc; + UgBuffer buffer; + int socket; + */ }; void ug_jsonrpc_socket_init (UgJsonrpcSocket* jrsock); diff -Nru uget-2.0.2/uglib/UgList.c uget-2.2.2/uglib/UgList.c --- uget-2.0.2/uglib/UgList.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgList.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -112,6 +112,17 @@ } } +void ug_list_foreach_link (UgList* list, UgForeachFunc func, void* data) +{ + UgLink* link; + UgLink* next; + + for (link = list->head; link; link = next) { + next = link->next; + func (link, data); + } +} + void ug_list_prepend (UgList* list, UgLink* link) { link->prev = NULL; diff -Nru uget-2.0.2/uglib/UgList.h uget-2.2.2/uglib/UgList.h --- uget-2.0.2/uglib/UgList.h 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgList.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -103,6 +103,7 @@ void ug_list_clear (UgList* list, int free_links); void ug_list_foreach (UgList* list, UgForeachFunc func, void* data); +void ug_list_foreach_link (UgList* list, UgForeachFunc func, void* data); void ug_list_prepend (UgList* list, UgLink* link); void ug_list_append (UgList* list, UgLink* link); void ug_list_insert (UgList* list, UgLink* sibling, UgLink* link); diff -Nru uget-2.0.2/uglib/UgNode.c uget-2.2.2/uglib/UgNode.c --- uget-2.0.2/uglib/UgNode.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgNode.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/uglib/UgNode.h uget-2.2.2/uglib/UgNode.h --- uget-2.0.2/uglib/UgNode.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgNode.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -60,13 +60,15 @@ struct UgNode { UG_NODE_MEMBERS (UgNode, void, data); -// void* data; -// UgNode* next; -// UgNode* prev; -// UgNode* parent; -// UgNode* children; -// UgNode* last; -// int n_children; +/* + void* data; + UgNode* next; + UgNode* prev; + UgNode* parent; + UgNode* children; + UgNode* last; + int n_children; + */ }; UgNode* ug_node_new (void); diff -Nru uget-2.0.2/uglib/UgOption.c uget-2.2.2/uglib/UgOption.c --- uget-2.0.2/uglib/UgOption.c 2015-07-20 16:35:47.000000000 +0000 +++ uget-2.2.2/uglib/UgOption.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/uglib/UgOption.h uget-2.2.2/uglib/UgOption.h --- uget-2.0.2/uglib/UgOption.h 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgOption.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/uglib/UgRegistry.c uget-2.2.2/uglib/UgRegistry.c --- uget-2.0.2/uglib/UgRegistry.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgRegistry.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -37,103 +37,68 @@ #include #include -// ---------------------------------------------------------------------------- -// UgPairs - -void ug_registry_init (UgRegistry* reg) +void ug_registry_init(UgRegistry* reg) { - ug_array_init (reg, sizeof (UgPair), 16); + ug_array_init(reg, sizeof(UgPair), 16); reg->sorted = FALSE; } -void ug_registry_final (UgRegistry* reg) +void ug_registry_final(UgRegistry* reg) { - ug_array_clear (reg); + ug_array_clear(reg); } -void ug_registry_add (UgRegistry* reg, const UgDataInfo* info) +void ug_registry_add(UgRegistry* reg, const void* typeinfo) { UgPair* pair; int index; if (reg->sorted == FALSE || reg->length == 0) - pair = ug_array_alloc (reg, 1); + pair = ug_array_alloc(reg, 1); else { - pair = ug_registry_find (reg, info->name, &index); - if (pair == NULL) { - ug_array_alloc (reg, 1); - memmove (reg->at + index + 1, reg->at + index, - sizeof (UgPair) * (reg->length - index - 1)); - pair = reg->at + index; - } + pair = ug_registry_find(reg, ((UgTypeInfo*)typeinfo)->name, &index); + if (pair == NULL) + pair = ug_array_insert(reg, index, 1); } - pair->key = (void*) info->name; - pair->data = (void*) info; + pair->key = (void*) ((UgTypeInfo*)typeinfo)->name; + pair->data = (void*) typeinfo; } -void ug_registry_remove (UgRegistry* reg, const UgDataInfo* info) +void ug_registry_remove(UgRegistry* reg, const void* typeinfo) { UgPair* cur; + int index; - cur = ug_registry_find (reg, info->name, NULL); - if (cur) { - memmove (cur, cur +1, - sizeof (UgPair) * (reg->length - (cur - reg->at) -1)); - } + cur = ug_registry_find(reg, ((UgTypeInfo*)typeinfo)->name, &index); + if (cur) + ug_array_erase(reg, index, 1); } -UgPair* ug_registry_find (UgRegistry* reg, const char* key, int* inserted_index) +UgPair* ug_registry_find(UgRegistry* reg, const char* key, int* inserted_index) { - UgPair* low; UgPair* cur; - UgPair* high; - int diff; - - low = reg->at; - high = reg->at + reg->length; - cur = low; + UgPair* end; if (reg->sorted == FALSE) { - for (; low < high; low++) { - if (strcmp (low->key, key) == 0) { + cur = reg->at; + end = reg->at + reg->length; + for (; cur < end; cur++) { + if (strcmp(cur->key, key) == 0) { if (inserted_index) - inserted_index[0] = low - reg->at; - return low; + inserted_index[0] = cur - reg->at; + return cur; } } return NULL; } - while (low < high) { - cur = low + (high - low) / 2; - - diff = strcmp (cur->key, key); - if (diff == 0) { - if (inserted_index) - inserted_index[0] = cur - reg->at; - return cur; - } - else if (diff > 0) - high = cur; - else if (diff < 0) - low = cur + 1; - } - - if (inserted_index) { - if (cur < low) - cur++; - *inserted_index = cur - reg->at; - } - return NULL; -} - -static int compare_key_string (UgPair* pair1, UgPair* pair2) -{ - return strcmp (pair1->key, pair2->key); + return ug_array_find_sorted(reg, &key, + ug_array_compare_string, + inserted_index); } -void ug_registry_sort (UgRegistry* reg) +void ug_registry_sort(UgRegistry* reg) { - ug_array_sort (reg, (UgCompareFunc) compare_key_string); + ug_array_sort(reg, ug_array_compare_string); reg->sorted = TRUE; } diff -Nru uget-2.0.2/uglib/UgRegistry.h uget-2.2.2/uglib/UgRegistry.h --- uget-2.0.2/uglib/UgRegistry.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgRegistry.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -48,7 +48,7 @@ typedef struct UgRegistry UgRegistry; // ---------------------------------------------------------------------------- -// UgPair +// UgPair: key-data pair that is used by UgRegistry and UgInfo struct UgPair { @@ -56,34 +56,57 @@ void* data; }; -// ---------------------------------------------------------------------------- -// UgRegistry : store info and it's name. It search info by name. - -struct UgRegistry -{ - UG_ARRAY_MEMBERS (UgPair); -// UgPair** at; -// int length; -// int allocated; -// int element_size; - - int sorted; -}; +/* ---------------------------------------------------------------------------- + UgRegistry: store UgTypeInfo and it's name and search UgTypeInfo by name. + key pointer to UgTypeInfo.name + data pointer to UgTypeInfo + */ -void ug_registry_init (UgRegistry* reg); -void ug_registry_final (UgRegistry* reg); +// ---------------------------------------------------------------------------- +// UgRegistry functions -void ug_registry_add (UgRegistry* reg, const UgDataInfo* info); -void ug_registry_remove (UgRegistry* reg, const UgDataInfo* info); -UgPair* ug_registry_find (UgRegistry* reg, const char* key, int* index); +void ug_registry_init(UgRegistry* reg); +void ug_registry_final(UgRegistry* reg); -void ug_registry_sort (UgRegistry* reg); +void ug_registry_add(UgRegistry* reg, const void* type_info); +void ug_registry_remove(UgRegistry* reg, const void* type_info); +UgPair* ug_registry_find(UgRegistry* reg, const char* type_name, int* index); +void ug_registry_sort(UgRegistry* reg); #ifdef __cplusplus } #endif +// ---------------------------------------------------------------------------- +// UgRegistry structure + +struct UgRegistry +{ + UG_ARRAY_MEMBERS(UgPair); +/* // ------ UgArray members ------ + UgPair* at; + int length; + int allocated; + int element_size; + */ + + int sorted; + +#ifdef __cplusplus + inline void init(void) + { ug_registry_init(this); } + inline void final(void) + { ug_registry_final(this); } + + inline void add(const void* typeInfo) + { ug_registry_add(this, typeInfo); } + inline void remove(const void* typeInfo) + { ug_registry_remove(this, typeInfo); } + inline UgPair* find(const char* typeName, int* index = NULL) + { return ug_registry_find(this, typeName, index); } +#endif // __cplusplus +}; // ---------------------------------------------------------------------------- // C++11 standard-layout diff -Nru uget-2.0.2/uglib/UgSLink.c uget-2.2.2/uglib/UgSLink.c --- uget-2.0.2/uglib/UgSLink.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgSLink.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -52,20 +52,33 @@ void ug_slinks_add (UgSLinks* slinks, void* data) { UgSLink* link; - UgSLink* used; + UgSLink* old_used; + UgSLink* old_at; + UgSLink* current; - used = slinks->used; + old_used = slinks->used; if (slinks->freed != NULL) { link = slinks->freed; - slinks->used = slinks->freed; slinks->freed = link->next; + // move link from freed list to used list. + link->next = old_used; } else { - slinks->used = slinks->at + slinks->length; - link = ug_array_alloc (slinks, 1); + old_at = slinks->at; + link = (UgSLink*) ug_array_alloc (slinks, 1); + if (old_at != slinks->at && old_used) { + slinks->used = slinks->at + (old_used - old_at); + for (current = slinks->used; ; current = current->next) { + if (current->next == NULL) + break; + current->next = slinks->at + (current->next - old_at); + } + } + // move link to used list. + link->next = slinks->used; } - link->next = used; link->data = data; + slinks->used = link; slinks->n_links++; } @@ -95,12 +108,12 @@ link = prev->next; if (link) { - // remove link from used index + // remove link from used links if (prev) prev->next = link->next; else slinks->used = link->next; - // add link to freed index + // add link to freed links link->next = slinks->freed; slinks->freed = link; } diff -Nru uget-2.0.2/uglib/UgSLink.h uget-2.2.2/uglib/UgSLink.h --- uget-2.0.2/uglib/UgSLink.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgSLink.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -69,13 +69,18 @@ struct UgSLinks { UG_SLINKS_MEMBERS; -// UgSLink* at; -// int length; -// int allocated; -// int element_size -// int n_links; -// UgSLink* used; -// UgSLink* freed; +/* + // ------ UgArray members ------ + UgSLink* at; + int length; + int allocated; + int element_size + + // ------ UgSLinks members ------ + int n_links; + UgSLink* used; + UgSLink* freed; + */ }; void ug_slinks_init (UgSLinks* slinks, int allocated_len); diff -Nru uget-2.0.2/uglib/UgSocket.c uget-2.2.2/uglib/UgSocket.c --- uget-2.0.2/uglib/UgSocket.c 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgSocket.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -84,15 +84,15 @@ connect (fd, (struct sockaddr *) &saddr, sizeof(saddr)); */ for (cur = result; cur; cur = cur->ai_next) { - if (connect (fd, result->ai_addr, result->ai_addrlen) == 0) + if (connect (fd, cur->ai_addr, cur->ai_addrlen) == 0) break; } - if (cur == NULL) { - freeaddrinfo (result); + + freeaddrinfo (result); // free result from getaddrinfo() + + if (cur == NULL) return SOCKET_ERROR; - } - freeaddrinfo (result); return fd; } @@ -125,6 +125,31 @@ #endif // ! (_WIN32 || _WIN64) +int ug_socket_set_blocking (SOCKET fd, int is_blocking) +{ +#if defined _WIN32 || defined _WIN64 + u_long is_non_blocking = (is_blocking) ? FALSE : TRUE; + + if (ioctlsocket (fd, FIONBIO, &is_non_blocking) == SOCKET_ERROR) + return FALSE; +#else + long arg; + + if ( (arg = fcntl (fd, F_GETFL, NULL)) < 0) + return FALSE; + + if (is_blocking) + arg &= (~O_NONBLOCK); + else + arg |= O_NONBLOCK; + + if (fcntl (fd, F_SETFL, arg) < 0) + return FALSE; +#endif + + return TRUE; +} + // ------------------------------------ // Server API @@ -136,6 +161,10 @@ struct addrinfo* cur; socklen_t len; int type; + int opt = 1; + + if (setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&opt, sizeof (int)) == -1) + return SOCKET_ERROR; len = sizeof (type); if (getsockopt (fd, SOL_SOCKET, SO_TYPE, (char*) &type, &len) == -1) @@ -161,21 +190,18 @@ */ for (cur = result; cur; cur = cur->ai_next) { - if (bind (fd, result->ai_addr, result->ai_addrlen) == 0) + if (bind (fd, cur->ai_addr, cur->ai_addrlen) == 0) break; } - if (cur == NULL) - goto error_exit; + freeaddrinfo (result); // free result from getaddrinfo() + + if (cur == NULL) + return SOCKET_ERROR; if (listen (fd, backlog) == -1) - goto error_exit; + return SOCKET_ERROR; - freeaddrinfo (result); return fd; - -error_exit: - freeaddrinfo (result); - return SOCKET_ERROR; } #if !(defined _WIN32 || defined _WIN64) @@ -215,7 +241,7 @@ // ------------------------------------ // UgSocketServer -static UG_THREAD_RETURN_TYPE server_thread (UgSocketServer* server); +static UgThreadResult server_thread (UgSocketServer* server); UgSocketServer* ug_socket_server_new (SOCKET server_fd) { @@ -322,7 +348,7 @@ } } -static UG_THREAD_RETURN_TYPE server_thread (UgSocketServer* server) +static UgThreadResult server_thread (UgSocketServer* server) { struct timeval timeout; int client_fd; @@ -357,5 +383,5 @@ server->stopping = FALSE; server->stopped = TRUE; ug_socket_server_unref (server); - return UG_THREAD_RETURN_VALUE; + return UG_THREAD_RESULT; } diff -Nru uget-2.0.2/uglib/UgSocket.h uget-2.2.2/uglib/UgSocket.h --- uget-2.0.2/uglib/UgSocket.h 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgSocket.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -84,13 +84,17 @@ // Client API // IPv4 or IPv6 -// return SOCKET, return SOCKET_ERROR in error +// return SOCKET_ERROR(-1) if error occurred. int ug_socket_connect (SOCKET fd, const char* addr, const char* port_or_serv); #if !(defined _WIN32 || defined _WIN64) +// UNIX Domain Socket int ug_socket_connect_unix (SOCKET fd, const char* path, int path_len); #endif // ! (_WIN32 || _WIN64) +// return TRUE or FALSE +int ug_socket_set_blocking (SOCKET fd, int is_blocking); + // ------------------------------------ // Server API @@ -102,28 +106,30 @@ int backlog); #if !(defined _WIN32 || defined _WIN64) +// UNIX Domain Socket int ug_socket_listen_unix (SOCKET fd, const char* path, int path_len, int backlog); #endif // ! (_WIN32 || _WIN64) +/* // ------------------------------------ // UgSocketServer -// sample code: -// -// UgSocketServer* server; -// SOCKET server_fd; -// -// server_fd = socket (AF_INET, SOCK_STREAM, 0); -// ug_socket_listen (server_fd, "127.0.0.1", "80", 5); -// -// server = ug_socket_server_new (server_fd); -// ug_socket_server_set_receiver (server, callback, callback_data); -// ug_socket_server_start (server); -// -// // --- now client can connect to server --- -// -// ug_socket_server_stop (server); -// ug_socket_server_unref (server); + // sample code: + UgSocketServer* server; + SOCKET server_fd; + + server_fd = socket (AF_INET, SOCK_STREAM, 0); + ug_socket_listen (server_fd, "127.0.0.1", "80", 5); + + server = ug_socket_server_new (server_fd); + ug_socket_server_set_receiver (server, callback, callback_data); + ug_socket_server_start (server); + + // --- now client can connect to server --- + + ug_socket_server_stop (server); + ug_socket_server_unref (server); + */ typedef struct UgSocketServer UgSocketServer; typedef void (*UgSocketServerFunc) (UgSocketServer* server, @@ -173,6 +179,7 @@ UgSocketServer* ug_socket_server_new_addr (const char* addr, const char* port_or_serv); #if !(defined _WIN32 || defined _WIN64) +// UNIX Domain Socket UgSocketServer* ug_socket_server_new_unix (const char* path, int path_len); #endif diff -Nru uget-2.0.2/uglib/UgStdio.c uget-2.2.2/uglib/UgStdio.c --- uget-2.0.2/uglib/UgStdio.c 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgStdio.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -38,7 +38,7 @@ #define _CRT_SECURE_NO_DEPRECATE // avoid some warning (MS VC 2005) #include #include // _wmkdir(), _wrmdir() -#endif +#endif // _WIN32 || _WIN64 #include #include @@ -131,7 +131,7 @@ // UNIX #else -#if defined (HAVE_GLIB) +#if defined HAVE_GLIB int ug_open (const char* filename_utf8, int flags, int mode) { if (g_get_filename_charsets (NULL)) @@ -208,10 +208,10 @@ #endif // _WIN32 || _WIN64 #ifdef __ANDROID__ -#include +//#include int fseek_64 (FILE *stream, int64_t offset, int origin) -{ +{ int fd; if (feof (stream)) { @@ -224,8 +224,8 @@ fd = fileno (stream); if (lseek64 (fd, offset, origin) == -1) { return errno; - } - return 0; + } + return 0; } int64_t ftell_64 (FILE *stream) @@ -233,7 +233,7 @@ int fd; fd = fileno (stream); - return lseek (fd, 0L, SEEK_CUR); + return lseek64 (fd, 0L, SEEK_CUR); } #endif // __ANDROID__ @@ -276,7 +276,7 @@ return retval; } -int ug_unlink (const char *filename) +int ug_remove (const char *filename) { wchar_t *wfilename = ug_utf8_to_utf16 (filename, -1, NULL); int save_errno; @@ -287,27 +287,7 @@ return -1; } - retval = _wunlink (wfilename); - save_errno = errno; - - ug_free (wfilename); - - errno = save_errno; - return retval; -} - -int ug_create_dir (const char *dir_utf8) -{ - wchar_t *wfilename = ug_utf8_to_utf16 (dir_utf8, -1, NULL); - int save_errno; - int retval; - - if (wfilename == NULL) { - errno = EINVAL; - return -1; - } - - retval = _wmkdir (wfilename); + retval = _wremove (wfilename); save_errno = errno; ug_free (wfilename); @@ -316,9 +296,9 @@ return retval; } -int ug_delete_dir (const char *dir_utf8) +int ug_unlink (const char *filename) { - wchar_t *wfilename = ug_utf8_to_utf16 (dir_utf8, -1, NULL); + wchar_t *wfilename = ug_utf8_to_utf16 (filename, -1, NULL); int save_errno; int retval; @@ -327,7 +307,7 @@ return -1; } - retval = _wrmdir (wfilename); + retval = _wunlink (wfilename); save_errno = errno; ug_free (wfilename); @@ -340,8 +320,8 @@ // UNIX #else -#if defined (HAVE_GLIB) -int ug_rename (const gchar *old_filename, const gchar *new_filename) +#if defined HAVE_GLIB +int ug_rename (const char *old_filename, const char *new_filename) { if (g_get_filename_charsets (NULL)) return g_rename (old_filename, new_filename); @@ -369,10 +349,10 @@ } } -int ug_unlink (const gchar *filename) +int ug_remove (const char *filename) { if (g_get_filename_charsets (NULL)) - return g_unlink (filename); + return g_remove (filename); else { gchar *cp_filename = g_filename_from_utf8 (filename, -1, NULL, NULL, NULL); int save_errno; @@ -383,7 +363,7 @@ return -1; } - retval = g_unlink (cp_filename); + retval = g_remove (cp_filename); save_errno = errno; g_free (cp_filename); @@ -393,12 +373,12 @@ } } -int ug_create_dir (const gchar *dir_utf8) +int ug_unlink (const gchar *filename) { if (g_get_filename_charsets (NULL)) - return g_mkdir (dir_utf8, 0755); + return g_unlink (filename); else { - gchar *cp_filename = g_filename_from_utf8 (dir_utf8, -1, NULL, NULL, NULL); + gchar *cp_filename = g_filename_from_utf8 (filename, -1, NULL, NULL, NULL); int save_errno; int retval; @@ -407,7 +387,7 @@ return -1; } - retval = g_mkdir (cp_filename, 0755); + retval = g_unlink (cp_filename); save_errno = errno; g_free (cp_filename); @@ -417,29 +397,6 @@ } } -int ug_delete_dir (const gchar *dir_utf8) -{ - if (g_get_filename_charsets (NULL)) - return g_rmdir (dir_utf8); - else { - gchar *cp_filename = g_filename_from_utf8 (dir_utf8, -1, NULL, NULL, NULL); - int save_errno; - int retval; - - if (cp_filename == NULL) { - errno = EINVAL; - return -1; - } - - retval = g_rmdir (cp_filename); - save_errno = errno; - - g_free (cp_filename); - - errno = save_errno; - return retval; - } -} #endif // HAVE_GLIB #endif // _WIN32 || _WIN64 diff -Nru uget-2.0.2/uglib/UgStdio.h uget-2.2.2/uglib/UgStdio.h --- uget-2.0.2/uglib/UgStdio.h 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgStdio.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -160,9 +160,9 @@ # define UG_S_IWOTH S_IWOTH // Use with O_CREAT // OTHERS WRITE #endif -#if defined _WIN32 || defined _WIN64 || defined HAVE_GLIB // creat(path, mode) == open (path, O_WRONLY|O_CREAT|O_TRUNC, mode) // Returns : a new file descriptor, or -1 if an error occurred. +#if defined _WIN32 || defined _WIN64 || defined HAVE_GLIB || defined USE__ANDROID__SAF int ug_open (const char* filename_utf8, int flags, int mode); int ug_creat (const char* filename_utf8, int mode); #else @@ -179,12 +179,14 @@ # define ug_close _close # define ug_read _read # define ug_write _write +# define ug_sync _commit # define ug_seek _lseeki64 // for MS VC # define ug_tell _telli64 // for MS VC #else # define ug_close close # define ug_read read # define ug_write write +# define ug_sync fsync # if defined __ANDROID__ # define ug_seek lseek64 # define ug_tell(fd) lseek64(fd, 0L, SEEK_CUR) @@ -210,12 +212,15 @@ //# define fseeko64 fseek //#endif -#if defined _WIN32 || defined _WIN64 || defined HAVE_GLIB +#if defined _WIN32 || defined _WIN64 || defined HAVE_GLIB || defined USE__ANDROID__SAF FILE* ug_fopen (const char *filename_utf8, const char *mode); #else # define ug_fopen fopen #endif +// FILE* fdopen(int fd, const char *mode); +#define ug_fdopen fdopen + #if defined __ANDROID__ int fseek_64 (FILE *stream, int64_t offset, int origin); int64_t ftell_64 (FILE *stream); @@ -255,21 +260,23 @@ #define ug_fgets(file,buf,len) fgets (buf, len, file) #define ug_fgetc(file) fgetc (file) #define ug_fflush fflush -#define ug_fget_fd ug_fileno +#define ug_fdget ug_fileno // ---------------------------------------------------------------------------- // file & directory functions: these functions returns 0 if it is successful. -#if defined(_WIN32) || defined (HAVE_GLIB) +// ug_rename() renames a file, moving it between directories if required. +// ug_remove() deletes a name from the filesystem, it works for both files and directories. +// ug_unlink() If this was the last link to the file and no processes have it opened, the diskspace occupied by the file is freed. + +#if defined _WIN32 || defined _WIN64 || defined HAVE_GLIB || defined USE__ANDROID__SAF int ug_rename (const char *old_file_utf8, const char *new_file_utf8); +int ug_remove (const char *file_utf8); int ug_unlink (const char *file_utf8); -int ug_create_dir (const char *dir_utf8); -int ug_delete_dir (const char *dir_utf8); #else # define ug_rename rename +# define ug_remove remove # define ug_unlink unlink -# define ug_create_dir(dir) mkdir(dir,0755) -# define ug_delete_dir rmdir #endif #ifdef __cplusplus diff -Nru uget-2.0.2/uglib/UgString.c uget-2.2.2/uglib/UgString.c --- uget-2.0.2/uglib/UgString.c 2015-09-11 12:12:53.000000000 +0000 +++ uget-2.2.2/uglib/UgString.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -55,7 +55,7 @@ va_start (arg_list, format); #ifdef _MSC_VER - /* for M$ C only */ + /* for MS C only */ string_len = _vscprintf (format, arg_list); #else /* for C99 standard */ @@ -86,11 +86,22 @@ // return length of new string int ug_str_remove_crlf (const char* src, char* dest) { - int length = 0; + return ug_str_remove_chars (src, dest, "\r\n"); +} + +// return length of new string +int ug_str_remove_chars (const char* src, char* dest, const char* chars) +{ + const char* cur; + int length = 0; if (src) { for (; ; src++) { - if (src[0] == '\r' || src[0] == '\n') + for (cur = chars; cur[0]; cur++) { + if (src[0] == cur[0]) + break; + } + if (cur[0] != 0) continue; if (dest) @@ -107,14 +118,13 @@ // return number of characters was replaced by to_char int ug_str_replace_chars (char* str, const char* from_chars, int to_char) { - char* cur; int counts; - for (counts = 0, cur = str; ; counts++) { - cur = strpbrk (cur, from_chars); - if (cur == NULL) + for (counts = 0; ; counts++) { + str = strpbrk (str, from_chars); + if (str == NULL) break; - cur[0] = to_char; + str[0] = to_char; } return counts; } diff -Nru uget-2.0.2/uglib/UgString.h uget-2.2.2/uglib/UgString.h --- uget-2.0.2/uglib/UgString.h 2015-09-11 12:12:53.000000000 +0000 +++ uget-2.2.2/uglib/UgString.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -67,9 +67,10 @@ #define ug_strdup strdup #endif -// return length of new string -// dest can be src or NULL. +// return length of new string. +// param dest can be param src or NULL. int ug_str_remove_crlf (const char* src, char* dest); +int ug_str_remove_chars (const char* src, char* dest, const char* chars); // return number of characters was replaced by to_char int ug_str_replace_chars (char* str, const char* from_chars, int to_char); diff -Nru uget-2.0.2/uglib/UgThread.c uget-2.2.2/uglib/UgThread.c --- uget-2.0.2/uglib/UgThread.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgThread.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/uglib/UgThread.h uget-2.2.2/uglib/UgThread.h --- uget-2.0.2/uglib/UgThread.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgThread.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -46,25 +46,27 @@ #if defined _WIN32 || defined _WIN64 -typedef uintptr_t UgThread; -typedef void* UgMutex; - -typedef unsigned (*UgThreadFunc)(void*); - -#define UG_THREAD_RETURN_TYPE unsigned -#define UG_THREAD_RETURN_VALUE 0 -#define UG_THREAD_OK 0 - -int ug_thread_create (UgThread* thread, UgThreadFunc func, void* data); -int ug_thread_join (UgThread* thread); -void ug_thread_unjoin (UgThread* thread); -UgThread ug_thread_self (void); +typedef uintptr_t UgThread; +typedef void* UgMutex; +typedef unsigned UgThreadResult; + +// This function must return UG_THREAD_RESULT +typedef UgThreadResult (*UgThreadFunc)(void*); + +#define UG_THREAD_RESULT 0 +#define UG_THREAD_OK 0 + +// ug_thread_create() and ug_thread_join() return UG_THREAD_OK if successful +int ug_thread_create(UgThread* thread, UgThreadFunc func, void* data); +int ug_thread_join (UgThread* thread); +void ug_thread_unjoin(UgThread* thread); +UgThread ug_thread_self (void); // mutex ------ -void ug_mutex_init (UgMutex* mutex); +void ug_mutex_init (UgMutex* mutex); void ug_mutex_clear (UgMutex* mutex); -void ug_mutex_lock (UgMutex* mutex); -void ug_mutex_unlock (UgMutex* mutex); +void ug_mutex_lock (UgMutex* mutex); +void ug_mutex_unlock(UgMutex* mutex); //#elif defined(HAVE_PTHREAD) #else @@ -72,13 +74,15 @@ typedef pthread_t UgThread; typedef pthread_mutex_t UgMutex; +typedef void* UgThreadResult; -typedef void* (*UgThreadFunc)(void*); +// This function must return UG_THREAD_RESULT +typedef UgThreadResult (*UgThreadFunc)(void*); -#define UG_THREAD_RETURN_TYPE void* -#define UG_THREAD_RETURN_VALUE NULL -#define UG_THREAD_OK 0 +#define UG_THREAD_RESULT NULL +#define UG_THREAD_OK 0 +// ug_thread_create() and ug_thread_join() return UG_THREAD_OK if successful #define ug_thread_create(thread, func, data) \ pthread_create(thread, NULL, func, data) @@ -88,20 +92,20 @@ #define ug_thread_unjoin(thread) \ pthread_detach(*(thread)) -#define ug_thread_self() pthread_self() +#define ug_thread_self pthread_self // mutex ------ -// void ug_mutex_init (UgMutex* mutex); -#define ug_mutex_init(mutex) pthread_mutex_init (mutex, NULL) +// void ug_mutex_init(UgMutex* mutex); +#define ug_mutex_init(mutex) pthread_mutex_init(mutex, NULL) -// void ug_mutex_clear (UgMutex* mutex); -#define ug_mutex_clear(mutex) pthread_mutex_destroy (mutex) +// void ug_mutex_clear(UgMutex* mutex); +#define ug_mutex_clear(mutex) pthread_mutex_destroy(mutex) -// void ug_mutex_lock (UgMutex* mutex); -#define ug_mutex_lock(mutex) pthread_mutex_lock (mutex) +// void ug_mutex_lock(UgMutex* mutex); +#define ug_mutex_lock(mutex) pthread_mutex_lock(mutex) -// void ug_mutex_unlock (UgMutex* mutex); -#define ug_mutex_unlock(mutex) pthread_mutex_unlock (mutex) +// void ug_mutex_unlock(UgMutex* mutex); +#define ug_mutex_unlock(mutex) pthread_mutex_unlock(mutex) #endif // _WIN32 || _WIN64 diff -Nru uget-2.0.2/uglib/UgUri.c uget-2.2.2/uglib/UgUri.c --- uget-2.0.2/uglib/UgUri.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgUri.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -47,11 +47,11 @@ const char* cur; const char* tmp; - // scheme + // scheme - make sure ':' before '/', '%', '?', and '#' #if defined _WIN32 || defined _WIN64 - cur = strpbrk (uri, ":\\/?#"); // make sure ':' before '/', '?', and '#' + cur = strpbrk (uri, ":\\/%?#"); #else - cur = strpbrk (uri, ":/?#"); // make sure ':' before '/', '?', and '#' + cur = strpbrk (uri, ":/%?#"); #endif if (cur && cur[0] == ':') { if (upart == NULL) @@ -117,7 +117,10 @@ upart->fragment = -1; else { cur = tmp + 1; - upart->fragment = cur - uri; + if (cur - uri <= INT16_MAX) + upart->fragment = cur - uri; + else + upart->fragment = -1; } // host & port @@ -286,14 +289,26 @@ len = ug_uri_part_file (uuri, &str); if (len == 0) return NULL; - name = ug_unescape_uri (str, len); - if (ug_utf8_get_invalid ((uint8_t*) name, NULL) == -1) + name = ug_malloc (len + 1); + ug_decode_uri (str, len, name); + if (ug_utf8_get_invalid (name, NULL) == -1) return name; ug_free (name); return ug_strndup (str, len); } +int ug_uri_is_file(UgUri* uuri) +{ + if (uuri->scheme_len == 4) { + if (strncmp(uuri->uri, "file", 4) != 0) + return FALSE; + } + else if (uuri->scheme_len != 0) + return FALSE; + return TRUE; +} + // ------------------------------------ // match uri functions @@ -362,6 +377,54 @@ } // ------------------------------------ +// UgUriQuery + +int ug_uri_query_part (UgUriQuery* uuquery, const char* query_field) +{ + int ret_value; + + if (query_field == NULL) + return 0; + uuquery->field_len = strcspn (query_field, "=&#;,"); + if (uuquery->field_len == 0) + return 0; + + query_field += uuquery->field_len; + if (query_field[0] == '=') { + uuquery->value = (char*) query_field + 1; // + '=' + uuquery->value_len = strcspn (uuquery->value, "&#;,"); + query_field = uuquery->value + uuquery->value_len; + ret_value = 2; + } + else { + uuquery->value = NULL; + uuquery->value_len = 0; + ret_value = 1; + } + + // next field or next value + switch (query_field[0]) { + case ',': + uuquery->value_next = (char*) query_field + 1; + uuquery->field_next = NULL; + break; + + case '&': + case ';': + uuquery->value_next = NULL; + uuquery->field_next = (char*) query_field + 1; + break; + + default: + uuquery->value_next = NULL; + uuquery->field_next = NULL; + break; + } + + return ret_value; +} + +// ------------------------------------ // Other URI functions char* ug_filename_from_uri (const char* str) @@ -370,5 +433,44 @@ ug_uri_init (&uuri, str); return ug_uri_get_file ((UgUri*) &uuri); +} + +// return length of decoded uri. param dest can be param uri or NULL. +int ug_decode_uri (const char* uri, int length, char* dest) +{ + const char* uri_end; + char* dest_beg; + char* endptr; + char buf[3]; + + if (length == -1) + length = strlen (uri); + dest_beg = dest; + + for (uri_end = uri + length; uri < uri_end; uri++, dest++) { + if (uri[0] == '%' && uri + 2 < uri_end) { + buf[0] = uri[1]; + buf[1] = uri[2]; + buf[2] = 0; + endptr = NULL; + *(uint8_t*)buf = (uint8_t) strtoul (buf, &endptr, 16); + if (endptr == buf + 2) { + if (dest_beg) + *dest = *buf; + uri += 2; + continue; + } + } + + if (dest_beg) { + if (uri[0] == '+') + *dest = ' '; + else + *dest = *uri; + } + } + if (dest_beg) + *dest = 0; + return dest - dest_beg; } diff -Nru uget-2.0.2/uglib/UgUri.h uget-2.2.2/uglib/UgUri.h --- uget-2.0.2/uglib/UgUri.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/uglib/UgUri.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -75,15 +75,17 @@ struct UgUri { UG_URI_MEMBERS; -// const char* uri; -// int16_t scheme_len; -// int16_t authority; -// int16_t host; -// int16_t port; -// int16_t path; -// int16_t file; -// int16_t query; -// int16_t fragment; +/* + const char* uri; + int16_t scheme_len; + int16_t authority; + int16_t host; + int16_t port; + int16_t path; + int16_t file; + int16_t query; + int16_t fragment; + */ }; int ug_uri_init (UgUri* uuri, const char* uri); @@ -111,6 +113,7 @@ int ug_uri_get_port (UgUri* uuri); char* ug_uri_get_file (UgUri* uuri); +int ug_uri_is_file (UgUri* uuri); // ------------------------------------ // match uri functions @@ -125,8 +128,39 @@ int ug_uri_match_file_exts (UgUri* uuri, char** exts); // ------------------------------------ +// UgUriQuery + +// field1=value1&field2=value2&field3=value3,next_value + +typedef struct UgUriQuery UgUriQuery; + +struct UgUriQuery { + int field_len; + char* value; + int value_len; + + char* field_next; + char* value_next; +}; +/* + // e.g. + while (ug_uri_query_part(&uuquery, field) > 0) { + // your code here + field = uuquery->field_next; + } + */ +// return 0: if param 'query_field' is NULL. +// return 0: no field (end of query) +// return 1: field only +// return 2: field & value +int ug_uri_query_part (UgUriQuery* uuquery, const char* query_field); + +// ------------------------------------ // Other URI functions +// return length of decoded uri. param dest can be param uri or NULL. +int ug_decode_uri (const char* uri, int uri_length, char* dest); + char* ug_filename_from_uri (const char* uri); #ifdef __cplusplus diff -Nru uget-2.0.2/uglib/UgUtil.c uget-2.2.2/uglib/UgUtil.c --- uget-2.0.2/uglib/UgUtil.c 2015-04-30 23:36:03.000000000 +0000 +++ uget-2.2.2/uglib/UgUtil.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -44,6 +44,7 @@ #include #include // strtoul() +#include // wcslen() #include #include #include // ug_strdup() @@ -57,10 +58,6 @@ #include #endif -#if defined __OpenBSD__ // Others? -#include // wcslen() -#endif - // ---------------------------------------------------------------------------- // Time @@ -78,43 +75,45 @@ } // ---------------------------------------------------------------------------- -// URI +// Unicode -char* ug_unescape_uri (const char *uri, int length) +int ug_utf8_get_invalid (const char* input, char* ch) { - char* res; - char* eptr; - char* str; - const char* end; - - if (length == -1) - length = strlen (uri); - end = uri + length; - res = ug_malloc (length + 1); - str = res; - - while (uri < end) { - if (uri[0] == '%' && uri + 2 < end) { - str[0] = uri[1]; - str[1] = uri[2]; - str[2] = 0; - eptr = NULL; - *(uint8_t*)str = (uint8_t) strtoul (str, &eptr, 16); - if (eptr == str + 2) { - str++; - uri+=3; - continue; + int nb = 0, na; + const uint8_t *c; + + for (c = (uint8_t*) input; *c; c += (nb + 1)) { + if (!(*c & 0x80)) + nb = 0; + else if ((*c & 0xc0) == 0x80) { + if (ch) + *ch = *c; + return (intptr_t)c - (intptr_t)input; + } + else if ((*c & 0xe0) == 0xc0) + nb = 1; + else if ((*c & 0xf0) == 0xe0) + nb = 2; + else if ((*c & 0xf8) == 0xf0) + nb = 3; + else if ((*c & 0xfc) == 0xf8) + nb = 4; + else if ((*c & 0xfe) == 0xfc) + nb = 5; + + na = nb; + while (na-- > 0) { + if ((*(c + nb) & 0xc0) != 0x80) { + if (ch) + *ch = *(c + nb); + return (intptr_t)(c + nb) - (intptr_t)input; } } - *str++ = *uri++; } - *str = 0; - return res; + return -1; } -// ---------------------------------------------------------------------------- -// Unicode - +// 0xC0: Start of a 2-byte sequence static const uint8_t utf8Limits[] = {0xC0, 0xE0, 0xF0, 0xF8, 0xFC}; uint16_t* ug_utf8_to_utf16 (const char* string, int count, int* utf16len) @@ -173,87 +172,160 @@ } } - *dest++ = 0; if (utf16len) *utf16len = dest - result; + *dest++ = 0; return result; } -int ug_utf8_get_invalid (const uint8_t* input, uint8_t* ch) +char* ug_utf16_to_utf8 (const uint16_t* string, int count, int* utf8len) { - int nb = 0, na; - const uint8_t *c = input; + uint16_t ch; + uint8_t* result; + uint8_t* dest; + const uint16_t* end; - for (c = input; *c; c += (nb + 1)) { - if (!(*c & 0x80)) - nb = 0; - else if ((*c & 0xc0) == 0x80) { - if (ch) - *ch = *c; - return (intptr_t)c - (intptr_t)input; + if (count == -1) + count = wcslen ((wchar_t*) string); + end = string + count; + result = ug_malloc (sizeof (uint8_t) * (count+1) * 3); + dest = result; + + while (string < end) { + ch = *string++; + if (ch >= 1 && ch <= 0x7F) + *dest++ = (uint8_t) ch; + else if (ch > 0x7FF) { + *dest++ = (uint8_t) (0xE0 | ((ch >> 12) & 0x0F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 6) & 0x3F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 0) & 0x3F)); } - else if ((*c & 0xe0) == 0xc0) - nb = 1; - else if ((*c & 0xf0) == 0xe0) - nb = 2; - else if ((*c & 0xf8) == 0xf0) - nb = 3; - else if ((*c & 0xfc) == 0xf8) - nb = 4; - else if ((*c & 0xfe) == 0xfc) - nb = 5; + else { + *dest++ = (uint8_t) (0xC0 | ((ch >> 6) & 0x1F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 0) & 0x3F)); + } + } - na = nb; - while (na-- > 0) { - if ((*(c + nb) & 0xc0) != 0x80) { - if (ch) - *ch = *(c + nb); - return (intptr_t)(c + nb) - (intptr_t)input; - } + if (utf8len) + *utf8len = dest - result; + *dest++ = 0; + return (char*)result; +} + +uint32_t* ug_utf8_to_ucs4 (const char* string, int count, int* ucs4len) +{ + uint8_t ch; + uint32_t* result; + uint32_t* dest; + uint32_t value; + const char* end; + + if (count == -1) + count = strlen (string); + end = string + count; + result = ug_malloc (sizeof (uint32_t) * (count+1) ); + dest = result; + + while (string < end) { + ch = *string++; + + if(ch < 0x80) { // 0-127, US-ASCII (single byte) + *dest++ = (uint32_t)ch; + continue; } + + if(ch < 0xC0) // The first octet for each code point should within 0-191 + break; + + for(count = 1; count < 5; count++) + if(ch < utf8Limits[count]) + break; + value = ch - utf8Limits[count - 1]; + + do { + uint8_t ch2; + + if (string >= end) // || string[0] == 0 + break; + ch2 = *string++; + if (ch2 == 0) + break; + if(ch2 < 0x80 || ch2 >= 0xC0) + break; + value <<= 6; + value |= (ch2 - 0x80); + } while(--count != 0); + + *dest++ = value; } - return -1; + + if (ucs4len) + *ucs4len = dest - result; + *dest++ = 0; + return result; } -uint8_t* ug_utf16_to_utf8 (uint16_t* string, int count, - int* utf8len) +char* ug_ucs4_to_utf8 (const uint32_t* string, int count, int* utf8len) { - uint16_t ch; + uint32_t ch; uint8_t* result; uint8_t* dest; - const uint16_t* end; + const uint32_t* end; - if (count == -1) - count = wcslen (string); + if (count == -1) { + for (count = 0; string[count] != 0; count++) + ; + } end = string + count; - result = ug_malloc (sizeof (uint8_t) * (count+1) * 3); + result = ug_malloc (sizeof (uint8_t) * (count+1) * 6); dest = result; while (string < end) { ch = *string++; if (ch >= 1 && ch <= 0x7F) *dest++ = (uint8_t) ch; + else if (ch > 0x3FFFFFF) { + *dest++ = (uint8_t) (0xFC | ((ch >> 30) & 0x01)); + *dest++ = (uint8_t) (0x80 | ((ch >> 24) & 0x3F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 18) & 0x3F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 12) & 0x3F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 6) & 0x3F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 0) & 0x3F)); + } + else if (ch > 0x10FFFF) { + *dest++ = (uint8_t) (0xF8 | ((ch >> 24) & 0x03)); + *dest++ = (uint8_t) (0x80 | ((ch >> 18) & 0x3F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 12) & 0x3F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 6) & 0x3F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 0) & 0x3F)); + } + else if (ch > 0xFFFF) { + *dest++ = (uint8_t) (0xF0 | ((ch >> 18) & 0x07)); + *dest++ = (uint8_t) (0x80 | ((ch >> 12) & 0x3F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 6) & 0x3F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 0) & 0x3F)); + } else if (ch > 0x7FF) { *dest++ = (uint8_t) (0xE0 | ((ch >> 12) & 0x0F)); *dest++ = (uint8_t) (0x80 | ((ch >> 6) & 0x3F)); *dest++ = (uint8_t) (0x80 | ((ch >> 0) & 0x3F)); } else { - *dest++ = (uint8_t) (0xC0 | ((ch >> 12) & 0x1F)); - *dest++ = (uint8_t) (0x80 | ((ch >> 6) & 0x3F)); + *dest++ = (uint8_t) (0xC0 | ((ch >> 6) & 0x1F)); + *dest++ = (uint8_t) (0x80 | ((ch >> 0) & 0x3F)); } } - *dest++ = 0; if (utf8len) *utf8len = dest - result; - return result; + *dest++ = 0; + return (char*)result; } // ---------------------------------------------------------------------------- // Base64 -static int mod_table[] = {0, 2, 1}; +static int mod_table[] = {0, 2, 1}; static char encoding_table[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', @@ -262,8 +334,25 @@ 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'}; +static char *decoding_table = NULL; -char* ug_base64_encode (const uint8_t* data, int input_length, +static void ug_base64_build_decoding_table() +{ + int i; + decoding_table = ug_malloc(256); + + for (i = 0; i < 64; i++) + decoding_table[(unsigned char) encoding_table[i]] = i; +} + +void ug_base64_cleanup() +{ + ug_free (decoding_table); + decoding_table = NULL; +} + +char* ug_base64_encode (const unsigned char* data, + int input_length, int* output_length) { int i, j; @@ -291,12 +380,88 @@ for (i = 0; i < mod_table[input_length % 3]; i++) encoded_data[length - 1 - i] = '='; - encoded_data[length] = '\0'; if (output_length) *output_length = length; + encoded_data[length] = '\0'; return encoded_data; } +unsigned char* ug_base64_decode (const char* data, + int input_length, + int* output_length) +{ + int i, j; + int length, pad_len; + unsigned char *decoded_data; + uint32_t sextet_a, sextet_b, sextet_c, sextet_d, triple; + + if (decoding_table == NULL) + ug_base64_build_decoding_table (); + +#if 1 + // for removed trailing "==" or "=" + pad_len = input_length & 3; // pad_len = input_length % 4; + if (pad_len > 0) { + pad_len = 4 - pad_len; + if (pad_len > 2) + return NULL; + } + + length = (input_length + pad_len) / 4 * 3; + if (pad_len > 0) + length -= pad_len; + else { + if (data[input_length - 1] == '=') + length--; + if (data[input_length - 2] == '=') + length--; + } +#else + if (input_length % 4 != 0) + return NULL; + + length = input_length / 4 * 3; + if (data[input_length - 1] == '=') + length--; + if (data[input_length - 2] == '=') + length--; +#endif + + decoded_data = ug_malloc (length + 1); // + '\0' for decoded text data + if (decoded_data == NULL) + return NULL; + + for (i = 0, j = 0; i < input_length;) { + sextet_a = data[i] == '=' ? 0 & i++ : decoding_table[(uint8_t)data[i++]]; + sextet_b = data[i] == '=' ? 0 & i++ : decoding_table[(uint8_t)data[i++]]; + if (i == input_length) // for removed trailing "==" + sextet_c = 0; + else + sextet_c = data[i] == '=' ? 0 & i++ : decoding_table[(uint8_t)data[i++]]; + if (i == input_length) // for removed trailing "=" + sextet_d = 0; + else + sextet_d = data[i] == '=' ? 0 & i++ : decoding_table[(uint8_t)data[i++]]; + + triple = (sextet_a << 3 * 6) + + (sextet_b << 2 * 6) + + (sextet_c << 1 * 6) + + (sextet_d << 0 * 6); + + if (j < length) + decoded_data[j++] = (triple >> 2 * 8) & 0xFF; + if (j < length) + decoded_data[j++] = (triple >> 1 * 8) & 0xFF; + if (j < length) + decoded_data[j++] = (triple >> 0 * 8) & 0xFF; + } + + if (output_length) + *output_length = length; + decoded_data[length] = '\0'; // + '\0' for decoded text data + return decoded_data; +} + // ---------------------------------------------------------------------------- // filename and path functions diff -Nru uget-2.0.2/uglib/UgUtil.h uget-2.2.2/uglib/UgUtil.h --- uget-2.0.2/uglib/UgUtil.h 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgUtil.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -48,33 +48,40 @@ // ---------------------------------------------------------------------------- // Time -uint64_t ug_get_time_count (void); - -// ---------------------------------------------------------------------------- -// URI - -char* ug_unescape_uri (const char *uri, int length); +uint64_t ug_get_time_count (void); // ---------------------------------------------------------------------------- // Unicode +int ug_utf8_get_invalid (const char* input, char* ch); + uint16_t* ug_utf8_to_utf16 (const char* string, int stringLength, int* utf16len); -int ug_utf8_get_invalid (const uint8_t* input, uint8_t* ch); -uint8_t* ug_utf16_to_utf8 (uint16_t* string, int stringLength, +char* ug_utf16_to_utf8 (const uint16_t* string, int stringLength, int* utf8len); +uint32_t* ug_utf8_to_ucs4 (const char* string, int stringLength, + int* ucs4len); + +char* ug_ucs4_to_utf8 (const uint32_t* string, int stringLength, + int* utf8len); + // ---------------------------------------------------------------------------- // Base64 -char* ug_base64_encode (const uint8_t* data, int input_length, +char* ug_base64_encode (const unsigned char* data, + int input_length, int* output_length); +unsigned char* ug_base64_decode (const char* data, + int input_length, + int* output_length); + // ---------------------------------------------------------------------------- // filename & path functions -char* ug_build_filename (const char* first_element, ...); +char* ug_build_filename (const char* first_element, ...); // ---------------------------------------------------------------------------- // Power Management diff -Nru uget-2.0.2/uglib/UgValue.c uget-2.2.2/uglib/UgValue.c --- uget-2.0.2/uglib/UgValue.c 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgValue.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -45,60 +45,65 @@ #define strtoull _strtoui64 #endif -static UgValueArray* ug_value_array_new (int preAllocate); -static void ug_value_array_free (UgValueArray* varray); +static UgValueArray* ug_value_array_new(int preAllocate); +static void ug_value_array_free(UgValueArray* varray); #define ug_value_object_new ug_value_array_new #define ug_value_object_free ug_value_array_free // ---------------------------------------------------------------------------- // UgValue -void ug_value_init (UgValue* value) +void ug_value_init(UgValue* value) { value->type = UG_VALUE_NONE; value->name = NULL; } -void ug_value_clear (UgValue* value) +void ug_value_clear(UgValue* value) { switch (value->type) { case UG_VALUE_STRING: - ug_free (value->c.string); + ug_free(value->c.string); break; case UG_VALUE_OBJECT: case UG_VALUE_ARRAY: - ug_value_array_free (value->c.array); + ug_value_array_free(value->c.array); break; -#ifdef HAVE_UG_VALUE_CUSTOM - case UG_VALUE_CUSTOM: - ug_value_custom_free (value->c.custom); -#endif - default: break; } - ug_free (value->name); + ug_free(value->name); value->name = NULL; value->type = UG_VALUE_NONE; } -void ug_value_init_array (UgValue* value, int nElements) +void ug_value_init_type(UgValue* value, UgValueType type) { - value->type = UG_VALUE_ARRAY; + if (type == UG_VALUE_OBJECT) + value->c.object = ug_value_object_new(8); + else if (type == UG_VALUE_ARRAY) + value->c.array = ug_value_array_new(8); value->name = NULL; - value->c.array = ug_value_array_new (nElements); + value->type = type; } -void ug_value_init_object (UgValue* value, int nMembers) +void ug_value_init_array(UgValue* value, int nElements) +{ + value->name = NULL; + value->type = UG_VALUE_ARRAY; + value->c.array = ug_value_array_new(nElements); +} + +void ug_value_init_object(UgValue* value, int nMembers) { - value->type = UG_VALUE_OBJECT; value->name = NULL; - value->c.array = ug_value_object_new (nMembers); + value->type = UG_VALUE_OBJECT; + value->c.array = ug_value_object_new(nMembers); } -UgValue* ug_value_alloc (UgValue* uvalue, int nValue) +UgValue* ug_value_alloc(UgValue* uvalue, int nValue) { int len; UgValue* value; @@ -114,8 +119,8 @@ // if (len < 16) // len = 16; varray->allocated = len + 1; - uvalue->c.array = ug_realloc (varray, - sizeof (UgValueArray) + sizeof (UgValue[1]) * len); + uvalue->c.array = ug_realloc(varray, + sizeof(UgValueArray) + sizeof(UgValue[1]) * len); varray = uvalue->c.array; } len = varray->length; @@ -133,7 +138,7 @@ } #if 0 -UgValue* ug_value_alloc_front (UgValue* uvalue, int nValue) +UgValue* ug_value_alloc_front(UgValue* uvalue, int nValue) { int len; UgValue* value; @@ -149,13 +154,13 @@ // if (len < 16) // len = 16; varray->allocated = len + 1; - uvalue->c.array = ug_realloc (varray, - sizeof (UgValueArray) + sizeof (UgValue[1]) * len); + uvalue->c.array = ug_realloc(varray, + sizeof(UgValueArray) + sizeof(UgValue[1]) * len); varray = uvalue->c.array; } - memmove (varray->at + nValue, varray->at, - sizeof (UgValue) * varray->length); + memmove(varray->at + nValue, varray->at, + sizeof(UgValue) * varray->length); varray->length += nValue; value = varray->at; @@ -169,71 +174,71 @@ } #endif -UgValue* ug_value_find_name (UgValue* value, const char* name) +UgValue* ug_value_find_name(UgValue* value, const char* name) { UgValue temp; if (value->type == UG_VALUE_OBJECT) { temp.name = (char*)name; - return bsearch (&temp, value->c.object->at, value->c.object->length, - sizeof (UgValue), ug_value_compare_name); + return bsearch(&temp, value->c.object->at, value->c.object->length, + sizeof(UgValue), ug_value_compare_name); } return NULL; } -void ug_value_sort_recursive (UgValue* value, UgCompareFunc compare) +void ug_value_sort_recursive(UgValue* value, UgCompareFunc compare) { UgValue* end; if (value->type == UG_VALUE_OBJECT) { - ug_value_sort (value, compare); + ug_value_sort(value, compare); end = value->c.object->at + value->c.object->length; for (value = value->c.object->at; value < end; value++) - ug_value_sort_recursive (value, compare); + ug_value_sort_recursive(value, compare); } } -int ug_value_compare_name (const void* value1, const void* value2) +int ug_value_compare_name(const void* value1, const void* value2) { - return strcmp (((UgValue*)value1)->name, ((UgValue*)value2)->name); + return strcmp(((UgValue*)value1)->name, ((UgValue*)value2)->name); } -int ug_value_compare_string (const void* value1, const void* value2) +int ug_value_compare_string(const void* value1, const void* value2) { - return strcmp (((UgValue*)value1)->c.string, ((UgValue*)value2)->c.string); + return strcmp(((UgValue*)value1)->c.string, ((UgValue*)value2)->c.string); } -void ug_value_set_name (UgValue* value, void* data) +void ug_value_set_name(UgValue* value, void* data) { value->name = data; } -void ug_value_set_string (UgValue* value, void* data) +void ug_value_set_string(UgValue* value, void* data) { if (value->type == UG_VALUE_STRING) value->c.string = data; } -void ug_value_set_name_string (UgValue* value, void* data) +void ug_value_set_name_string(UgValue* value, void* data) { value->name = data; if (value->type == UG_VALUE_STRING) value->c.string = data; } -void ug_value_foreach (UgValue* value, UgValueForeachFunc func, void* data) +void ug_value_foreach(UgValue* value, UgValueForeachFunc func, void* data) { UgValue* end; - func (value, data); + func(value, data); if (value->type >= UG_VALUE_OBJECT) { end = value->c.object->at + value->c.object->length; for (value = value->c.object->at; value < end; value++) - ug_value_foreach (value, func, data); + ug_value_foreach(value, func, data); } } -int ug_value_get_int (UgValue* uvalue) +int ug_value_get_int(UgValue* uvalue) { switch (uvalue->type) { default: @@ -253,11 +258,11 @@ return (int) uvalue->c.fraction; case UG_VALUE_STRING: - return strtol (uvalue->c.string, NULL, 10); + return strtol(uvalue->c.string, NULL, 10); } } -int64_t ug_value_get_int64 (UgValue* uvalue) +int64_t ug_value_get_int64(UgValue* uvalue) { switch (uvalue->type) { case UG_VALUE_INT: @@ -277,11 +282,11 @@ return (int64_t) uvalue->c.fraction; case UG_VALUE_STRING: - return strtoll (uvalue->c.string, NULL, 10); + return strtoll(uvalue->c.string, NULL, 10); } } -uint64_t ug_value_get_uint64 (UgValue* uvalue) +uint64_t ug_value_get_uint64(UgValue* uvalue) { switch (uvalue->type) { case UG_VALUE_INT: @@ -301,33 +306,26 @@ return (uint64_t) uvalue->c.fraction; case UG_VALUE_STRING: - return strtoull (uvalue->c.string, NULL, 10); + return strtoull(uvalue->c.string, NULL, 10); } } -static UgJsonError ug_json_parse_value_array (UgJson* json, +static UgJsonError ug_json_parse_value_array(UgJson* json, const char* name, const char* value, void* uvalue, void* none); -UgJsonError ug_json_parse_value (UgJson* json, - const char* name, const char* value, - void* data, void* none) +UgJsonError ug_json_parse_value(UgJson* json, + const char* name, const char* value, + void* data, void* none) { UgValue* uvalue; uvalue = data; if (json->scope == UG_JSON_OBJECT) - uvalue->name = ug_strdup (name); + uvalue->name = ug_strdup(name); else uvalue->name = NULL; -#ifdef HAVE_UG_VALUE_CUSTOM - if (uvalue->type == UG_VALUE_CUSTOM) { - return uvalue->c.custom->parse (json, name, value, - uvalue->c.custom->data, uvalue->c.custom->data2); - } -#endif - switch (json->type) { case UG_JSON_NULL: uvalue->type = UG_VALUE_STRING; @@ -345,12 +343,12 @@ break; case UG_JSON_NUMBER: - if (strchr (value, '.')) { + if (strchr(value, '.')) { uvalue->type = UG_VALUE_DOUBLE; - uvalue->c.fraction = strtod (value, NULL); + uvalue->c.fraction = strtod(value, NULL); } else if (value[0] == '-') { - uvalue->c.integer64 = (int64_t) strtoll (value, NULL, 10); + uvalue->c.integer64 = (int64_t) strtoll(value, NULL, 10); if (uvalue->c.integer64 >= INT_MIN) { uvalue->c.integer = (int) uvalue->c.integer64; uvalue->type = UG_VALUE_INT; @@ -359,7 +357,7 @@ uvalue->type = UG_VALUE_INT64; } else { - uvalue->c.uinteger64 = (uint64_t) strtoull (value, NULL, 10); + uvalue->c.uinteger64 = (uint64_t) strtoull(value, NULL, 10); if (uvalue->c.uinteger64 <= INT_MAX) { uvalue->c.integer = (int) uvalue->c.uinteger64; uvalue->type = UG_VALUE_INT; @@ -379,19 +377,19 @@ case UG_JSON_STRING: uvalue->type = UG_VALUE_STRING; - uvalue->c.string = ug_strdup (value); + uvalue->c.string = ug_strdup(value); break; case UG_JSON_OBJECT: uvalue->type = UG_VALUE_OBJECT; - uvalue->c.object = ug_value_object_new (8); - ug_json_push (json, ug_json_parse_value_array, uvalue, NULL); + uvalue->c.object = ug_value_object_new(8); + ug_json_push(json, ug_json_parse_value_array, uvalue, NULL); break; case UG_JSON_ARRAY: uvalue->type = UG_VALUE_ARRAY; - uvalue->c.array = ug_value_array_new (8); - ug_json_push (json, ug_json_parse_value_array, uvalue, NULL); + uvalue->c.array = ug_value_array_new(8); + ug_json_push(json, ug_json_parse_value_array, uvalue, NULL); break; default: @@ -402,65 +400,58 @@ return UG_JSON_ERROR_NONE; } -static void ug_json_write_value_array (UgJson* json, UgValueArray* varray); +static void ug_json_write_value_array(UgJson* json, UgValueArray* varray); -void ug_json_write_value (UgJson* json, UgValue* uvalue) +void ug_json_write_value(UgJson* json, UgValue* uvalue) { if (uvalue->type == UG_VALUE_NONE) return; if (uvalue->name) - ug_json_write_string (json, uvalue->name); + ug_json_write_string(json, uvalue->name); switch (uvalue->type) { case UG_VALUE_BOOL: - ug_json_write_bool (json, uvalue->c.boolean); + ug_json_write_bool(json, uvalue->c.boolean); break; case UG_VALUE_INT: - ug_json_write_int (json, uvalue->c.integer); + ug_json_write_int(json, uvalue->c.integer); break; case UG_VALUE_UINT: - ug_json_write_uint (json, uvalue->c.uinteger); + ug_json_write_uint(json, uvalue->c.uinteger); break; case UG_VALUE_INT64: - ug_json_write_int64 (json, uvalue->c.integer64); + ug_json_write_int64(json, uvalue->c.integer64); break; case UG_VALUE_UINT64: - ug_json_write_uint64 (json, uvalue->c.uinteger64); + ug_json_write_uint64(json, uvalue->c.uinteger64); break; case UG_VALUE_DOUBLE: - ug_json_write_double (json, uvalue->c.fraction); + ug_json_write_double(json, uvalue->c.fraction); break; case UG_VALUE_STRING: if (uvalue->c.string) - ug_json_write_string (json, uvalue->c.string); + ug_json_write_string(json, uvalue->c.string); else - ug_json_write_null (json); + ug_json_write_null(json); break; case UG_VALUE_OBJECT: - ug_json_write_object_head (json); - ug_json_write_value_array (json, uvalue->c.array); - ug_json_write_object_tail (json); + ug_json_write_object_head(json); + ug_json_write_value_array(json, uvalue->c.array); + ug_json_write_object_tail(json); break; case UG_VALUE_ARRAY: - ug_json_write_array_head (json); - ug_json_write_value_array (json, uvalue->c.array); - ug_json_write_array_tail (json); - break; - -#ifdef HAVE_UG_VALUE_CUSTOM - case UG_VALUE_CUSTOM: - uvalue->c.custom->write (json, uvalue->c.custom->data, - uvalue->c.custom->data2); + ug_json_write_array_head(json); + ug_json_write_value_array(json, uvalue->c.array); + ug_json_write_array_tail(json); break; -#endif default: break; @@ -470,17 +461,17 @@ // ---------------------------------------------------------------------------- // UgValueArray = UgValueObject -static UgValueArray* ug_value_array_new (int preAllocate) +static UgValueArray* ug_value_array_new(int preAllocate) { UgValueArray* varray; - varray = ug_malloc (sizeof (UgValueArray) + sizeof (UgValue) * preAllocate); + varray = ug_malloc(sizeof(UgValueArray) + sizeof(UgValue) * preAllocate); varray->allocated = preAllocate + 1; varray->length = 0; return varray; } -static void ug_value_array_free (UgValueArray* varray) +static void ug_value_array_free(UgValueArray* varray) { UgValue* cur; UgValue* end; @@ -488,21 +479,21 @@ cur = varray->at; end = varray->at + varray->length; for (; cur < end; cur++) - ug_value_clear (cur); - ug_free (varray); + ug_value_clear(cur); + ug_free(varray); } -static UgJsonError ug_json_parse_value_array (UgJson* json, +static UgJsonError ug_json_parse_value_array(UgJson* json, const char* name, const char* value, void* uvalue, void* none) { UgValue* uvalue1; - uvalue1 = ug_value_alloc (uvalue, 1); - return ug_json_parse_value (json, name, value, uvalue1, none); + uvalue1 = ug_value_alloc(uvalue, 1); + return ug_json_parse_value(json, name, value, uvalue1, none); } -static void ug_json_write_value_array (UgJson* json, UgValueArray* varray) +static void ug_json_write_value_array(UgJson* json, UgValueArray* varray) { UgValue* cur; UgValue* end; @@ -510,31 +501,6 @@ cur = varray->at; end = varray->at + varray->length; for (; cur < end; cur++) - ug_json_write_value (json, cur); -} - -// ---------------------------------------------------------------------------- -// UgValueCustom - -#ifdef HAVE_UG_VALUE_CUSTOM - -UgValueCustom* ug_value_custom_new (void) -{ - UgValueCustom* custom; - - custom = ug_malloc0 (sizeof (UgValueCustom)); - custom->free_this = TRUE; - return custom; + ug_json_write_value(json, cur); } -void ug_value_custom_free (UgValueCustom* custom) -{ - if (custom->destroy.func) - custom->destroy.func (custom->destroy.data); - - if (custom->free_this) - ug_free (custom); -} - -#endif // HAVE_UG_VALUE_CUSTOM - diff -Nru uget-2.0.2/uglib/UgValue.h uget-2.2.2/uglib/UgValue.h --- uget-2.0.2/uglib/UgValue.h 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/uglib/UgValue.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -69,10 +69,6 @@ UG_VALUE_OBJECT, // JSON object, C UgValueObject (UgValueArray) UG_VALUE_ARRAY, // JSON array, C UgValueArray - -#ifdef HAVE_UG_VALUE_CUSTOM - UG_VALUE_CUSTOM, -#endif } UgValueType; // ---------------------------------------------------------------------------- @@ -91,77 +87,136 @@ UgValueArray* array; UgValueObject* object; -#ifdef HAVE_UG_VALUE_CUSTOM - UgValueCustom* custom; -#endif // void* pointer; }; // ---------------------------------------------------------------------------- -// UgValue +// UgValue functions -struct UgValue -{ - char* name; - UgValueType type; - UgValueC c; -}; +void ug_value_init(UgValue* value); +void ug_value_clear(UgValue* value); -void ug_value_init (UgValue* value); -void ug_value_clear (UgValue* value); - -void ug_value_init_array (UgValue* value, int nElements); -void ug_value_init_object (UgValue* value, int nMembers); +void ug_value_init_type(UgValue* value, UgValueType type); +void ug_value_init_array(UgValue* value, int nElements); +void ug_value_init_object(UgValue* value, int nMembers); // You can use this if UgValue.type == UG_VALUE_ARRAY or UG_VALUE_OBJECT. -UgValue* ug_value_alloc (UgValue* uvalue, int nValue); +UgValue* ug_value_alloc(UgValue* uvalue, int nValue); #if 0 -UgValue* ug_value_alloc_front (UgValue* uvalue, int nValue); +UgValue* ug_value_alloc_front(UgValue* uvalue, int nValue); #endif -// void ug_value_sort (UgValue* value, UgCompareFunc compare); -#define ug_value_sort(varray, compareFunc) \ - qsort ((varray)->c.array->at, (varray)->c.array->length, \ - sizeof (UgValue), compareFunc) - -// UgValue* ug_value_find (UgValue* value, UgValue* key, UgCompareFunc func); -#define ug_value_find(varray, key, compareFunc) \ - bsearch (key, (varray)->c.array->at, (varray)->c.array->length, \ - sizeof (UgValue), compareFunc) - -// void ug_value_sort_name (UgValue* value) -#define ug_value_sort_name(vobj) \ - qsort ((vobj)->c.object->at, (vobj)->c.object->length, \ - sizeof (UgValue), ug_value_compare_name) +// UgValue* ug_value_at(UgValue* value, UgValue* key, UgCompareFunc func); +#define ug_value_at(varray, index) \ + (varray)->c.array->at + (index) + +// int ug_value_length(UgValue* value); +#define ug_value_length(varray) \ + (varray)->c.array->length + +// void ug_value_sort(UgValue* value, UgCompareFunc compare); +#define ug_value_sort(varray, compareFunc) \ + qsort((varray)->c.array->at, (varray)->c.array->length, \ + sizeof(UgValue), compareFunc) + +// UgValue* ug_value_find(UgValue* value, UgValue* key, UgCompareFunc func); +#define ug_value_find(varray, key, compareFunc) \ + bsearch(key, (varray)->c.array->at, (varray)->c.array->length, \ + sizeof(UgValue), compareFunc) + +// void ug_value_sort_name(UgValue* value) +#define ug_value_sort_name(vobj) \ + qsort((vobj)->c.object->at, (vobj)->c.object->length, \ + sizeof(UgValue), ug_value_compare_name) -UgValue* ug_value_find_name (UgValue* value, const char* name); +UgValue* ug_value_find_name(UgValue* value, const char* name); // recursive functions -void ug_value_sort_recursive (UgValue* value, UgCompareFunc compare); -//void ug_value_sort_name_recursive (UgValue* value); -#define ug_value_sort_name_recursive(vobj) \ - ug_value_sort_recursive (vobj, ug_value_compare_name) +void ug_value_sort_recursive(UgValue* value, UgCompareFunc compare); +//void ug_value_sort_name_recursive(UgValue* value); +#define ug_value_sort_name_recursive(vobj) \ + ug_value_sort_recursive(vobj, ug_value_compare_name) -int ug_value_compare_name (const void* value1, const void* value2); -int ug_value_compare_string (const void* value1, const void* value2); +int ug_value_compare_name(const void* value1, const void* value2); +int ug_value_compare_string(const void* value1, const void* value2); // If you set static string in all UgValue.name or UgValue.c.string, // run ug_value_foreach() before you call ug_value_clear(). // e.g. -// ug_value_foreach (value, ug_value_set_name_string, NULL); -void ug_value_set_name (UgValue* value, void* data); -void ug_value_set_string (UgValue* value, void* data); -void ug_value_set_name_string (UgValue* value, void* data); -void ug_value_foreach (UgValue* value, UgValueForeachFunc func, void* data); - -int ug_value_get_int (UgValue* uvalue); -int64_t ug_value_get_int64 (UgValue* uvalue); -uint64_t ug_value_get_uint64 (UgValue* uvalue); - -UgJsonError ug_json_parse_value (UgJson* json, - const char* name, const char* value, - void* uvalue, void* none); -void ug_json_write_value (UgJson* json, UgValue* value); +// ug_value_foreach(value, ug_value_set_name_string, NULL); +void ug_value_set_name(UgValue* value, void* data); +void ug_value_set_string(UgValue* value, void* data); +void ug_value_set_name_string(UgValue* value, void* data); +void ug_value_foreach(UgValue* value, UgValueForeachFunc func, void* data); + +int ug_value_get_int(UgValue* uvalue); +int64_t ug_value_get_int64(UgValue* uvalue); +uint64_t ug_value_get_uint64(UgValue* uvalue); + +UgJsonError ug_json_parse_value(UgJson* json, + const char* name, const char* value, + void* uvalue, void* none); +void ug_json_write_value(UgJson* json, UgValue* value); + +#ifdef __cplusplus +} +#endif + +// ---------------------------------------------------------------------------- +// UgValue structure + +struct UgValue +{ + char* name; + UgValueType type; + UgValueC c; + +#ifdef __cplusplus + // C++11 standard-layout + inline UgValue(void) + { ug_value_init(this); } + inline UgValue(UgValueType type) + { ug_value_init_type(this, type); } + inline ~UgValue(void) + { ug_value_clear(this); } + + inline void init(void) + { ug_value_init(this); } + inline void init(UgValueType type) + { ug_value_init_type(this, type); } + inline void initObject(int nMember) + { ug_value_init_object(this, nMember); } + inline void initArray(int nElement) + { ug_value_init_array(this, nElement); } + inline void clear(void) + { ug_value_clear(this); } + + inline UgValue* alloc(int nValue) + { return ug_value_alloc(this, nValue); } + // get nth element at object or array + inline UgValue* at(int index); + // return length of object or array + inline int length(void); + + // find by object's member name + inline UgValue* find(const char* name) + { return ug_value_find_name(this, name); } + // find at object or array + inline UgValue* find(UgValue* key, UgCompareFunc func); + + // sort by object's member name + inline void sort(); + // sort at object or array + inline void sort(UgCompareFunc func); + + // sort by object's member name + inline void sortRecursive() + { ug_value_sort_recursive(this, ug_value_compare_name); } + // sort at object or array + inline void sortRecursive(UgCompareFunc func) + { ug_value_sort_recursive(this, func); } +#endif // __cplusplus +}; // ---------------------------------------------------------------------------- // UgValueArray = UgValueObject @@ -174,33 +229,34 @@ }; // ---------------------------------------------------------------------------- -// UgValueCustom: used by UG_VALUE_CUSTOM. It can't parse value in JSON array. +// C++ inline functions -#ifdef HAVE_UG_VALUE_CUSTOM -typedef struct UgValueCustom UgValueCustom; +#ifdef __cplusplus +inline UgValue* UgValue::at(int index) + { return ug_value_at(this, index); } +inline int UgValue::length(void) + { return ug_value_length(this); } +inline UgValue* UgValue::find(UgValue* key, UgCompareFunc func) + { return (UgValue*) ug_value_find(this, key, func); } +inline void UgValue::sort() + { ug_value_sort_name(this); } +inline void UgValue::sort(UgCompareFunc func) + { ug_value_sort(this, func); } +#endif // __cplusplus -struct UgValueCustom -{ - UgJsonParseFunc parse; - UgJsonWriteFunc write; - void* data; - void* data2; - - int free_this; - struct { - UgNotifyFunc func; - void* data; - } destroy; -}; +// ---------------------------------------------------------------------------- +// C++11 standard-layout -UgValueCustom* ug_value_custom_new (void); -void ug_value_custom_free (UgValueCustom* vcustom); +#ifdef __cplusplus -#endif // HAVE_UG_VALUE_CUSTOM +namespace Ug +{ +// This one is for directly use only. You can NOT derived it. +typedef struct UgValueArray ValueArray; +typedef struct UgValue Value; +}; // namespace Ug -#ifdef __cplusplus -} -#endif +#endif // __cplusplus #endif // UG_VALUE_H diff -Nru uget-2.0.2/ui-gtk/Makefile.am uget-2.2.2/ui-gtk/Makefile.am --- uget-2.0.2/ui-gtk/Makefile.am 2014-03-04 00:53:28.000000000 +0000 +++ uget-2.2.2/ui-gtk/Makefile.am 2019-05-19 16:49:07.000000000 +0000 @@ -1,7 +1,7 @@ bin_PROGRAMS = uget-gtk uget_gtk_CPPFLAGS = \ - -DDATADIR='"$(datadir)"' \ + -DUG_DATADIR='"$(datadir)"' \ -I$(top_srcdir)/ui-gtk \ -I$(top_srcdir)/uget \ -I$(top_srcdir)/uglib @@ -11,7 +11,7 @@ @LFS_CFLAGS@ \ @CURL_CFLAGS@ \ @LIBGCRYPT_CFLAGS@ \ - @LIBCRYPTO_CFLAGS@ \ + @LIBCRYPTO_CFLAGS@ \ @GTK_CFLAGS@ \ @LIBNOTIFY_CFLAGS@ \ @APP_INDICATOR_CFLAGS@ \ @@ -26,7 +26,7 @@ @PTHREAD_LIBS@ \ @CURL_LIBS@ \ @LIBGCRYPT_LIBS@ \ - @LIBCRYPTO_LIBS@ \ + @LIBCRYPTO_LIBS@ \ @GTK_LIBS@ \ @LIBNOTIFY_LIBS@ \ @APP_INDICATOR_LIBS@ \ @@ -38,8 +38,8 @@ UgtkNodeList.c UgtkNodeTree.c UgtkNodeView.c \ UgtkTraveler.c UgtkSummary.c \ UgtkTrayIcon.c UgtkBanner.c \ + UgtkSequence.c UgtkSelector.c \ UgtkProxyForm.c UgtkDownloadForm.c UgtkCategoryForm.c \ - UgtkSequencer.c UgtkSelector.c \ UgtkNodeDialog.c UgtkBatchDialog.c \ UgtkScheduleForm.c UgtkSettingForm.c UgtkSettingDialog.c \ UgtkConfirmDialog.c UgtkAboutDialog.c \ @@ -52,8 +52,8 @@ UgtkNodeList.h UgtkNodeTree.h UgtkNodeView.h \ UgtkTraveler.h UgtkSummary.h \ UgtkTrayIcon.h UgtkBanner.h \ + UgtkSequence.h UgtkSelector.h \ UgtkProxyForm.h UgtkDownloadForm.h UgtkCategoryForm.h \ - UgtkSequencer.h UgtkSelector.h \ UgtkNodeDialog.h UgtkBatchDialog.h \ UgtkScheduleForm.h UgtkSettingForm.h UgtkSettingDialog.h \ UgtkConfirmDialog.h UgtkAboutDialog.h \ diff -Nru uget-2.0.2/ui-gtk/Makefile.in uget-2.2.2/ui-gtk/Makefile.in --- uget-2.0.2/ui-gtk/Makefile.in 2015-09-11 12:13:21.000000000 +0000 +++ uget-2.2.2/ui-gtk/Makefile.in 2019-05-19 16:51:35.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,6 +16,61 @@ VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -35,12 +89,12 @@ POST_UNINSTALL = : bin_PROGRAMS = uget-gtk$(EXEEXT) subdir = ui-gtk -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ + $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -54,11 +108,11 @@ uget_gtk-UgtkNodeView.$(OBJEXT) \ uget_gtk-UgtkTraveler.$(OBJEXT) uget_gtk-UgtkSummary.$(OBJEXT) \ uget_gtk-UgtkTrayIcon.$(OBJEXT) uget_gtk-UgtkBanner.$(OBJEXT) \ + uget_gtk-UgtkSequence.$(OBJEXT) \ + uget_gtk-UgtkSelector.$(OBJEXT) \ uget_gtk-UgtkProxyForm.$(OBJEXT) \ uget_gtk-UgtkDownloadForm.$(OBJEXT) \ uget_gtk-UgtkCategoryForm.$(OBJEXT) \ - uget_gtk-UgtkSequencer.$(OBJEXT) \ - uget_gtk-UgtkSelector.$(OBJEXT) \ uget_gtk-UgtkNodeDialog.$(OBJEXT) \ uget_gtk-UgtkBatchDialog.$(OBJEXT) \ uget_gtk-UgtkScheduleForm.$(OBJEXT) \ @@ -77,19 +131,95 @@ $(top_builddir)/uglib/libuglib.a uget_gtk_LINK = $(CCLD) $(uget_gtk_CFLAGS) $(CFLAGS) \ $(uget_gtk_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/uget_gtk-UgtkAboutDialog.Po \ + ./$(DEPDIR)/uget_gtk-UgtkApp-callback.Po \ + ./$(DEPDIR)/uget_gtk-UgtkApp-main.Po \ + ./$(DEPDIR)/uget_gtk-UgtkApp-timeout.Po \ + ./$(DEPDIR)/uget_gtk-UgtkApp-ui.Po \ + ./$(DEPDIR)/uget_gtk-UgtkApp.Po \ + ./$(DEPDIR)/uget_gtk-UgtkBanner.Po \ + ./$(DEPDIR)/uget_gtk-UgtkBatchDialog.Po \ + ./$(DEPDIR)/uget_gtk-UgtkCategoryForm.Po \ + ./$(DEPDIR)/uget_gtk-UgtkConfig.Po \ + ./$(DEPDIR)/uget_gtk-UgtkConfirmDialog.Po \ + ./$(DEPDIR)/uget_gtk-UgtkDownloadForm.Po \ + ./$(DEPDIR)/uget_gtk-UgtkMenubar-ui.Po \ + ./$(DEPDIR)/uget_gtk-UgtkMenubar.Po \ + ./$(DEPDIR)/uget_gtk-UgtkNodeDialog.Po \ + ./$(DEPDIR)/uget_gtk-UgtkNodeList.Po \ + ./$(DEPDIR)/uget_gtk-UgtkNodeTree.Po \ + ./$(DEPDIR)/uget_gtk-UgtkNodeView.Po \ + ./$(DEPDIR)/uget_gtk-UgtkProxyForm.Po \ + ./$(DEPDIR)/uget_gtk-UgtkScheduleForm.Po \ + ./$(DEPDIR)/uget_gtk-UgtkSelector.Po \ + ./$(DEPDIR)/uget_gtk-UgtkSequence.Po \ + ./$(DEPDIR)/uget_gtk-UgtkSetting.Po \ + ./$(DEPDIR)/uget_gtk-UgtkSettingDialog.Po \ + ./$(DEPDIR)/uget_gtk-UgtkSettingForm.Po \ + ./$(DEPDIR)/uget_gtk-UgtkSummary.Po \ + ./$(DEPDIR)/uget_gtk-UgtkTraveler.Po \ + ./$(DEPDIR)/uget_gtk-UgtkTrayIcon.Po \ + ./$(DEPDIR)/uget_gtk-UgtkUtil.Po am__mv = mv -f +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(uget_gtk_SOURCES) DIST_SOURCES = $(uget_gtk_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -147,6 +277,7 @@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LFS_CFLAGS = @LFS_CFLAGS@ LFS_LDFLAGS = @LFS_LDFLAGS@ @@ -239,7 +370,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ uget_gtk_CPPFLAGS = \ - -DDATADIR='"$(datadir)"' \ + -DUG_DATADIR='"$(datadir)"' \ -I$(top_srcdir)/ui-gtk \ -I$(top_srcdir)/uget \ -I$(top_srcdir)/uglib @@ -249,7 +380,7 @@ @LFS_CFLAGS@ \ @CURL_CFLAGS@ \ @LIBGCRYPT_CFLAGS@ \ - @LIBCRYPTO_CFLAGS@ \ + @LIBCRYPTO_CFLAGS@ \ @GTK_CFLAGS@ \ @LIBNOTIFY_CFLAGS@ \ @APP_INDICATOR_CFLAGS@ \ @@ -263,7 +394,7 @@ @PTHREAD_LIBS@ \ @CURL_LIBS@ \ @LIBGCRYPT_LIBS@ \ - @LIBCRYPTO_LIBS@ \ + @LIBCRYPTO_LIBS@ \ @GTK_LIBS@ \ @LIBNOTIFY_LIBS@ \ @APP_INDICATOR_LIBS@ \ @@ -275,8 +406,8 @@ UgtkNodeList.c UgtkNodeTree.c UgtkNodeView.c \ UgtkTraveler.c UgtkSummary.c \ UgtkTrayIcon.c UgtkBanner.c \ + UgtkSequence.c UgtkSelector.c \ UgtkProxyForm.c UgtkDownloadForm.c UgtkCategoryForm.c \ - UgtkSequencer.c UgtkSelector.c \ UgtkNodeDialog.c UgtkBatchDialog.c \ UgtkScheduleForm.c UgtkSettingForm.c UgtkSettingDialog.c \ UgtkConfirmDialog.c UgtkAboutDialog.c \ @@ -289,8 +420,8 @@ UgtkNodeList.h UgtkNodeTree.h UgtkNodeView.h \ UgtkTraveler.h UgtkSummary.h \ UgtkTrayIcon.h UgtkBanner.h \ + UgtkSequence.h UgtkSelector.h \ UgtkProxyForm.h UgtkDownloadForm.h UgtkCategoryForm.h \ - UgtkSequencer.h UgtkSelector.h \ UgtkNodeDialog.h UgtkBatchDialog.h \ UgtkScheduleForm.h UgtkSettingForm.h UgtkSettingDialog.h \ UgtkConfirmDialog.h UgtkAboutDialog.h \ @@ -313,14 +444,13 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ui-gtk/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu ui-gtk/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -333,14 +463,18 @@ $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -361,16 +495,18 @@ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + uget-gtk$(EXEEXT): $(uget_gtk_OBJECTS) $(uget_gtk_DEPENDENCIES) $(EXTRA_uget_gtk_DEPENDENCIES) @rm -f uget-gtk$(EXEEXT) - $(uget_gtk_LINK) $(uget_gtk_OBJECTS) $(uget_gtk_LDADD) $(LIBS) + $(AM_V_CCLD)$(uget_gtk_LINK) $(uget_gtk_OBJECTS) $(uget_gtk_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -378,476 +514,471 @@ distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkAboutDialog.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkApp-callback.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkApp-main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkApp-timeout.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkApp-ui.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkApp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkBanner.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkBatchDialog.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkCategoryForm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkConfig.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkConfirmDialog.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkDownloadForm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkMenubar-ui.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkMenubar.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkNodeDialog.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkNodeList.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkNodeTree.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkNodeView.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkProxyForm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkScheduleForm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkSelector.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkSequencer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkSetting.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkSettingDialog.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkSettingForm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkSummary.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkTraveler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkTrayIcon.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkUtil.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkAboutDialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkApp-callback.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkApp-main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkApp-timeout.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkApp-ui.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkApp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkBanner.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkBatchDialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkCategoryForm.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkConfig.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkConfirmDialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkDownloadForm.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkMenubar-ui.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkMenubar.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkNodeDialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkNodeList.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkNodeTree.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkNodeView.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkProxyForm.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkScheduleForm.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkSelector.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkSequence.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkSetting.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkSettingDialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkSettingForm.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkSummary.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkTraveler.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkTrayIcon.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk-UgtkUtil.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` uget_gtk-UgtkUtil.o: UgtkUtil.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkUtil.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkUtil.Tpo -c -o uget_gtk-UgtkUtil.o `test -f 'UgtkUtil.c' || echo '$(srcdir)/'`UgtkUtil.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkUtil.Tpo $(DEPDIR)/uget_gtk-UgtkUtil.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkUtil.c' object='uget_gtk-UgtkUtil.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkUtil.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkUtil.Tpo -c -o uget_gtk-UgtkUtil.o `test -f 'UgtkUtil.c' || echo '$(srcdir)/'`UgtkUtil.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkUtil.Tpo $(DEPDIR)/uget_gtk-UgtkUtil.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkUtil.c' object='uget_gtk-UgtkUtil.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkUtil.o `test -f 'UgtkUtil.c' || echo '$(srcdir)/'`UgtkUtil.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkUtil.o `test -f 'UgtkUtil.c' || echo '$(srcdir)/'`UgtkUtil.c uget_gtk-UgtkUtil.obj: UgtkUtil.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkUtil.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkUtil.Tpo -c -o uget_gtk-UgtkUtil.obj `if test -f 'UgtkUtil.c'; then $(CYGPATH_W) 'UgtkUtil.c'; else $(CYGPATH_W) '$(srcdir)/UgtkUtil.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkUtil.Tpo $(DEPDIR)/uget_gtk-UgtkUtil.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkUtil.c' object='uget_gtk-UgtkUtil.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkUtil.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkUtil.Tpo -c -o uget_gtk-UgtkUtil.obj `if test -f 'UgtkUtil.c'; then $(CYGPATH_W) 'UgtkUtil.c'; else $(CYGPATH_W) '$(srcdir)/UgtkUtil.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkUtil.Tpo $(DEPDIR)/uget_gtk-UgtkUtil.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkUtil.c' object='uget_gtk-UgtkUtil.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkUtil.obj `if test -f 'UgtkUtil.c'; then $(CYGPATH_W) 'UgtkUtil.c'; else $(CYGPATH_W) '$(srcdir)/UgtkUtil.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkUtil.obj `if test -f 'UgtkUtil.c'; then $(CYGPATH_W) 'UgtkUtil.c'; else $(CYGPATH_W) '$(srcdir)/UgtkUtil.c'; fi` uget_gtk-UgtkConfig.o: UgtkConfig.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkConfig.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkConfig.Tpo -c -o uget_gtk-UgtkConfig.o `test -f 'UgtkConfig.c' || echo '$(srcdir)/'`UgtkConfig.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkConfig.Tpo $(DEPDIR)/uget_gtk-UgtkConfig.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkConfig.c' object='uget_gtk-UgtkConfig.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkConfig.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkConfig.Tpo -c -o uget_gtk-UgtkConfig.o `test -f 'UgtkConfig.c' || echo '$(srcdir)/'`UgtkConfig.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkConfig.Tpo $(DEPDIR)/uget_gtk-UgtkConfig.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkConfig.c' object='uget_gtk-UgtkConfig.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkConfig.o `test -f 'UgtkConfig.c' || echo '$(srcdir)/'`UgtkConfig.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkConfig.o `test -f 'UgtkConfig.c' || echo '$(srcdir)/'`UgtkConfig.c uget_gtk-UgtkConfig.obj: UgtkConfig.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkConfig.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkConfig.Tpo -c -o uget_gtk-UgtkConfig.obj `if test -f 'UgtkConfig.c'; then $(CYGPATH_W) 'UgtkConfig.c'; else $(CYGPATH_W) '$(srcdir)/UgtkConfig.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkConfig.Tpo $(DEPDIR)/uget_gtk-UgtkConfig.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkConfig.c' object='uget_gtk-UgtkConfig.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkConfig.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkConfig.Tpo -c -o uget_gtk-UgtkConfig.obj `if test -f 'UgtkConfig.c'; then $(CYGPATH_W) 'UgtkConfig.c'; else $(CYGPATH_W) '$(srcdir)/UgtkConfig.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkConfig.Tpo $(DEPDIR)/uget_gtk-UgtkConfig.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkConfig.c' object='uget_gtk-UgtkConfig.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkConfig.obj `if test -f 'UgtkConfig.c'; then $(CYGPATH_W) 'UgtkConfig.c'; else $(CYGPATH_W) '$(srcdir)/UgtkConfig.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkConfig.obj `if test -f 'UgtkConfig.c'; then $(CYGPATH_W) 'UgtkConfig.c'; else $(CYGPATH_W) '$(srcdir)/UgtkConfig.c'; fi` uget_gtk-UgtkSetting.o: UgtkSetting.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSetting.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSetting.Tpo -c -o uget_gtk-UgtkSetting.o `test -f 'UgtkSetting.c' || echo '$(srcdir)/'`UgtkSetting.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkSetting.Tpo $(DEPDIR)/uget_gtk-UgtkSetting.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkSetting.c' object='uget_gtk-UgtkSetting.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSetting.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSetting.Tpo -c -o uget_gtk-UgtkSetting.o `test -f 'UgtkSetting.c' || echo '$(srcdir)/'`UgtkSetting.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkSetting.Tpo $(DEPDIR)/uget_gtk-UgtkSetting.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkSetting.c' object='uget_gtk-UgtkSetting.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSetting.o `test -f 'UgtkSetting.c' || echo '$(srcdir)/'`UgtkSetting.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSetting.o `test -f 'UgtkSetting.c' || echo '$(srcdir)/'`UgtkSetting.c uget_gtk-UgtkSetting.obj: UgtkSetting.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSetting.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSetting.Tpo -c -o uget_gtk-UgtkSetting.obj `if test -f 'UgtkSetting.c'; then $(CYGPATH_W) 'UgtkSetting.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSetting.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkSetting.Tpo $(DEPDIR)/uget_gtk-UgtkSetting.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkSetting.c' object='uget_gtk-UgtkSetting.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSetting.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSetting.Tpo -c -o uget_gtk-UgtkSetting.obj `if test -f 'UgtkSetting.c'; then $(CYGPATH_W) 'UgtkSetting.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSetting.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkSetting.Tpo $(DEPDIR)/uget_gtk-UgtkSetting.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkSetting.c' object='uget_gtk-UgtkSetting.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSetting.obj `if test -f 'UgtkSetting.c'; then $(CYGPATH_W) 'UgtkSetting.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSetting.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSetting.obj `if test -f 'UgtkSetting.c'; then $(CYGPATH_W) 'UgtkSetting.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSetting.c'; fi` uget_gtk-UgtkNodeList.o: UgtkNodeList.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeList.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeList.Tpo -c -o uget_gtk-UgtkNodeList.o `test -f 'UgtkNodeList.c' || echo '$(srcdir)/'`UgtkNodeList.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeList.Tpo $(DEPDIR)/uget_gtk-UgtkNodeList.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkNodeList.c' object='uget_gtk-UgtkNodeList.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeList.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeList.Tpo -c -o uget_gtk-UgtkNodeList.o `test -f 'UgtkNodeList.c' || echo '$(srcdir)/'`UgtkNodeList.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeList.Tpo $(DEPDIR)/uget_gtk-UgtkNodeList.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkNodeList.c' object='uget_gtk-UgtkNodeList.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeList.o `test -f 'UgtkNodeList.c' || echo '$(srcdir)/'`UgtkNodeList.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeList.o `test -f 'UgtkNodeList.c' || echo '$(srcdir)/'`UgtkNodeList.c uget_gtk-UgtkNodeList.obj: UgtkNodeList.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeList.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeList.Tpo -c -o uget_gtk-UgtkNodeList.obj `if test -f 'UgtkNodeList.c'; then $(CYGPATH_W) 'UgtkNodeList.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeList.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeList.Tpo $(DEPDIR)/uget_gtk-UgtkNodeList.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkNodeList.c' object='uget_gtk-UgtkNodeList.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeList.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeList.Tpo -c -o uget_gtk-UgtkNodeList.obj `if test -f 'UgtkNodeList.c'; then $(CYGPATH_W) 'UgtkNodeList.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeList.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeList.Tpo $(DEPDIR)/uget_gtk-UgtkNodeList.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkNodeList.c' object='uget_gtk-UgtkNodeList.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeList.obj `if test -f 'UgtkNodeList.c'; then $(CYGPATH_W) 'UgtkNodeList.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeList.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeList.obj `if test -f 'UgtkNodeList.c'; then $(CYGPATH_W) 'UgtkNodeList.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeList.c'; fi` uget_gtk-UgtkNodeTree.o: UgtkNodeTree.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeTree.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeTree.Tpo -c -o uget_gtk-UgtkNodeTree.o `test -f 'UgtkNodeTree.c' || echo '$(srcdir)/'`UgtkNodeTree.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeTree.Tpo $(DEPDIR)/uget_gtk-UgtkNodeTree.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkNodeTree.c' object='uget_gtk-UgtkNodeTree.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeTree.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeTree.Tpo -c -o uget_gtk-UgtkNodeTree.o `test -f 'UgtkNodeTree.c' || echo '$(srcdir)/'`UgtkNodeTree.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeTree.Tpo $(DEPDIR)/uget_gtk-UgtkNodeTree.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkNodeTree.c' object='uget_gtk-UgtkNodeTree.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeTree.o `test -f 'UgtkNodeTree.c' || echo '$(srcdir)/'`UgtkNodeTree.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeTree.o `test -f 'UgtkNodeTree.c' || echo '$(srcdir)/'`UgtkNodeTree.c uget_gtk-UgtkNodeTree.obj: UgtkNodeTree.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeTree.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeTree.Tpo -c -o uget_gtk-UgtkNodeTree.obj `if test -f 'UgtkNodeTree.c'; then $(CYGPATH_W) 'UgtkNodeTree.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeTree.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeTree.Tpo $(DEPDIR)/uget_gtk-UgtkNodeTree.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkNodeTree.c' object='uget_gtk-UgtkNodeTree.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeTree.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeTree.Tpo -c -o uget_gtk-UgtkNodeTree.obj `if test -f 'UgtkNodeTree.c'; then $(CYGPATH_W) 'UgtkNodeTree.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeTree.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeTree.Tpo $(DEPDIR)/uget_gtk-UgtkNodeTree.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkNodeTree.c' object='uget_gtk-UgtkNodeTree.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeTree.obj `if test -f 'UgtkNodeTree.c'; then $(CYGPATH_W) 'UgtkNodeTree.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeTree.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeTree.obj `if test -f 'UgtkNodeTree.c'; then $(CYGPATH_W) 'UgtkNodeTree.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeTree.c'; fi` uget_gtk-UgtkNodeView.o: UgtkNodeView.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeView.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeView.Tpo -c -o uget_gtk-UgtkNodeView.o `test -f 'UgtkNodeView.c' || echo '$(srcdir)/'`UgtkNodeView.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeView.Tpo $(DEPDIR)/uget_gtk-UgtkNodeView.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkNodeView.c' object='uget_gtk-UgtkNodeView.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeView.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeView.Tpo -c -o uget_gtk-UgtkNodeView.o `test -f 'UgtkNodeView.c' || echo '$(srcdir)/'`UgtkNodeView.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeView.Tpo $(DEPDIR)/uget_gtk-UgtkNodeView.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkNodeView.c' object='uget_gtk-UgtkNodeView.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeView.o `test -f 'UgtkNodeView.c' || echo '$(srcdir)/'`UgtkNodeView.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeView.o `test -f 'UgtkNodeView.c' || echo '$(srcdir)/'`UgtkNodeView.c uget_gtk-UgtkNodeView.obj: UgtkNodeView.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeView.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeView.Tpo -c -o uget_gtk-UgtkNodeView.obj `if test -f 'UgtkNodeView.c'; then $(CYGPATH_W) 'UgtkNodeView.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeView.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeView.Tpo $(DEPDIR)/uget_gtk-UgtkNodeView.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkNodeView.c' object='uget_gtk-UgtkNodeView.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeView.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeView.Tpo -c -o uget_gtk-UgtkNodeView.obj `if test -f 'UgtkNodeView.c'; then $(CYGPATH_W) 'UgtkNodeView.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeView.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeView.Tpo $(DEPDIR)/uget_gtk-UgtkNodeView.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkNodeView.c' object='uget_gtk-UgtkNodeView.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeView.obj `if test -f 'UgtkNodeView.c'; then $(CYGPATH_W) 'UgtkNodeView.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeView.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeView.obj `if test -f 'UgtkNodeView.c'; then $(CYGPATH_W) 'UgtkNodeView.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeView.c'; fi` uget_gtk-UgtkTraveler.o: UgtkTraveler.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkTraveler.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkTraveler.Tpo -c -o uget_gtk-UgtkTraveler.o `test -f 'UgtkTraveler.c' || echo '$(srcdir)/'`UgtkTraveler.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkTraveler.Tpo $(DEPDIR)/uget_gtk-UgtkTraveler.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkTraveler.c' object='uget_gtk-UgtkTraveler.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkTraveler.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkTraveler.Tpo -c -o uget_gtk-UgtkTraveler.o `test -f 'UgtkTraveler.c' || echo '$(srcdir)/'`UgtkTraveler.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkTraveler.Tpo $(DEPDIR)/uget_gtk-UgtkTraveler.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkTraveler.c' object='uget_gtk-UgtkTraveler.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkTraveler.o `test -f 'UgtkTraveler.c' || echo '$(srcdir)/'`UgtkTraveler.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkTraveler.o `test -f 'UgtkTraveler.c' || echo '$(srcdir)/'`UgtkTraveler.c uget_gtk-UgtkTraveler.obj: UgtkTraveler.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkTraveler.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkTraveler.Tpo -c -o uget_gtk-UgtkTraveler.obj `if test -f 'UgtkTraveler.c'; then $(CYGPATH_W) 'UgtkTraveler.c'; else $(CYGPATH_W) '$(srcdir)/UgtkTraveler.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkTraveler.Tpo $(DEPDIR)/uget_gtk-UgtkTraveler.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkTraveler.c' object='uget_gtk-UgtkTraveler.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkTraveler.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkTraveler.Tpo -c -o uget_gtk-UgtkTraveler.obj `if test -f 'UgtkTraveler.c'; then $(CYGPATH_W) 'UgtkTraveler.c'; else $(CYGPATH_W) '$(srcdir)/UgtkTraveler.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkTraveler.Tpo $(DEPDIR)/uget_gtk-UgtkTraveler.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkTraveler.c' object='uget_gtk-UgtkTraveler.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkTraveler.obj `if test -f 'UgtkTraveler.c'; then $(CYGPATH_W) 'UgtkTraveler.c'; else $(CYGPATH_W) '$(srcdir)/UgtkTraveler.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkTraveler.obj `if test -f 'UgtkTraveler.c'; then $(CYGPATH_W) 'UgtkTraveler.c'; else $(CYGPATH_W) '$(srcdir)/UgtkTraveler.c'; fi` uget_gtk-UgtkSummary.o: UgtkSummary.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSummary.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSummary.Tpo -c -o uget_gtk-UgtkSummary.o `test -f 'UgtkSummary.c' || echo '$(srcdir)/'`UgtkSummary.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkSummary.Tpo $(DEPDIR)/uget_gtk-UgtkSummary.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkSummary.c' object='uget_gtk-UgtkSummary.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSummary.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSummary.Tpo -c -o uget_gtk-UgtkSummary.o `test -f 'UgtkSummary.c' || echo '$(srcdir)/'`UgtkSummary.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkSummary.Tpo $(DEPDIR)/uget_gtk-UgtkSummary.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkSummary.c' object='uget_gtk-UgtkSummary.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSummary.o `test -f 'UgtkSummary.c' || echo '$(srcdir)/'`UgtkSummary.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSummary.o `test -f 'UgtkSummary.c' || echo '$(srcdir)/'`UgtkSummary.c uget_gtk-UgtkSummary.obj: UgtkSummary.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSummary.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSummary.Tpo -c -o uget_gtk-UgtkSummary.obj `if test -f 'UgtkSummary.c'; then $(CYGPATH_W) 'UgtkSummary.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSummary.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkSummary.Tpo $(DEPDIR)/uget_gtk-UgtkSummary.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkSummary.c' object='uget_gtk-UgtkSummary.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSummary.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSummary.Tpo -c -o uget_gtk-UgtkSummary.obj `if test -f 'UgtkSummary.c'; then $(CYGPATH_W) 'UgtkSummary.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSummary.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkSummary.Tpo $(DEPDIR)/uget_gtk-UgtkSummary.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkSummary.c' object='uget_gtk-UgtkSummary.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSummary.obj `if test -f 'UgtkSummary.c'; then $(CYGPATH_W) 'UgtkSummary.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSummary.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSummary.obj `if test -f 'UgtkSummary.c'; then $(CYGPATH_W) 'UgtkSummary.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSummary.c'; fi` uget_gtk-UgtkTrayIcon.o: UgtkTrayIcon.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkTrayIcon.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkTrayIcon.Tpo -c -o uget_gtk-UgtkTrayIcon.o `test -f 'UgtkTrayIcon.c' || echo '$(srcdir)/'`UgtkTrayIcon.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkTrayIcon.Tpo $(DEPDIR)/uget_gtk-UgtkTrayIcon.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkTrayIcon.c' object='uget_gtk-UgtkTrayIcon.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkTrayIcon.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkTrayIcon.Tpo -c -o uget_gtk-UgtkTrayIcon.o `test -f 'UgtkTrayIcon.c' || echo '$(srcdir)/'`UgtkTrayIcon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkTrayIcon.Tpo $(DEPDIR)/uget_gtk-UgtkTrayIcon.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkTrayIcon.c' object='uget_gtk-UgtkTrayIcon.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkTrayIcon.o `test -f 'UgtkTrayIcon.c' || echo '$(srcdir)/'`UgtkTrayIcon.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkTrayIcon.o `test -f 'UgtkTrayIcon.c' || echo '$(srcdir)/'`UgtkTrayIcon.c uget_gtk-UgtkTrayIcon.obj: UgtkTrayIcon.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkTrayIcon.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkTrayIcon.Tpo -c -o uget_gtk-UgtkTrayIcon.obj `if test -f 'UgtkTrayIcon.c'; then $(CYGPATH_W) 'UgtkTrayIcon.c'; else $(CYGPATH_W) '$(srcdir)/UgtkTrayIcon.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkTrayIcon.Tpo $(DEPDIR)/uget_gtk-UgtkTrayIcon.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkTrayIcon.c' object='uget_gtk-UgtkTrayIcon.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkTrayIcon.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkTrayIcon.Tpo -c -o uget_gtk-UgtkTrayIcon.obj `if test -f 'UgtkTrayIcon.c'; then $(CYGPATH_W) 'UgtkTrayIcon.c'; else $(CYGPATH_W) '$(srcdir)/UgtkTrayIcon.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkTrayIcon.Tpo $(DEPDIR)/uget_gtk-UgtkTrayIcon.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkTrayIcon.c' object='uget_gtk-UgtkTrayIcon.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkTrayIcon.obj `if test -f 'UgtkTrayIcon.c'; then $(CYGPATH_W) 'UgtkTrayIcon.c'; else $(CYGPATH_W) '$(srcdir)/UgtkTrayIcon.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkTrayIcon.obj `if test -f 'UgtkTrayIcon.c'; then $(CYGPATH_W) 'UgtkTrayIcon.c'; else $(CYGPATH_W) '$(srcdir)/UgtkTrayIcon.c'; fi` uget_gtk-UgtkBanner.o: UgtkBanner.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkBanner.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkBanner.Tpo -c -o uget_gtk-UgtkBanner.o `test -f 'UgtkBanner.c' || echo '$(srcdir)/'`UgtkBanner.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkBanner.Tpo $(DEPDIR)/uget_gtk-UgtkBanner.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkBanner.c' object='uget_gtk-UgtkBanner.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkBanner.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkBanner.Tpo -c -o uget_gtk-UgtkBanner.o `test -f 'UgtkBanner.c' || echo '$(srcdir)/'`UgtkBanner.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkBanner.Tpo $(DEPDIR)/uget_gtk-UgtkBanner.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkBanner.c' object='uget_gtk-UgtkBanner.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkBanner.o `test -f 'UgtkBanner.c' || echo '$(srcdir)/'`UgtkBanner.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkBanner.o `test -f 'UgtkBanner.c' || echo '$(srcdir)/'`UgtkBanner.c uget_gtk-UgtkBanner.obj: UgtkBanner.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkBanner.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkBanner.Tpo -c -o uget_gtk-UgtkBanner.obj `if test -f 'UgtkBanner.c'; then $(CYGPATH_W) 'UgtkBanner.c'; else $(CYGPATH_W) '$(srcdir)/UgtkBanner.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkBanner.Tpo $(DEPDIR)/uget_gtk-UgtkBanner.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkBanner.c' object='uget_gtk-UgtkBanner.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkBanner.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkBanner.Tpo -c -o uget_gtk-UgtkBanner.obj `if test -f 'UgtkBanner.c'; then $(CYGPATH_W) 'UgtkBanner.c'; else $(CYGPATH_W) '$(srcdir)/UgtkBanner.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkBanner.Tpo $(DEPDIR)/uget_gtk-UgtkBanner.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkBanner.c' object='uget_gtk-UgtkBanner.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkBanner.obj `if test -f 'UgtkBanner.c'; then $(CYGPATH_W) 'UgtkBanner.c'; else $(CYGPATH_W) '$(srcdir)/UgtkBanner.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkBanner.obj `if test -f 'UgtkBanner.c'; then $(CYGPATH_W) 'UgtkBanner.c'; else $(CYGPATH_W) '$(srcdir)/UgtkBanner.c'; fi` -uget_gtk-UgtkProxyForm.o: UgtkProxyForm.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkProxyForm.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkProxyForm.Tpo -c -o uget_gtk-UgtkProxyForm.o `test -f 'UgtkProxyForm.c' || echo '$(srcdir)/'`UgtkProxyForm.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkProxyForm.Tpo $(DEPDIR)/uget_gtk-UgtkProxyForm.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkProxyForm.c' object='uget_gtk-UgtkProxyForm.o' libtool=no @AMDEPBACKSLASH@ +uget_gtk-UgtkSequence.o: UgtkSequence.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSequence.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSequence.Tpo -c -o uget_gtk-UgtkSequence.o `test -f 'UgtkSequence.c' || echo '$(srcdir)/'`UgtkSequence.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkSequence.Tpo $(DEPDIR)/uget_gtk-UgtkSequence.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkSequence.c' object='uget_gtk-UgtkSequence.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkProxyForm.o `test -f 'UgtkProxyForm.c' || echo '$(srcdir)/'`UgtkProxyForm.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSequence.o `test -f 'UgtkSequence.c' || echo '$(srcdir)/'`UgtkSequence.c -uget_gtk-UgtkProxyForm.obj: UgtkProxyForm.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkProxyForm.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkProxyForm.Tpo -c -o uget_gtk-UgtkProxyForm.obj `if test -f 'UgtkProxyForm.c'; then $(CYGPATH_W) 'UgtkProxyForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkProxyForm.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkProxyForm.Tpo $(DEPDIR)/uget_gtk-UgtkProxyForm.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkProxyForm.c' object='uget_gtk-UgtkProxyForm.obj' libtool=no @AMDEPBACKSLASH@ +uget_gtk-UgtkSequence.obj: UgtkSequence.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSequence.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSequence.Tpo -c -o uget_gtk-UgtkSequence.obj `if test -f 'UgtkSequence.c'; then $(CYGPATH_W) 'UgtkSequence.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSequence.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkSequence.Tpo $(DEPDIR)/uget_gtk-UgtkSequence.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkSequence.c' object='uget_gtk-UgtkSequence.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkProxyForm.obj `if test -f 'UgtkProxyForm.c'; then $(CYGPATH_W) 'UgtkProxyForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkProxyForm.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSequence.obj `if test -f 'UgtkSequence.c'; then $(CYGPATH_W) 'UgtkSequence.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSequence.c'; fi` -uget_gtk-UgtkDownloadForm.o: UgtkDownloadForm.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkDownloadForm.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkDownloadForm.Tpo -c -o uget_gtk-UgtkDownloadForm.o `test -f 'UgtkDownloadForm.c' || echo '$(srcdir)/'`UgtkDownloadForm.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkDownloadForm.Tpo $(DEPDIR)/uget_gtk-UgtkDownloadForm.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkDownloadForm.c' object='uget_gtk-UgtkDownloadForm.o' libtool=no @AMDEPBACKSLASH@ +uget_gtk-UgtkSelector.o: UgtkSelector.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSelector.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSelector.Tpo -c -o uget_gtk-UgtkSelector.o `test -f 'UgtkSelector.c' || echo '$(srcdir)/'`UgtkSelector.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkSelector.Tpo $(DEPDIR)/uget_gtk-UgtkSelector.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkSelector.c' object='uget_gtk-UgtkSelector.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkDownloadForm.o `test -f 'UgtkDownloadForm.c' || echo '$(srcdir)/'`UgtkDownloadForm.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSelector.o `test -f 'UgtkSelector.c' || echo '$(srcdir)/'`UgtkSelector.c -uget_gtk-UgtkDownloadForm.obj: UgtkDownloadForm.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkDownloadForm.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkDownloadForm.Tpo -c -o uget_gtk-UgtkDownloadForm.obj `if test -f 'UgtkDownloadForm.c'; then $(CYGPATH_W) 'UgtkDownloadForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkDownloadForm.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkDownloadForm.Tpo $(DEPDIR)/uget_gtk-UgtkDownloadForm.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkDownloadForm.c' object='uget_gtk-UgtkDownloadForm.obj' libtool=no @AMDEPBACKSLASH@ +uget_gtk-UgtkSelector.obj: UgtkSelector.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSelector.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSelector.Tpo -c -o uget_gtk-UgtkSelector.obj `if test -f 'UgtkSelector.c'; then $(CYGPATH_W) 'UgtkSelector.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSelector.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkSelector.Tpo $(DEPDIR)/uget_gtk-UgtkSelector.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkSelector.c' object='uget_gtk-UgtkSelector.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkDownloadForm.obj `if test -f 'UgtkDownloadForm.c'; then $(CYGPATH_W) 'UgtkDownloadForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkDownloadForm.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSelector.obj `if test -f 'UgtkSelector.c'; then $(CYGPATH_W) 'UgtkSelector.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSelector.c'; fi` -uget_gtk-UgtkCategoryForm.o: UgtkCategoryForm.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkCategoryForm.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkCategoryForm.Tpo -c -o uget_gtk-UgtkCategoryForm.o `test -f 'UgtkCategoryForm.c' || echo '$(srcdir)/'`UgtkCategoryForm.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkCategoryForm.Tpo $(DEPDIR)/uget_gtk-UgtkCategoryForm.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkCategoryForm.c' object='uget_gtk-UgtkCategoryForm.o' libtool=no @AMDEPBACKSLASH@ +uget_gtk-UgtkProxyForm.o: UgtkProxyForm.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkProxyForm.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkProxyForm.Tpo -c -o uget_gtk-UgtkProxyForm.o `test -f 'UgtkProxyForm.c' || echo '$(srcdir)/'`UgtkProxyForm.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkProxyForm.Tpo $(DEPDIR)/uget_gtk-UgtkProxyForm.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkProxyForm.c' object='uget_gtk-UgtkProxyForm.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkCategoryForm.o `test -f 'UgtkCategoryForm.c' || echo '$(srcdir)/'`UgtkCategoryForm.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkProxyForm.o `test -f 'UgtkProxyForm.c' || echo '$(srcdir)/'`UgtkProxyForm.c -uget_gtk-UgtkCategoryForm.obj: UgtkCategoryForm.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkCategoryForm.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkCategoryForm.Tpo -c -o uget_gtk-UgtkCategoryForm.obj `if test -f 'UgtkCategoryForm.c'; then $(CYGPATH_W) 'UgtkCategoryForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkCategoryForm.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkCategoryForm.Tpo $(DEPDIR)/uget_gtk-UgtkCategoryForm.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkCategoryForm.c' object='uget_gtk-UgtkCategoryForm.obj' libtool=no @AMDEPBACKSLASH@ +uget_gtk-UgtkProxyForm.obj: UgtkProxyForm.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkProxyForm.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkProxyForm.Tpo -c -o uget_gtk-UgtkProxyForm.obj `if test -f 'UgtkProxyForm.c'; then $(CYGPATH_W) 'UgtkProxyForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkProxyForm.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkProxyForm.Tpo $(DEPDIR)/uget_gtk-UgtkProxyForm.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkProxyForm.c' object='uget_gtk-UgtkProxyForm.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkCategoryForm.obj `if test -f 'UgtkCategoryForm.c'; then $(CYGPATH_W) 'UgtkCategoryForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkCategoryForm.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkProxyForm.obj `if test -f 'UgtkProxyForm.c'; then $(CYGPATH_W) 'UgtkProxyForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkProxyForm.c'; fi` -uget_gtk-UgtkSequencer.o: UgtkSequencer.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSequencer.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSequencer.Tpo -c -o uget_gtk-UgtkSequencer.o `test -f 'UgtkSequencer.c' || echo '$(srcdir)/'`UgtkSequencer.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkSequencer.Tpo $(DEPDIR)/uget_gtk-UgtkSequencer.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkSequencer.c' object='uget_gtk-UgtkSequencer.o' libtool=no @AMDEPBACKSLASH@ +uget_gtk-UgtkDownloadForm.o: UgtkDownloadForm.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkDownloadForm.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkDownloadForm.Tpo -c -o uget_gtk-UgtkDownloadForm.o `test -f 'UgtkDownloadForm.c' || echo '$(srcdir)/'`UgtkDownloadForm.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkDownloadForm.Tpo $(DEPDIR)/uget_gtk-UgtkDownloadForm.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkDownloadForm.c' object='uget_gtk-UgtkDownloadForm.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSequencer.o `test -f 'UgtkSequencer.c' || echo '$(srcdir)/'`UgtkSequencer.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkDownloadForm.o `test -f 'UgtkDownloadForm.c' || echo '$(srcdir)/'`UgtkDownloadForm.c -uget_gtk-UgtkSequencer.obj: UgtkSequencer.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSequencer.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSequencer.Tpo -c -o uget_gtk-UgtkSequencer.obj `if test -f 'UgtkSequencer.c'; then $(CYGPATH_W) 'UgtkSequencer.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSequencer.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkSequencer.Tpo $(DEPDIR)/uget_gtk-UgtkSequencer.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkSequencer.c' object='uget_gtk-UgtkSequencer.obj' libtool=no @AMDEPBACKSLASH@ +uget_gtk-UgtkDownloadForm.obj: UgtkDownloadForm.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkDownloadForm.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkDownloadForm.Tpo -c -o uget_gtk-UgtkDownloadForm.obj `if test -f 'UgtkDownloadForm.c'; then $(CYGPATH_W) 'UgtkDownloadForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkDownloadForm.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkDownloadForm.Tpo $(DEPDIR)/uget_gtk-UgtkDownloadForm.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkDownloadForm.c' object='uget_gtk-UgtkDownloadForm.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSequencer.obj `if test -f 'UgtkSequencer.c'; then $(CYGPATH_W) 'UgtkSequencer.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSequencer.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkDownloadForm.obj `if test -f 'UgtkDownloadForm.c'; then $(CYGPATH_W) 'UgtkDownloadForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkDownloadForm.c'; fi` -uget_gtk-UgtkSelector.o: UgtkSelector.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSelector.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSelector.Tpo -c -o uget_gtk-UgtkSelector.o `test -f 'UgtkSelector.c' || echo '$(srcdir)/'`UgtkSelector.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkSelector.Tpo $(DEPDIR)/uget_gtk-UgtkSelector.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkSelector.c' object='uget_gtk-UgtkSelector.o' libtool=no @AMDEPBACKSLASH@ +uget_gtk-UgtkCategoryForm.o: UgtkCategoryForm.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkCategoryForm.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkCategoryForm.Tpo -c -o uget_gtk-UgtkCategoryForm.o `test -f 'UgtkCategoryForm.c' || echo '$(srcdir)/'`UgtkCategoryForm.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkCategoryForm.Tpo $(DEPDIR)/uget_gtk-UgtkCategoryForm.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkCategoryForm.c' object='uget_gtk-UgtkCategoryForm.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSelector.o `test -f 'UgtkSelector.c' || echo '$(srcdir)/'`UgtkSelector.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkCategoryForm.o `test -f 'UgtkCategoryForm.c' || echo '$(srcdir)/'`UgtkCategoryForm.c -uget_gtk-UgtkSelector.obj: UgtkSelector.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSelector.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSelector.Tpo -c -o uget_gtk-UgtkSelector.obj `if test -f 'UgtkSelector.c'; then $(CYGPATH_W) 'UgtkSelector.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSelector.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkSelector.Tpo $(DEPDIR)/uget_gtk-UgtkSelector.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkSelector.c' object='uget_gtk-UgtkSelector.obj' libtool=no @AMDEPBACKSLASH@ +uget_gtk-UgtkCategoryForm.obj: UgtkCategoryForm.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkCategoryForm.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkCategoryForm.Tpo -c -o uget_gtk-UgtkCategoryForm.obj `if test -f 'UgtkCategoryForm.c'; then $(CYGPATH_W) 'UgtkCategoryForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkCategoryForm.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkCategoryForm.Tpo $(DEPDIR)/uget_gtk-UgtkCategoryForm.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkCategoryForm.c' object='uget_gtk-UgtkCategoryForm.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSelector.obj `if test -f 'UgtkSelector.c'; then $(CYGPATH_W) 'UgtkSelector.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSelector.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkCategoryForm.obj `if test -f 'UgtkCategoryForm.c'; then $(CYGPATH_W) 'UgtkCategoryForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkCategoryForm.c'; fi` uget_gtk-UgtkNodeDialog.o: UgtkNodeDialog.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeDialog.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeDialog.Tpo -c -o uget_gtk-UgtkNodeDialog.o `test -f 'UgtkNodeDialog.c' || echo '$(srcdir)/'`UgtkNodeDialog.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeDialog.Tpo $(DEPDIR)/uget_gtk-UgtkNodeDialog.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkNodeDialog.c' object='uget_gtk-UgtkNodeDialog.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeDialog.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeDialog.Tpo -c -o uget_gtk-UgtkNodeDialog.o `test -f 'UgtkNodeDialog.c' || echo '$(srcdir)/'`UgtkNodeDialog.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeDialog.Tpo $(DEPDIR)/uget_gtk-UgtkNodeDialog.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkNodeDialog.c' object='uget_gtk-UgtkNodeDialog.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeDialog.o `test -f 'UgtkNodeDialog.c' || echo '$(srcdir)/'`UgtkNodeDialog.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeDialog.o `test -f 'UgtkNodeDialog.c' || echo '$(srcdir)/'`UgtkNodeDialog.c uget_gtk-UgtkNodeDialog.obj: UgtkNodeDialog.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeDialog.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeDialog.Tpo -c -o uget_gtk-UgtkNodeDialog.obj `if test -f 'UgtkNodeDialog.c'; then $(CYGPATH_W) 'UgtkNodeDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeDialog.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeDialog.Tpo $(DEPDIR)/uget_gtk-UgtkNodeDialog.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkNodeDialog.c' object='uget_gtk-UgtkNodeDialog.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkNodeDialog.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkNodeDialog.Tpo -c -o uget_gtk-UgtkNodeDialog.obj `if test -f 'UgtkNodeDialog.c'; then $(CYGPATH_W) 'UgtkNodeDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeDialog.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkNodeDialog.Tpo $(DEPDIR)/uget_gtk-UgtkNodeDialog.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkNodeDialog.c' object='uget_gtk-UgtkNodeDialog.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeDialog.obj `if test -f 'UgtkNodeDialog.c'; then $(CYGPATH_W) 'UgtkNodeDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeDialog.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkNodeDialog.obj `if test -f 'UgtkNodeDialog.c'; then $(CYGPATH_W) 'UgtkNodeDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkNodeDialog.c'; fi` uget_gtk-UgtkBatchDialog.o: UgtkBatchDialog.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkBatchDialog.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkBatchDialog.Tpo -c -o uget_gtk-UgtkBatchDialog.o `test -f 'UgtkBatchDialog.c' || echo '$(srcdir)/'`UgtkBatchDialog.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkBatchDialog.Tpo $(DEPDIR)/uget_gtk-UgtkBatchDialog.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkBatchDialog.c' object='uget_gtk-UgtkBatchDialog.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkBatchDialog.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkBatchDialog.Tpo -c -o uget_gtk-UgtkBatchDialog.o `test -f 'UgtkBatchDialog.c' || echo '$(srcdir)/'`UgtkBatchDialog.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkBatchDialog.Tpo $(DEPDIR)/uget_gtk-UgtkBatchDialog.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkBatchDialog.c' object='uget_gtk-UgtkBatchDialog.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkBatchDialog.o `test -f 'UgtkBatchDialog.c' || echo '$(srcdir)/'`UgtkBatchDialog.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkBatchDialog.o `test -f 'UgtkBatchDialog.c' || echo '$(srcdir)/'`UgtkBatchDialog.c uget_gtk-UgtkBatchDialog.obj: UgtkBatchDialog.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkBatchDialog.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkBatchDialog.Tpo -c -o uget_gtk-UgtkBatchDialog.obj `if test -f 'UgtkBatchDialog.c'; then $(CYGPATH_W) 'UgtkBatchDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkBatchDialog.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkBatchDialog.Tpo $(DEPDIR)/uget_gtk-UgtkBatchDialog.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkBatchDialog.c' object='uget_gtk-UgtkBatchDialog.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkBatchDialog.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkBatchDialog.Tpo -c -o uget_gtk-UgtkBatchDialog.obj `if test -f 'UgtkBatchDialog.c'; then $(CYGPATH_W) 'UgtkBatchDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkBatchDialog.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkBatchDialog.Tpo $(DEPDIR)/uget_gtk-UgtkBatchDialog.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkBatchDialog.c' object='uget_gtk-UgtkBatchDialog.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkBatchDialog.obj `if test -f 'UgtkBatchDialog.c'; then $(CYGPATH_W) 'UgtkBatchDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkBatchDialog.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkBatchDialog.obj `if test -f 'UgtkBatchDialog.c'; then $(CYGPATH_W) 'UgtkBatchDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkBatchDialog.c'; fi` uget_gtk-UgtkScheduleForm.o: UgtkScheduleForm.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkScheduleForm.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkScheduleForm.Tpo -c -o uget_gtk-UgtkScheduleForm.o `test -f 'UgtkScheduleForm.c' || echo '$(srcdir)/'`UgtkScheduleForm.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkScheduleForm.Tpo $(DEPDIR)/uget_gtk-UgtkScheduleForm.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkScheduleForm.c' object='uget_gtk-UgtkScheduleForm.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkScheduleForm.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkScheduleForm.Tpo -c -o uget_gtk-UgtkScheduleForm.o `test -f 'UgtkScheduleForm.c' || echo '$(srcdir)/'`UgtkScheduleForm.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkScheduleForm.Tpo $(DEPDIR)/uget_gtk-UgtkScheduleForm.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkScheduleForm.c' object='uget_gtk-UgtkScheduleForm.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkScheduleForm.o `test -f 'UgtkScheduleForm.c' || echo '$(srcdir)/'`UgtkScheduleForm.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkScheduleForm.o `test -f 'UgtkScheduleForm.c' || echo '$(srcdir)/'`UgtkScheduleForm.c uget_gtk-UgtkScheduleForm.obj: UgtkScheduleForm.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkScheduleForm.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkScheduleForm.Tpo -c -o uget_gtk-UgtkScheduleForm.obj `if test -f 'UgtkScheduleForm.c'; then $(CYGPATH_W) 'UgtkScheduleForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkScheduleForm.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkScheduleForm.Tpo $(DEPDIR)/uget_gtk-UgtkScheduleForm.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkScheduleForm.c' object='uget_gtk-UgtkScheduleForm.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkScheduleForm.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkScheduleForm.Tpo -c -o uget_gtk-UgtkScheduleForm.obj `if test -f 'UgtkScheduleForm.c'; then $(CYGPATH_W) 'UgtkScheduleForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkScheduleForm.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkScheduleForm.Tpo $(DEPDIR)/uget_gtk-UgtkScheduleForm.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkScheduleForm.c' object='uget_gtk-UgtkScheduleForm.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkScheduleForm.obj `if test -f 'UgtkScheduleForm.c'; then $(CYGPATH_W) 'UgtkScheduleForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkScheduleForm.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkScheduleForm.obj `if test -f 'UgtkScheduleForm.c'; then $(CYGPATH_W) 'UgtkScheduleForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkScheduleForm.c'; fi` uget_gtk-UgtkSettingForm.o: UgtkSettingForm.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSettingForm.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSettingForm.Tpo -c -o uget_gtk-UgtkSettingForm.o `test -f 'UgtkSettingForm.c' || echo '$(srcdir)/'`UgtkSettingForm.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkSettingForm.Tpo $(DEPDIR)/uget_gtk-UgtkSettingForm.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkSettingForm.c' object='uget_gtk-UgtkSettingForm.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSettingForm.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSettingForm.Tpo -c -o uget_gtk-UgtkSettingForm.o `test -f 'UgtkSettingForm.c' || echo '$(srcdir)/'`UgtkSettingForm.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkSettingForm.Tpo $(DEPDIR)/uget_gtk-UgtkSettingForm.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkSettingForm.c' object='uget_gtk-UgtkSettingForm.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSettingForm.o `test -f 'UgtkSettingForm.c' || echo '$(srcdir)/'`UgtkSettingForm.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSettingForm.o `test -f 'UgtkSettingForm.c' || echo '$(srcdir)/'`UgtkSettingForm.c uget_gtk-UgtkSettingForm.obj: UgtkSettingForm.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSettingForm.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSettingForm.Tpo -c -o uget_gtk-UgtkSettingForm.obj `if test -f 'UgtkSettingForm.c'; then $(CYGPATH_W) 'UgtkSettingForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSettingForm.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkSettingForm.Tpo $(DEPDIR)/uget_gtk-UgtkSettingForm.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkSettingForm.c' object='uget_gtk-UgtkSettingForm.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSettingForm.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSettingForm.Tpo -c -o uget_gtk-UgtkSettingForm.obj `if test -f 'UgtkSettingForm.c'; then $(CYGPATH_W) 'UgtkSettingForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSettingForm.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkSettingForm.Tpo $(DEPDIR)/uget_gtk-UgtkSettingForm.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkSettingForm.c' object='uget_gtk-UgtkSettingForm.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSettingForm.obj `if test -f 'UgtkSettingForm.c'; then $(CYGPATH_W) 'UgtkSettingForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSettingForm.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSettingForm.obj `if test -f 'UgtkSettingForm.c'; then $(CYGPATH_W) 'UgtkSettingForm.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSettingForm.c'; fi` uget_gtk-UgtkSettingDialog.o: UgtkSettingDialog.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSettingDialog.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSettingDialog.Tpo -c -o uget_gtk-UgtkSettingDialog.o `test -f 'UgtkSettingDialog.c' || echo '$(srcdir)/'`UgtkSettingDialog.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkSettingDialog.Tpo $(DEPDIR)/uget_gtk-UgtkSettingDialog.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkSettingDialog.c' object='uget_gtk-UgtkSettingDialog.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSettingDialog.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSettingDialog.Tpo -c -o uget_gtk-UgtkSettingDialog.o `test -f 'UgtkSettingDialog.c' || echo '$(srcdir)/'`UgtkSettingDialog.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkSettingDialog.Tpo $(DEPDIR)/uget_gtk-UgtkSettingDialog.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkSettingDialog.c' object='uget_gtk-UgtkSettingDialog.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSettingDialog.o `test -f 'UgtkSettingDialog.c' || echo '$(srcdir)/'`UgtkSettingDialog.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSettingDialog.o `test -f 'UgtkSettingDialog.c' || echo '$(srcdir)/'`UgtkSettingDialog.c uget_gtk-UgtkSettingDialog.obj: UgtkSettingDialog.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSettingDialog.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSettingDialog.Tpo -c -o uget_gtk-UgtkSettingDialog.obj `if test -f 'UgtkSettingDialog.c'; then $(CYGPATH_W) 'UgtkSettingDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSettingDialog.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkSettingDialog.Tpo $(DEPDIR)/uget_gtk-UgtkSettingDialog.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkSettingDialog.c' object='uget_gtk-UgtkSettingDialog.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkSettingDialog.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkSettingDialog.Tpo -c -o uget_gtk-UgtkSettingDialog.obj `if test -f 'UgtkSettingDialog.c'; then $(CYGPATH_W) 'UgtkSettingDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSettingDialog.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkSettingDialog.Tpo $(DEPDIR)/uget_gtk-UgtkSettingDialog.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkSettingDialog.c' object='uget_gtk-UgtkSettingDialog.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSettingDialog.obj `if test -f 'UgtkSettingDialog.c'; then $(CYGPATH_W) 'UgtkSettingDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSettingDialog.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkSettingDialog.obj `if test -f 'UgtkSettingDialog.c'; then $(CYGPATH_W) 'UgtkSettingDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkSettingDialog.c'; fi` uget_gtk-UgtkConfirmDialog.o: UgtkConfirmDialog.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkConfirmDialog.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkConfirmDialog.Tpo -c -o uget_gtk-UgtkConfirmDialog.o `test -f 'UgtkConfirmDialog.c' || echo '$(srcdir)/'`UgtkConfirmDialog.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkConfirmDialog.Tpo $(DEPDIR)/uget_gtk-UgtkConfirmDialog.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkConfirmDialog.c' object='uget_gtk-UgtkConfirmDialog.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkConfirmDialog.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkConfirmDialog.Tpo -c -o uget_gtk-UgtkConfirmDialog.o `test -f 'UgtkConfirmDialog.c' || echo '$(srcdir)/'`UgtkConfirmDialog.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkConfirmDialog.Tpo $(DEPDIR)/uget_gtk-UgtkConfirmDialog.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkConfirmDialog.c' object='uget_gtk-UgtkConfirmDialog.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkConfirmDialog.o `test -f 'UgtkConfirmDialog.c' || echo '$(srcdir)/'`UgtkConfirmDialog.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkConfirmDialog.o `test -f 'UgtkConfirmDialog.c' || echo '$(srcdir)/'`UgtkConfirmDialog.c uget_gtk-UgtkConfirmDialog.obj: UgtkConfirmDialog.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkConfirmDialog.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkConfirmDialog.Tpo -c -o uget_gtk-UgtkConfirmDialog.obj `if test -f 'UgtkConfirmDialog.c'; then $(CYGPATH_W) 'UgtkConfirmDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkConfirmDialog.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkConfirmDialog.Tpo $(DEPDIR)/uget_gtk-UgtkConfirmDialog.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkConfirmDialog.c' object='uget_gtk-UgtkConfirmDialog.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkConfirmDialog.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkConfirmDialog.Tpo -c -o uget_gtk-UgtkConfirmDialog.obj `if test -f 'UgtkConfirmDialog.c'; then $(CYGPATH_W) 'UgtkConfirmDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkConfirmDialog.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkConfirmDialog.Tpo $(DEPDIR)/uget_gtk-UgtkConfirmDialog.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkConfirmDialog.c' object='uget_gtk-UgtkConfirmDialog.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkConfirmDialog.obj `if test -f 'UgtkConfirmDialog.c'; then $(CYGPATH_W) 'UgtkConfirmDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkConfirmDialog.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkConfirmDialog.obj `if test -f 'UgtkConfirmDialog.c'; then $(CYGPATH_W) 'UgtkConfirmDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkConfirmDialog.c'; fi` uget_gtk-UgtkAboutDialog.o: UgtkAboutDialog.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkAboutDialog.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkAboutDialog.Tpo -c -o uget_gtk-UgtkAboutDialog.o `test -f 'UgtkAboutDialog.c' || echo '$(srcdir)/'`UgtkAboutDialog.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkAboutDialog.Tpo $(DEPDIR)/uget_gtk-UgtkAboutDialog.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkAboutDialog.c' object='uget_gtk-UgtkAboutDialog.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkAboutDialog.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkAboutDialog.Tpo -c -o uget_gtk-UgtkAboutDialog.o `test -f 'UgtkAboutDialog.c' || echo '$(srcdir)/'`UgtkAboutDialog.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkAboutDialog.Tpo $(DEPDIR)/uget_gtk-UgtkAboutDialog.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkAboutDialog.c' object='uget_gtk-UgtkAboutDialog.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkAboutDialog.o `test -f 'UgtkAboutDialog.c' || echo '$(srcdir)/'`UgtkAboutDialog.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkAboutDialog.o `test -f 'UgtkAboutDialog.c' || echo '$(srcdir)/'`UgtkAboutDialog.c uget_gtk-UgtkAboutDialog.obj: UgtkAboutDialog.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkAboutDialog.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkAboutDialog.Tpo -c -o uget_gtk-UgtkAboutDialog.obj `if test -f 'UgtkAboutDialog.c'; then $(CYGPATH_W) 'UgtkAboutDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkAboutDialog.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkAboutDialog.Tpo $(DEPDIR)/uget_gtk-UgtkAboutDialog.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkAboutDialog.c' object='uget_gtk-UgtkAboutDialog.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkAboutDialog.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkAboutDialog.Tpo -c -o uget_gtk-UgtkAboutDialog.obj `if test -f 'UgtkAboutDialog.c'; then $(CYGPATH_W) 'UgtkAboutDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkAboutDialog.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkAboutDialog.Tpo $(DEPDIR)/uget_gtk-UgtkAboutDialog.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkAboutDialog.c' object='uget_gtk-UgtkAboutDialog.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkAboutDialog.obj `if test -f 'UgtkAboutDialog.c'; then $(CYGPATH_W) 'UgtkAboutDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkAboutDialog.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkAboutDialog.obj `if test -f 'UgtkAboutDialog.c'; then $(CYGPATH_W) 'UgtkAboutDialog.c'; else $(CYGPATH_W) '$(srcdir)/UgtkAboutDialog.c'; fi` uget_gtk-UgtkMenubar.o: UgtkMenubar.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkMenubar.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkMenubar.Tpo -c -o uget_gtk-UgtkMenubar.o `test -f 'UgtkMenubar.c' || echo '$(srcdir)/'`UgtkMenubar.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkMenubar.Tpo $(DEPDIR)/uget_gtk-UgtkMenubar.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkMenubar.c' object='uget_gtk-UgtkMenubar.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkMenubar.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkMenubar.Tpo -c -o uget_gtk-UgtkMenubar.o `test -f 'UgtkMenubar.c' || echo '$(srcdir)/'`UgtkMenubar.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkMenubar.Tpo $(DEPDIR)/uget_gtk-UgtkMenubar.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkMenubar.c' object='uget_gtk-UgtkMenubar.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkMenubar.o `test -f 'UgtkMenubar.c' || echo '$(srcdir)/'`UgtkMenubar.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkMenubar.o `test -f 'UgtkMenubar.c' || echo '$(srcdir)/'`UgtkMenubar.c uget_gtk-UgtkMenubar.obj: UgtkMenubar.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkMenubar.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkMenubar.Tpo -c -o uget_gtk-UgtkMenubar.obj `if test -f 'UgtkMenubar.c'; then $(CYGPATH_W) 'UgtkMenubar.c'; else $(CYGPATH_W) '$(srcdir)/UgtkMenubar.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkMenubar.Tpo $(DEPDIR)/uget_gtk-UgtkMenubar.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkMenubar.c' object='uget_gtk-UgtkMenubar.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkMenubar.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkMenubar.Tpo -c -o uget_gtk-UgtkMenubar.obj `if test -f 'UgtkMenubar.c'; then $(CYGPATH_W) 'UgtkMenubar.c'; else $(CYGPATH_W) '$(srcdir)/UgtkMenubar.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkMenubar.Tpo $(DEPDIR)/uget_gtk-UgtkMenubar.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkMenubar.c' object='uget_gtk-UgtkMenubar.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkMenubar.obj `if test -f 'UgtkMenubar.c'; then $(CYGPATH_W) 'UgtkMenubar.c'; else $(CYGPATH_W) '$(srcdir)/UgtkMenubar.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkMenubar.obj `if test -f 'UgtkMenubar.c'; then $(CYGPATH_W) 'UgtkMenubar.c'; else $(CYGPATH_W) '$(srcdir)/UgtkMenubar.c'; fi` uget_gtk-UgtkMenubar-ui.o: UgtkMenubar-ui.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkMenubar-ui.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkMenubar-ui.Tpo -c -o uget_gtk-UgtkMenubar-ui.o `test -f 'UgtkMenubar-ui.c' || echo '$(srcdir)/'`UgtkMenubar-ui.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkMenubar-ui.Tpo $(DEPDIR)/uget_gtk-UgtkMenubar-ui.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkMenubar-ui.c' object='uget_gtk-UgtkMenubar-ui.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkMenubar-ui.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkMenubar-ui.Tpo -c -o uget_gtk-UgtkMenubar-ui.o `test -f 'UgtkMenubar-ui.c' || echo '$(srcdir)/'`UgtkMenubar-ui.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkMenubar-ui.Tpo $(DEPDIR)/uget_gtk-UgtkMenubar-ui.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkMenubar-ui.c' object='uget_gtk-UgtkMenubar-ui.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkMenubar-ui.o `test -f 'UgtkMenubar-ui.c' || echo '$(srcdir)/'`UgtkMenubar-ui.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkMenubar-ui.o `test -f 'UgtkMenubar-ui.c' || echo '$(srcdir)/'`UgtkMenubar-ui.c uget_gtk-UgtkMenubar-ui.obj: UgtkMenubar-ui.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkMenubar-ui.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkMenubar-ui.Tpo -c -o uget_gtk-UgtkMenubar-ui.obj `if test -f 'UgtkMenubar-ui.c'; then $(CYGPATH_W) 'UgtkMenubar-ui.c'; else $(CYGPATH_W) '$(srcdir)/UgtkMenubar-ui.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkMenubar-ui.Tpo $(DEPDIR)/uget_gtk-UgtkMenubar-ui.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkMenubar-ui.c' object='uget_gtk-UgtkMenubar-ui.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkMenubar-ui.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkMenubar-ui.Tpo -c -o uget_gtk-UgtkMenubar-ui.obj `if test -f 'UgtkMenubar-ui.c'; then $(CYGPATH_W) 'UgtkMenubar-ui.c'; else $(CYGPATH_W) '$(srcdir)/UgtkMenubar-ui.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkMenubar-ui.Tpo $(DEPDIR)/uget_gtk-UgtkMenubar-ui.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkMenubar-ui.c' object='uget_gtk-UgtkMenubar-ui.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkMenubar-ui.obj `if test -f 'UgtkMenubar-ui.c'; then $(CYGPATH_W) 'UgtkMenubar-ui.c'; else $(CYGPATH_W) '$(srcdir)/UgtkMenubar-ui.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkMenubar-ui.obj `if test -f 'UgtkMenubar-ui.c'; then $(CYGPATH_W) 'UgtkMenubar-ui.c'; else $(CYGPATH_W) '$(srcdir)/UgtkMenubar-ui.c'; fi` uget_gtk-UgtkApp.o: UgtkApp.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp.Tpo -c -o uget_gtk-UgtkApp.o `test -f 'UgtkApp.c' || echo '$(srcdir)/'`UgtkApp.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkApp.Tpo $(DEPDIR)/uget_gtk-UgtkApp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkApp.c' object='uget_gtk-UgtkApp.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp.Tpo -c -o uget_gtk-UgtkApp.o `test -f 'UgtkApp.c' || echo '$(srcdir)/'`UgtkApp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkApp.Tpo $(DEPDIR)/uget_gtk-UgtkApp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkApp.c' object='uget_gtk-UgtkApp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp.o `test -f 'UgtkApp.c' || echo '$(srcdir)/'`UgtkApp.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp.o `test -f 'UgtkApp.c' || echo '$(srcdir)/'`UgtkApp.c uget_gtk-UgtkApp.obj: UgtkApp.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp.Tpo -c -o uget_gtk-UgtkApp.obj `if test -f 'UgtkApp.c'; then $(CYGPATH_W) 'UgtkApp.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkApp.Tpo $(DEPDIR)/uget_gtk-UgtkApp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkApp.c' object='uget_gtk-UgtkApp.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp.Tpo -c -o uget_gtk-UgtkApp.obj `if test -f 'UgtkApp.c'; then $(CYGPATH_W) 'UgtkApp.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkApp.Tpo $(DEPDIR)/uget_gtk-UgtkApp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkApp.c' object='uget_gtk-UgtkApp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp.obj `if test -f 'UgtkApp.c'; then $(CYGPATH_W) 'UgtkApp.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp.obj `if test -f 'UgtkApp.c'; then $(CYGPATH_W) 'UgtkApp.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp.c'; fi` uget_gtk-UgtkApp-ui.o: UgtkApp-ui.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-ui.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-ui.Tpo -c -o uget_gtk-UgtkApp-ui.o `test -f 'UgtkApp-ui.c' || echo '$(srcdir)/'`UgtkApp-ui.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-ui.Tpo $(DEPDIR)/uget_gtk-UgtkApp-ui.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkApp-ui.c' object='uget_gtk-UgtkApp-ui.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-ui.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-ui.Tpo -c -o uget_gtk-UgtkApp-ui.o `test -f 'UgtkApp-ui.c' || echo '$(srcdir)/'`UgtkApp-ui.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-ui.Tpo $(DEPDIR)/uget_gtk-UgtkApp-ui.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkApp-ui.c' object='uget_gtk-UgtkApp-ui.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-ui.o `test -f 'UgtkApp-ui.c' || echo '$(srcdir)/'`UgtkApp-ui.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-ui.o `test -f 'UgtkApp-ui.c' || echo '$(srcdir)/'`UgtkApp-ui.c uget_gtk-UgtkApp-ui.obj: UgtkApp-ui.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-ui.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-ui.Tpo -c -o uget_gtk-UgtkApp-ui.obj `if test -f 'UgtkApp-ui.c'; then $(CYGPATH_W) 'UgtkApp-ui.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-ui.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-ui.Tpo $(DEPDIR)/uget_gtk-UgtkApp-ui.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkApp-ui.c' object='uget_gtk-UgtkApp-ui.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-ui.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-ui.Tpo -c -o uget_gtk-UgtkApp-ui.obj `if test -f 'UgtkApp-ui.c'; then $(CYGPATH_W) 'UgtkApp-ui.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-ui.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-ui.Tpo $(DEPDIR)/uget_gtk-UgtkApp-ui.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkApp-ui.c' object='uget_gtk-UgtkApp-ui.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-ui.obj `if test -f 'UgtkApp-ui.c'; then $(CYGPATH_W) 'UgtkApp-ui.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-ui.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-ui.obj `if test -f 'UgtkApp-ui.c'; then $(CYGPATH_W) 'UgtkApp-ui.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-ui.c'; fi` uget_gtk-UgtkApp-callback.o: UgtkApp-callback.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-callback.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-callback.Tpo -c -o uget_gtk-UgtkApp-callback.o `test -f 'UgtkApp-callback.c' || echo '$(srcdir)/'`UgtkApp-callback.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-callback.Tpo $(DEPDIR)/uget_gtk-UgtkApp-callback.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkApp-callback.c' object='uget_gtk-UgtkApp-callback.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-callback.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-callback.Tpo -c -o uget_gtk-UgtkApp-callback.o `test -f 'UgtkApp-callback.c' || echo '$(srcdir)/'`UgtkApp-callback.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-callback.Tpo $(DEPDIR)/uget_gtk-UgtkApp-callback.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkApp-callback.c' object='uget_gtk-UgtkApp-callback.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-callback.o `test -f 'UgtkApp-callback.c' || echo '$(srcdir)/'`UgtkApp-callback.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-callback.o `test -f 'UgtkApp-callback.c' || echo '$(srcdir)/'`UgtkApp-callback.c uget_gtk-UgtkApp-callback.obj: UgtkApp-callback.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-callback.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-callback.Tpo -c -o uget_gtk-UgtkApp-callback.obj `if test -f 'UgtkApp-callback.c'; then $(CYGPATH_W) 'UgtkApp-callback.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-callback.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-callback.Tpo $(DEPDIR)/uget_gtk-UgtkApp-callback.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkApp-callback.c' object='uget_gtk-UgtkApp-callback.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-callback.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-callback.Tpo -c -o uget_gtk-UgtkApp-callback.obj `if test -f 'UgtkApp-callback.c'; then $(CYGPATH_W) 'UgtkApp-callback.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-callback.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-callback.Tpo $(DEPDIR)/uget_gtk-UgtkApp-callback.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkApp-callback.c' object='uget_gtk-UgtkApp-callback.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-callback.obj `if test -f 'UgtkApp-callback.c'; then $(CYGPATH_W) 'UgtkApp-callback.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-callback.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-callback.obj `if test -f 'UgtkApp-callback.c'; then $(CYGPATH_W) 'UgtkApp-callback.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-callback.c'; fi` uget_gtk-UgtkApp-timeout.o: UgtkApp-timeout.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-timeout.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-timeout.Tpo -c -o uget_gtk-UgtkApp-timeout.o `test -f 'UgtkApp-timeout.c' || echo '$(srcdir)/'`UgtkApp-timeout.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-timeout.Tpo $(DEPDIR)/uget_gtk-UgtkApp-timeout.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkApp-timeout.c' object='uget_gtk-UgtkApp-timeout.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-timeout.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-timeout.Tpo -c -o uget_gtk-UgtkApp-timeout.o `test -f 'UgtkApp-timeout.c' || echo '$(srcdir)/'`UgtkApp-timeout.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-timeout.Tpo $(DEPDIR)/uget_gtk-UgtkApp-timeout.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkApp-timeout.c' object='uget_gtk-UgtkApp-timeout.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-timeout.o `test -f 'UgtkApp-timeout.c' || echo '$(srcdir)/'`UgtkApp-timeout.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-timeout.o `test -f 'UgtkApp-timeout.c' || echo '$(srcdir)/'`UgtkApp-timeout.c uget_gtk-UgtkApp-timeout.obj: UgtkApp-timeout.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-timeout.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-timeout.Tpo -c -o uget_gtk-UgtkApp-timeout.obj `if test -f 'UgtkApp-timeout.c'; then $(CYGPATH_W) 'UgtkApp-timeout.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-timeout.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-timeout.Tpo $(DEPDIR)/uget_gtk-UgtkApp-timeout.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkApp-timeout.c' object='uget_gtk-UgtkApp-timeout.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-timeout.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-timeout.Tpo -c -o uget_gtk-UgtkApp-timeout.obj `if test -f 'UgtkApp-timeout.c'; then $(CYGPATH_W) 'UgtkApp-timeout.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-timeout.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-timeout.Tpo $(DEPDIR)/uget_gtk-UgtkApp-timeout.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkApp-timeout.c' object='uget_gtk-UgtkApp-timeout.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-timeout.obj `if test -f 'UgtkApp-timeout.c'; then $(CYGPATH_W) 'UgtkApp-timeout.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-timeout.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-timeout.obj `if test -f 'UgtkApp-timeout.c'; then $(CYGPATH_W) 'UgtkApp-timeout.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-timeout.c'; fi` uget_gtk-UgtkApp-main.o: UgtkApp-main.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-main.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-main.Tpo -c -o uget_gtk-UgtkApp-main.o `test -f 'UgtkApp-main.c' || echo '$(srcdir)/'`UgtkApp-main.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-main.Tpo $(DEPDIR)/uget_gtk-UgtkApp-main.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkApp-main.c' object='uget_gtk-UgtkApp-main.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-main.o -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-main.Tpo -c -o uget_gtk-UgtkApp-main.o `test -f 'UgtkApp-main.c' || echo '$(srcdir)/'`UgtkApp-main.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-main.Tpo $(DEPDIR)/uget_gtk-UgtkApp-main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkApp-main.c' object='uget_gtk-UgtkApp-main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-main.o `test -f 'UgtkApp-main.c' || echo '$(srcdir)/'`UgtkApp-main.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-main.o `test -f 'UgtkApp-main.c' || echo '$(srcdir)/'`UgtkApp-main.c uget_gtk-UgtkApp-main.obj: UgtkApp-main.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-main.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-main.Tpo -c -o uget_gtk-UgtkApp-main.obj `if test -f 'UgtkApp-main.c'; then $(CYGPATH_W) 'UgtkApp-main.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-main.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-main.Tpo $(DEPDIR)/uget_gtk-UgtkApp-main.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgtkApp-main.c' object='uget_gtk-UgtkApp-main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-main.obj `if test -f 'UgtkApp-main.c'; then $(CYGPATH_W) 'UgtkApp-main.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-main.c'; fi` - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -MT uget_gtk-UgtkApp-main.obj -MD -MP -MF $(DEPDIR)/uget_gtk-UgtkApp-main.Tpo -c -o uget_gtk-UgtkApp-main.obj `if test -f 'UgtkApp-main.c'; then $(CYGPATH_W) 'UgtkApp-main.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-main.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/uget_gtk-UgtkApp-main.Tpo $(DEPDIR)/uget_gtk-UgtkApp-main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='UgtkApp-main.c' object='uget_gtk-UgtkApp-main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_CFLAGS) $(CFLAGS) -c -o uget_gtk-UgtkApp-main.obj `if test -f 'UgtkApp-main.c'; then $(CYGPATH_W) 'UgtkApp-main.c'; else $(CYGPATH_W) '$(srcdir)/UgtkApp-main.c'; fi` + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -859,15 +990,11 @@ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -876,11 +1003,29 @@ here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -952,7 +1097,35 @@ clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/uget_gtk-UgtkAboutDialog.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkApp-callback.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkApp-main.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkApp-timeout.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkApp-ui.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkApp.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkBanner.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkBatchDialog.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkCategoryForm.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkConfig.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkConfirmDialog.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkDownloadForm.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkMenubar-ui.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkMenubar.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkNodeDialog.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkNodeList.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkNodeTree.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkNodeView.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkProxyForm.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkScheduleForm.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkSelector.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkSequence.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkSetting.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkSettingDialog.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkSettingForm.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkSummary.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkTraveler.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkTrayIcon.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkUtil.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -998,7 +1171,35 @@ installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/uget_gtk-UgtkAboutDialog.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkApp-callback.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkApp-main.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkApp-timeout.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkApp-ui.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkApp.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkBanner.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkBatchDialog.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkCategoryForm.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkConfig.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkConfirmDialog.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkDownloadForm.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkMenubar-ui.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkMenubar.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkNodeDialog.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkNodeList.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkNodeTree.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkNodeView.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkProxyForm.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkScheduleForm.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkSelector.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkSequence.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkSetting.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkSettingDialog.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkSettingForm.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkSummary.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkTraveler.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkTrayIcon.Po + -rm -f ./$(DEPDIR)/uget_gtk-UgtkUtil.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -1018,18 +1219,21 @@ .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic ctags distclean distclean-compile \ - distclean-generic distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-binPROGRAMS \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-binPROGRAMS +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ + distclean distclean-compile distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-binPROGRAMS install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS + +.PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru uget-2.0.2/ui-gtk/UgtkAboutDialog.c uget-2.2.2/ui-gtk/UgtkAboutDialog.c --- uget-2.0.2/ui-gtk/UgtkAboutDialog.c 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkAboutDialog.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ static const char uget_license[] = { -" Copyright (C) 2005-2015 by C.H. Huang" "\n" +" Copyright (C) 2005-2019 by C.H. Huang" "\n" " plushuang.tw@gmail.com" "\n" "\n" "This library is free software; you can redistribute it and/or" "\n" @@ -44,7 +44,7 @@ static const gchar* uget_authors[] = { "C.H. Huang (\xE9\xBB\x83\xE6\xAD\xA3\xE9\x9B\x84)", NULL }; static const gchar* uget_artists[] = { "Michael Tunnell (visuex.com)", NULL}; static const gchar* uget_comments = N_("Download Manager"); -static const gchar* uget_copyright = "Copyright (C) 2005-2015 C.H. Huang"; +static const gchar* uget_copyright = "Copyright (C) 2005-2018 C.H. Huang"; static const gchar* translator_credits = N_("translator-credits"); static void ugtk_about_dialog_on_response (GtkWidget* widget, diff -Nru uget-2.0.2/ui-gtk/UgtkAboutDialog.h uget-2.2.2/ui-gtk/UgtkAboutDialog.h --- uget-2.0.2/ui-gtk/UgtkAboutDialog.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkAboutDialog.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk/UgtkApp.c uget-2.2.2/ui-gtk/UgtkApp.c --- uget-2.0.2/ui-gtk/UgtkApp.c 2015-04-30 23:37:53.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkApp.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -41,6 +41,8 @@ #include #include #include +#include +#include #include #include #include @@ -56,7 +58,7 @@ app->rpc = rpc; uget_app_init ((UgetApp*) app); // set application config directory for each user - dir = g_build_filename (g_get_user_config_dir (), UGTK_APP_DIR, NULL); + dir = g_build_filename (ugtk_get_config_dir (), UGTK_APP_DIR, NULL); uget_app_set_config_dir ((UgetApp*) app, dir); g_free (dir); @@ -68,12 +70,15 @@ ugtk_app_add_default_category (app); // clipboard ugtk_clipboard_init (&app->clipboard, app->setting.clipboard.pattern); - // plugin initialize - uget_plugin_set (UgetPluginCurlInfo, UGET_PLUGIN_INIT, (void*) TRUE); - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_INIT, (void*) TRUE); + // plug-in initialize + uget_plugin_global_set(UgetPluginCurlInfo, UGET_PLUGIN_GLOBAL_INIT, (void*) TRUE); + uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_GLOBAL_INIT, (void*) TRUE); + uget_plugin_global_set(UgetPluginMediaInfo, UGET_PLUGIN_GLOBAL_INIT, (void*) TRUE); + uget_plugin_global_set(UgetPluginMegaInfo, UGET_PLUGIN_GLOBAL_INIT, (void*) TRUE); // apply UgtkSetting ugtk_app_set_plugin_setting (app, &app->setting); ugtk_app_set_window_setting (app, &app->setting); + ugtk_app_set_column_setting (app, &app->setting); ugtk_app_set_other_setting (app, &app->setting); ugtk_app_set_ui_setting (app, &app->setting); @@ -81,8 +86,8 @@ ugtk_statusbar_set_speed (&app->statusbar, 0, 0); ugtk_menubar_sync_category (&app->menubar, app, TRUE); - app->last.category_index = 0; - app->last.infonode = uget_node_new (NULL); + app->recent.category_index = 0; + app->recent.info = ug_info_new(8, 0); // RSS uget_rss_add_builtin (app->rss_builtin, UGET_RSS_STABLE); uget_rss_add_builtin (app->rss_builtin, UGET_RSS_NEWS); @@ -112,21 +117,25 @@ shutdown_now = app->setting.aria2.shutdown; else shutdown_now = FALSE; + ug_info_unref(app->recent.info); uget_rss_unref (app->rss_builtin); uget_app_final ((UgetApp*) app); - // plugin finalize - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_ARIA2_SHUTDOWN_NOW, + // plug-in finalize + uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_ARIA2_GLOBAL_SHUTDOWN_NOW, (void*)(intptr_t) shutdown_now); - uget_plugin_set (UgetPluginCurlInfo, UGET_PLUGIN_INIT, (void*) FALSE); - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_INIT, (void*) FALSE); + uget_plugin_global_set(UgetPluginCurlInfo, UGET_PLUGIN_GLOBAL_INIT, (void*) FALSE); + uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_GLOBAL_INIT, (void*) FALSE); + uget_plugin_global_set(UgetPluginMediaInfo, UGET_PLUGIN_GLOBAL_INIT, (void*) FALSE); + uget_plugin_global_set(UgetPluginMegaInfo, UGET_PLUGIN_GLOBAL_INIT, (void*) FALSE); } void ugtk_app_save (UgtkApp* app) { gchar* file; + if (app->config_dir == NULL) + return; ug_create_dir_all (app->config_dir, -1); - file = g_build_filename (app->config_dir, "Setting.json", NULL); ugtk_setting_save (&app->setting, file); g_free (file); @@ -136,7 +145,7 @@ uget_rss_save_feeds (app->rss_builtin, file); g_free (file); -// uget_app_save_categories ((UgetApp*) app, g_get_user_config_dir ()); +// uget_app_save_categories ((UgetApp*) app, ugtk_get_config_dir ()); uget_app_save_categories ((UgetApp*) app, NULL); } @@ -162,7 +171,7 @@ uget_rss_load_feeds (app->rss_builtin, file); g_free (file); -// uget_app_load_categories ((UgetApp*) app, g_get_user_config_dir ()); +// uget_app_load_categories ((UgetApp*) app, ugtk_get_config_dir ()); counts = uget_app_load_categories ((UgetApp*) app, NULL); if (counts == 0) ugtk_app_add_default_category (app); @@ -174,8 +183,9 @@ uget_task_remove_all (&app->task); // sync setting and save data ugtk_app_get_window_setting (app, &app->setting); + ugtk_app_get_column_setting (app, &app->setting); ugtk_app_save (app); - // clear plugin + // clear plug-in uget_app_clear_plugins ((UgetApp*) app); // hide icon in system tray before quit ugtk_tray_icon_set_visible (&app->trayicon, FALSE); @@ -189,10 +199,9 @@ { GdkWindowState gdk_wstate; GdkWindow* gdk_window; - GtkAllocation allocation; gint x, y; - // get window position, size, and maximzied state + // get window position, size, and maximized state if (gtk_widget_get_visible (GTK_WIDGET (app->window.self)) == TRUE) { gdk_window = gtk_widget_get_window (GTK_WIDGET (app->window.self)); gdk_wstate = gdk_window_get_state (gdk_window); @@ -216,11 +225,8 @@ // GtkPaned position if (app->setting.window.category) setting->window.paned_position_h = gtk_paned_get_position (app->window.hpaned); - if (app->setting.window.summary) { - gtk_widget_get_allocation ((GtkWidget*) app->window.vpaned, &allocation); + if (app->setting.window.summary) setting->window.paned_position_v = gtk_paned_get_position (app->window.vpaned); - setting->window.paned_position_v = allocation.height - setting->window.paned_position_v; - } // banner setting->window.banner = gtk_widget_get_visible (app->banner.self); @@ -231,8 +237,6 @@ void ugtk_app_set_window_setting (UgtkApp* app, UgtkSetting* setting) { - GtkAllocation allocation; - // set window position, size, and maximized state if (setting->window.width > 0 && setting->window.height > 0 && @@ -254,9 +258,9 @@ setting->window.paned_position_h); } if (setting->window.paned_position_v > 0) { - gtk_widget_get_allocation ((GtkWidget*) app->window.vpaned, &allocation); + if (setting->window.paned_position_v > 100) // for uGet < 2.0.4 gtk_paned_set_position (app->window.vpaned, - allocation.height - setting->window.paned_position_v); + setting->window.paned_position_v); } // set visible widgets gtk_widget_set_visible (app->toolbar.self, @@ -282,14 +286,205 @@ if (setting->window.nth_state >= app->split.n_children) setting->window.nth_state = 0; ugtk_traveler_select_category (&app->traveler, - setting->window.nth_category, - setting->window.nth_state); + setting->window.nth_category, + setting->window.nth_state); // menu ugtk_app_set_menu_setting (app, setting); } +void ugtk_app_get_column_setting (UgtkApp* app, UgtkSetting* setting) +{ + GtkTreeViewColumn* column; + int width; + + // state + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_STATE); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.state = width; + // name + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_NAME); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.name = width; + // complete + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_COMPLETE); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.complete = width; + // total + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_TOTAL); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.total = width; + // percent + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_PERCENT); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.percent = width; + // elapsed + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_ELAPSED); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.elapsed = width; + // left + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_LEFT); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.left = width; + // speed + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_SPEED); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.speed = width; + // upload_speed + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_UPLOAD_SPEED); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.upload_speed = width; + // uploaded + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_UPLOADED); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.uploaded = width; + // ratio + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_RATIO); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.ratio = width; + // retry + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_RETRY); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.retry = width; + // category + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_CATEGORY); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.category = width; + // uri + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_URI); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.uri = width; + // added_on + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_ADDED_ON); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.added_on = width; + // completed_on + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_COMPLETED_ON); + width = gtk_tree_view_column_get_width (column); + setting->download_column.width.completed_on = width; +} + +void ugtk_app_set_column_setting (UgtkApp* app, UgtkSetting* setting) +{ + GtkTreeViewColumn* column; + int width; + + // state + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_STATE); + width = setting->download_column.width.state; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // name + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_NAME); + width = setting->download_column.width.name; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // complete + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_COMPLETE); + width = setting->download_column.width.complete; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // total + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_TOTAL); + width = setting->download_column.width.total; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // percent + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_PERCENT); + width = setting->download_column.width.percent; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // elapsed + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_ELAPSED); + width = setting->download_column.width.elapsed; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // left + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_LEFT); + width = setting->download_column.width.left; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // speed + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_SPEED); + width = setting->download_column.width.speed; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // upload_speed + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_UPLOAD_SPEED); + width = setting->download_column.width.upload_speed; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // uploaded + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_UPLOADED); + width = setting->download_column.width.uploaded; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // ratio + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_RATIO); + width = setting->download_column.width.ratio; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // retry + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_RETRY); + width = setting->download_column.width.retry; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // category + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_CATEGORY); + width = setting->download_column.width.category; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // uri + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_URI); + width = setting->download_column.width.uri; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // added_on + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_ADDED_ON); + width = setting->download_column.width.added_on; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); + // completed_on + column = gtk_tree_view_get_column (app->traveler.download.view, + UGTK_NODE_COLUMN_COMPLETED_ON); + width = setting->download_column.width.completed_on; + if (width > 0) + gtk_tree_view_column_set_fixed_width (column, width); +} + void ugtk_app_set_plugin_setting (UgtkApp* app, UgtkSetting* setting) { + const UgetPluginInfo* default_plugin; int limit[2]; int sensitive = FALSE; @@ -297,45 +492,61 @@ default: case UGTK_PLUGIN_ORDER_CURL: uget_app_remove_plugin ((UgetApp*) app, UgetPluginAria2Info); - uget_app_set_default_plugin ((UgetApp*) app, UgetPluginCurlInfo); + default_plugin = UgetPluginCurlInfo; sensitive = FALSE; break; case UGTK_PLUGIN_ORDER_ARIA2: uget_app_remove_plugin ((UgetApp*) app, UgetPluginCurlInfo); - uget_app_set_default_plugin ((UgetApp*) app, UgetPluginAria2Info); + default_plugin = UgetPluginAria2Info; sensitive = TRUE; break; case UGTK_PLUGIN_ORDER_CURL_ARIA2: uget_app_add_plugin ((UgetApp*) app, UgetPluginAria2Info); - uget_app_set_default_plugin ((UgetApp*) app, UgetPluginCurlInfo); + default_plugin = UgetPluginCurlInfo; sensitive = TRUE; break; case UGTK_PLUGIN_ORDER_ARIA2_CURL: uget_app_add_plugin ((UgetApp*) app, UgetPluginCurlInfo); - uget_app_set_default_plugin ((UgetApp*) app, UgetPluginAria2Info); + default_plugin = UgetPluginAria2Info; sensitive = TRUE; break; } + // set default plug-in + uget_app_set_default_plugin ((UgetApp*) app, default_plugin); + // set agent plug-in (used by media and MEGA plug-in) + uget_plugin_agent_global_set(UGET_PLUGIN_AGENT_GLOBAL_PLUGIN, + (void*) default_plugin); + // set media plug-in + uget_app_add_plugin ((UgetApp*) app, UgetPluginMediaInfo); + uget_plugin_global_set(UgetPluginMediaInfo, UGET_PLUGIN_MEDIA_GLOBAL_MATCH_MODE, + (void*)(intptr_t) setting->media.match_mode); + uget_plugin_global_set(UgetPluginMediaInfo, UGET_PLUGIN_MEDIA_GLOBAL_QUALITY, + (void*)(intptr_t) setting->media.quality); + uget_plugin_global_set(UgetPluginMediaInfo, UGET_PLUGIN_MEDIA_GLOBAL_TYPE, + (void*)(intptr_t) setting->media.type); + // set MEGA plug-in + uget_app_add_plugin ((UgetApp*) app, UgetPluginMegaInfo); + // set aria2 plug-in if (setting->plugin_order >= UGTK_PLUGIN_ORDER_ARIA2) { - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_ARIA2_URI, + uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_ARIA2_GLOBAL_URI, setting->aria2.uri); - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_ARIA2_PATH, + uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_ARIA2_GLOBAL_PATH, setting->aria2.path); - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_ARIA2_ARGUMENT, + uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_ARIA2_GLOBAL_ARGUMENT, setting->aria2.args); - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_ARIA2_TOKEN, + uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_ARIA2_GLOBAL_TOKEN, setting->aria2.token); - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_ARIA2_LAUNCH, + uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_ARIA2_GLOBAL_LAUNCH, (void*)(intptr_t) setting->aria2.launch); - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_ARIA2_SHUTDOWN, + uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_ARIA2_GLOBAL_SHUTDOWN, (void*)(intptr_t) setting->aria2.shutdown); limit[0] = setting->aria2.limit.download * 1024; limit[1] = setting->aria2.limit.upload * 1024; - uget_plugin_set (UgetPluginAria2Info, UGET_PLUGIN_SPEED_LIMIT, limit); + uget_plugin_global_set(UgetPluginAria2Info, UGET_PLUGIN_GLOBAL_SPEED_LIMIT, limit); } // app->aria2.remote_updated = FALSE; @@ -350,8 +561,8 @@ void ugtk_app_set_other_setting (UgtkApp* app, UgtkSetting* setting) { // clipboard & commandline - ugtk_clipboard_set_pattern (&app->clipboard, - setting->clipboard.pattern); + ugtk_clipboard_set_pattern (&app->clipboard, setting->clipboard.pattern); + app->clipboard.website = app->setting.clipboard.website; // global speed limit uget_task_set_speed (&app->task, setting->bandwidth.normal.download * 1024, @@ -375,8 +586,8 @@ (GtkCheckMenuItem*) app->menubar.edit.skip_existing, setting->ui.skip_existing); gtk_check_menu_item_set_active ( - (GtkCheckMenuItem*) app->menubar.edit.apply_recently, - setting->ui.apply_recently); + (GtkCheckMenuItem*) app->menubar.edit.apply_recent, + setting->ui.apply_recent); switch (app->setting.completion.action) { default: @@ -445,8 +656,8 @@ setting->summary.message); // download column gtk_check_menu_item_set_active ( - (GtkCheckMenuItem*) app->menubar.view.columns.completed, - setting->download_column.completed); + (GtkCheckMenuItem*) app->menubar.view.columns.complete, + setting->download_column.complete); gtk_check_menu_item_set_active ( (GtkCheckMenuItem*) app->menubar.view.columns.total, setting->download_column.total); @@ -490,12 +701,39 @@ void ugtk_app_set_ui_setting (UgtkApp* app, UgtkSetting* setting) { + GtkIconSize icon_size; + #ifdef HAVE_APP_INDICATOR // AppIndicator ugtk_tray_icon_use_indicator (&app->trayicon, setting->ui.app_indicator); #endif ugtk_tray_icon_set_visible (&app->trayicon, setting->ui.show_trayicon); + + // ---------------------------------------------------- + // large icon + if (setting->ui.large_icon) + icon_size = GTK_ICON_SIZE_LARGE_TOOLBAR; + else + icon_size = GTK_ICON_SIZE_SMALL_TOOLBAR; + // toolbar + gtk_toolbar_set_icon_size ((GtkToolbar*) app->toolbar.self, icon_size); + // state list + ugtk_node_view_use_large_icon (app->traveler.state.view, + setting->ui.large_icon, + setting->download_column.width.state); + // category list + ugtk_node_view_use_large_icon (app->traveler.category.view, + setting->ui.large_icon, + setting->download_column.width.state); + // download list + ugtk_node_view_use_large_icon (app->traveler.download.view, + setting->ui.large_icon, + setting->download_column.width.state); + // summary + ugtk_node_view_use_large_icon (app->summary.view, + setting->ui.large_icon, + setting->download_column.width.state); } // decide sensitive for menu, toolbar @@ -541,30 +779,20 @@ // Move Up/Down/Top/Bottom functions need reset sensitive when selection changed. // These need by on_move_download_xxx() series. - // "All Category" and "All Status" can't move download position if they were sorted. - if (app->traveler.category.cursor.pos == 0 || - app->traveler.state.cursor.pos == 0) - { - if (n_selected > 0) { - if (app->setting.download_column.sort.nth == UGTK_NODE_COLUMN_STATE) - sensitive = TRUE; - else - sensitive = FALSE; - } + if (n_selected > 0) { + // Any Category/Status can't move download position if they were sorted. + if (app->setting.download_column.sort.nth == UGTK_NODE_COLUMN_STATE) + sensitive = TRUE; + else + sensitive = FALSE; } - // move up/down + // move up/down/top/bottom gtk_widget_set_sensitive (app->toolbar.move_up, sensitive); gtk_widget_set_sensitive (app->toolbar.move_down, sensitive); - gtk_widget_set_sensitive (app->menubar.download.move_up, sensitive); - gtk_widget_set_sensitive (app->menubar.download.move_down, sensitive); - - // disable move top/bottom if user select "All Category" - if (app->traveler.category.cursor.pos == 0 || sensitive == FALSE) - sensitive = FALSE; - else - sensitive = TRUE; gtk_widget_set_sensitive (app->toolbar.move_top, sensitive); gtk_widget_set_sensitive (app->toolbar.move_bottom, sensitive); + gtk_widget_set_sensitive (app->menubar.download.move_up, sensitive); + gtk_widget_set_sensitive (app->menubar.download.move_down, sensitive); gtk_widget_set_sensitive (app->menubar.download.move_top, sensitive); gtk_widget_set_sensitive (app->menubar.download.move_bottom, sensitive); } @@ -646,6 +874,8 @@ void ugtk_app_create_category (UgtkApp* app) { UgtkNodeDialog* ndialog; + UgetCommon* common_src; + UgetCommon* common; UgetNode* cnode_src; UgetNode* cnode; gchar* title; @@ -656,53 +886,72 @@ ugtk_download_form_set_folders (&ndialog->download, &app->setting); // category list - cnode_src = app->traveler.category.cursor.node; + cnode_src = app->traveler.category.cursor.node->base; if (cnode_src->parent != &app->real) cnode_src = app->real.children; -// cnode_src = cnode_src->data; + common_src = ug_info_get(cnode_src->info, UgetCommonInfo); cnode = uget_node_new (NULL); - cnode->name = ug_strdup_printf ("%s%s", _("Copy - "), cnode_src->name); - ug_info_assign (&cnode->info, &cnode_src->info, NULL); + common = ug_info_realloc(cnode->info, UgetCommonInfo); + ug_info_assign (cnode->info, cnode_src->info, NULL); + ug_free(common->name); + common->name = ug_strdup_printf("%s%s", _("Copy - "), + (common_src->name) ? common_src->name : NULL); - ugtk_node_dialog_set (ndialog, cnode); + ugtk_node_dialog_set (ndialog, cnode->info); ugtk_node_dialog_run (ndialog, UGTK_NODE_DIALOG_NEW_CATEGORY, cnode); } void ugtk_app_create_download (UgtkApp* app, const char* sub_title, const char* uri) { UgtkNodeDialog* ndialog; + UgUri uuri; UgetNode* cnode; - gchar* title; GList* list; + union { + gchar* title; + UgetNode* cnode; + } temp; if (sub_title) - title = g_strconcat (UGTK_APP_NAME, " - ", sub_title, NULL); + temp.title = g_strconcat (UGTK_APP_NAME, " - ", sub_title, NULL); else - title = g_strconcat (UGTK_APP_NAME, " - ", _("New Download"), NULL); - ndialog = ugtk_node_dialog_new (title, app, FALSE); - g_free (title); + temp.title = g_strconcat (UGTK_APP_NAME, " - ", _("New Download"), NULL); + ndialog = ugtk_node_dialog_new (temp.title, app, FALSE); + g_free (temp.title); ugtk_download_form_set_folders (&ndialog->download, &app->setting); // category list - cnode = app->traveler.category.cursor.node; -// cnode = cnode->data; + cnode = app->traveler.category.cursor.node->base; if (cnode->parent != &app->real) cnode = app->real.children; - ugtk_node_dialog_set_category (ndialog, cnode->data); - list = NULL; - if (uri) - gtk_entry_set_text (GTK_ENTRY (ndialog->download.uri_entry), uri); - else - list = ugtk_clipboard_get_uris (&app->clipboard); - // use first URI from clipboard to set URL entry - if (list) { + if (uri != NULL) { + // set URI entry + gtk_entry_set_text ((GtkEntry*) ndialog->download.uri_entry, uri); ndialog->download.changed.uri = TRUE; + // match category by URI + ug_uri_init (&uuri, uri); + temp.cnode = uget_app_match_category ((UgetApp*) app, &uuri, NULL); + if (temp.cnode) + cnode = temp.cnode; + } + else if ( (list = ugtk_clipboard_get_uris (&app->clipboard)) != NULL ) { + // use first URI from clipboard to set URI entry gtk_entry_set_text ((GtkEntry*) ndialog->download.uri_entry, list->data); + ndialog->download.changed.uri = TRUE; + // match category by URI from clipboard + ug_uri_init (&uuri, list->data); + temp.cnode = uget_app_match_category ((UgetApp*) app, &uuri, NULL); + if (temp.cnode) + cnode = temp.cnode; + // g_list_free_full (list, g_free); ugtk_download_form_complete_entry (&ndialog->download); } + if (cnode) + cnode = cnode->base; + ugtk_node_dialog_set_category (ndialog, cnode); ugtk_node_dialog_run (ndialog, UGTK_NODE_DIALOG_NEW_DOWNLOAD, NULL); } @@ -714,7 +963,7 @@ UgetNode* cnode; int pos; - cnode = app->traveler.category.cursor.node; + cnode = app->traveler.category.cursor.node->base; pos = app->traveler.category.cursor.pos; // move cursor if (pos <= 0) @@ -754,11 +1003,13 @@ gdk_display_get_device_manager (gdk_window_get_display (gdk_win))); gdk_window_get_device_position (gdk_win, dev_pointer, NULL, NULL, &mask); - cursor = app->traveler.download.cursor.node->data; + cursor = app->traveler.download.cursor.node; + if (cursor) + cursor = cursor->base; list = ugtk_traveler_get_selected (&app->traveler); for (link = list; link; link = link->next) { node = link->data; - node = node->data; + node = node->base; link->data = node; if (delete_files || mask & GDK_SHIFT_MASK) uget_app_delete_download ((UgetApp*) app, node, delete_files); @@ -803,8 +1054,8 @@ ndialog = ugtk_node_dialog_new (title, app, TRUE); g_free (title); ugtk_download_form_set_folders (&ndialog->download, &app->setting); - ugtk_node_dialog_set (ndialog, node->data); - ugtk_node_dialog_run (ndialog, UGTK_NODE_DIALOG_EDIT_CATEGORY, node->data); + ugtk_node_dialog_set (ndialog, node->base->info); + ugtk_node_dialog_run (ndialog, UGTK_NODE_DIALOG_EDIT_CATEGORY, node->base); } void ugtk_app_edit_download (UgtkApp* app) @@ -819,26 +1070,33 @@ ugtk_download_form_set_folders (&ndialog->download, &app->setting); node = app->traveler.download.cursor.node; - ugtk_node_dialog_set (ndialog, node->data); - ugtk_node_dialog_run (ndialog, UGTK_NODE_DIALOG_EDIT_DOWNLOAD, node->data); + ugtk_node_dialog_set (ndialog, node->base->info); + ugtk_node_dialog_run (ndialog, UGTK_NODE_DIALOG_EDIT_DOWNLOAD, node->base); } // ------------------------------------ // queue/pause -void ugtk_app_queue_download (UgtkApp* app) +void ugtk_app_queue_download (UgtkApp* app, gboolean keep_active) { + UgetRelation* relation; UgetNode* node; UgetNode* cursor; GList* list; GList* link; + cursor = app->traveler.download.cursor.node; + if (cursor) + cursor = cursor->base; + list = ugtk_traveler_get_selected (&app->traveler); - cursor = app->traveler.download.cursor.node->data; for (link = list; link; link = link->next) { node = link->data; - node = node->data; + node = node->base; link->data = node; + relation = ug_info_realloc(node->info, UgetRelationInfo); + if (keep_active && relation->group & UGET_GROUP_ACTIVE) + continue; uget_app_queue_download ((UgetApp*) app, node); } if (app->traveler.state.cursor.pos == 0) { @@ -860,11 +1118,14 @@ GList* list; GList* link; + cursor = app->traveler.download.cursor.node; + if (cursor) + cursor = cursor->base; + list = ugtk_traveler_get_selected (&app->traveler); - cursor = app->traveler.download.cursor.node->data; for (link = list; link; link = link->next) { node = link->data; - node = node->data; + node = node->base; link->data = node; uget_app_pause_download ((UgetApp*) app, node); } @@ -884,20 +1145,25 @@ void ugtk_app_switch_download_state (UgtkApp* app) { + UgetRelation* relation; UgetNode* node; UgetNode* cursor; GList* list; GList* link; + cursor = app->traveler.download.cursor.node; + if (cursor) + cursor = cursor->base; + list = ugtk_traveler_get_selected (&app->traveler); - cursor = app->traveler.download.cursor.node->data; for (link = list; link; link = link->next) { node = link->data; - node = node->data; + node = node->base; link->data = node; - if (node->state & UGET_STATE_PAUSED) + relation = ug_info_realloc(node->info, UgetRelationInfo); + if (relation->group & UGET_GROUP_PAUSED) uget_app_queue_download ((UgetApp*) app, node); - else if (node->state & UGET_STATE_ACTIVE) + else if (relation->group & UGET_GROUP_ACTIVE) uget_app_pause_download ((UgetApp*) app, node); } if (app->traveler.state.cursor.pos == 0) { @@ -983,18 +1249,17 @@ GList* link; GList* list = NULL; - if (cnode == app->traveler.category.cursor.node) + if (cnode == app->traveler.category.cursor.node->base) return; - cnode = cnode->data; list = ugtk_traveler_get_selected (&app->traveler); for (link = list; link; link = link->next) { node = link->data; - node = node->data; + node = node->base; if (node->parent == cnode) continue; uget_node_remove (node->parent, node); - uget_node_unref_fake (node); + uget_node_clear_fake (node); uget_node_append (cnode, node); } g_list_free (list); @@ -1072,7 +1337,7 @@ title = g_strconcat (UGTK_APP_NAME " - ", _("Open Torrent file"), NULL); dialog = create_file_chooser (app->window.self, GTK_FILE_CHOOSER_ACTION_OPEN, - title, "Torrent file (*.torrent)", "application/x-bittorrent"); + title, _("Torrent file (*.torrent)"), "application/x-bittorrent"); g_free (title); g_signal_connect (dialog, "response", G_CALLBACK (on_create_torrent_response), app); @@ -1124,7 +1389,7 @@ // file = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog)); gtk_widget_destroy (dialog); cnode = app->traveler.category.cursor.node; - if (uget_app_save_category ((UgetApp*) app, cnode, file) == FALSE) + if (uget_app_save_category ((UgetApp*) app, cnode->base, file, NULL) == FALSE) ugtk_app_show_message (app, GTK_MESSAGE_ERROR, _("Failed to save category file.")); g_free (file); } @@ -1142,7 +1407,7 @@ file = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); // file = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog)); gtk_widget_destroy (dialog); - if (uget_app_load_category ((UgetApp*) app, file)) + if (uget_app_load_category ((UgetApp*) app, file, NULL)) ugtk_menubar_sync_category (&app->menubar, app, TRUE); else ugtk_app_show_message (app, GTK_MESSAGE_ERROR, _("Failed to load category file.")); @@ -1177,7 +1442,7 @@ title = g_strconcat (UGTK_APP_NAME " - ", _("Open Category file"), NULL); dialog = create_file_chooser (app->window.self, GTK_FILE_CHOOSER_ACTION_OPEN, - title, "JSON file (*.json)", "application/json"); + title, _("JSON file (*.json)"), "application/json"); g_free (title); g_signal_connect (dialog, "response", @@ -1223,7 +1488,7 @@ ugtk_download_form_set_folders (&bdialog->download, &app->setting); ugtk_batch_dialog_use_selector (bdialog); // category - cnode = app->traveler.category.cursor.node; + cnode = app->traveler.category.cursor.node->base; if (cnode->parent != &app->real) cnode = app->real.children; ugtk_batch_dialog_set_category (bdialog, cnode); @@ -1278,7 +1543,7 @@ ugtk_batch_dialog_use_selector (bdialog); ugtk_download_form_set_folders (&bdialog->download, &app->setting); // category - cnode = app->traveler.category.cursor.node; + cnode = app->traveler.category.cursor.node->base; if (cnode->parent != &app->real) cnode = app->real.children; ugtk_batch_dialog_set_category (bdialog, cnode); @@ -1308,9 +1573,9 @@ channel = g_io_channel_new_file (fname, "w", NULL); g_free (fname); - node = app->traveler.category.cursor.node; + node = app->traveler.category.cursor.node->base; for (node = node->children; node; node = node->next) { - common = ug_info_get (&node->data->info, UgetCommonInfo); + common = ug_info_get (node->info, UgetCommonInfo); if (common == NULL) continue; if (common->uri) { @@ -1333,7 +1598,7 @@ title = g_strconcat (UGTK_APP_NAME " - ", _("Import URLs from HTML file"), NULL); dialog = create_file_chooser (app->window.self, GTK_FILE_CHOOSER_ACTION_OPEN, - title, "HTML file (*.htm, *.html)", "text/html"); + title, _("HTML file (*.htm, *.html)"), "text/html"); g_free (title); g_signal_connect (dialog, "response", G_CALLBACK (on_import_html_file_response), app); @@ -1348,7 +1613,7 @@ title = g_strconcat (UGTK_APP_NAME " - ", _("Import URLs from text file"), NULL); dialog = create_file_chooser (app->window.self, GTK_FILE_CHOOSER_ACTION_OPEN, - title, "Plain text file", "text/plain"); + title, _("Plain text file"), "text/plain"); g_free (title); g_signal_connect (dialog, "response", G_CALLBACK (on_import_text_file_response), app); @@ -1386,11 +1651,10 @@ ugtk_download_form_set_folders (&bdialog->download, &app->setting); // category list - cnode = app->traveler.category.cursor.node; -// cnode = cnode->data; + cnode = app->traveler.category.cursor.node->base; if (cnode->parent != &app->real) cnode = app->real.children; - ugtk_batch_dialog_set_category (bdialog, cnode->data); + ugtk_batch_dialog_set_category (bdialog, cnode); ugtk_batch_dialog_run (bdialog); } @@ -1432,11 +1696,10 @@ g_list_free (list); // category list - cnode = app->traveler.category.cursor.node; -// cnode = cnode->data; + cnode = app->traveler.category.cursor.node->base; if (cnode->parent != &app->real) cnode = app->real.children; - ugtk_batch_dialog_set_category (bdialog, cnode->data); + ugtk_batch_dialog_set_category (bdialog, cnode); ugtk_batch_dialog_run (bdialog); } @@ -1510,10 +1773,10 @@ static int counts = 0; cnode = uget_node_new (NULL); - cnode->name = ug_strdup_printf ("%s %d", _("New"), counts++); - common = ug_info_realloc (&cnode->info, UgetCommonInfo); + common = ug_info_realloc (cnode->info, UgetCommonInfo); + common->name = ug_strdup_printf ("%s %d", _("New"), counts++); common->folder = ug_strdup (g_get_home_dir ()); - category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + category = ug_info_realloc (cnode->info, UgetCategoryInfo); *(char**)ug_array_alloc (&category->schemes, 1) = ug_strdup ("ftps"); *(char**)ug_array_alloc (&category->schemes, 1) = ug_strdup ("magnet"); *(char**)ug_array_alloc (&category->hosts, 1) = ug_strdup (".edu"); @@ -1578,6 +1841,7 @@ clipboard->self = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); clipboard->text = NULL; clipboard->regex = g_regex_new (pattern, G_REGEX_CASELESS, 0, NULL); + clipboard->website = TRUE; } void ugtk_clipboard_set_pattern (struct UgtkClipboard* clipboard, const gchar* pattern) @@ -1647,8 +1911,13 @@ text = NULL; // free URIs if not matched if (text == NULL || g_regex_match (clipboard->regex, text+1, 0, NULL) == FALSE) { - g_free (link->data); - link->data = NULL; + // storage or media website + if (clipboard->website == FALSE || + uget_site_get_id (link->data) == UGET_SITE_UNKNOWN) + { + g_free (link->data); + link->data = NULL; + } } ug_free (temp); } diff -Nru uget-2.0.2/ui-gtk/UgtkApp-callback.c uget-2.2.2/ui-gtk/UgtkApp-callback.c --- uget-2.0.2/ui-gtk/UgtkApp-callback.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkApp-callback.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -65,12 +65,17 @@ // ---------------------------------------------------------------------------- // Toolbar -// + static void on_create_download (GtkWidget* widget, UgtkApp* app) { ugtk_app_create_download (app, NULL, NULL); } +static void on_set_download_runnable (GtkWidget* widget, UgtkApp* app) +{ + ugtk_app_queue_download (app, TRUE); +} + // ---------------------------------------------------------------------------- // UgtkWindow @@ -94,16 +99,16 @@ node = app->traveler.download.cursor.node; if (node) - node = node->data; + node = node->base; ugtk_summary_show (&app->summary, node); // UgtkMenubar.download.priority if (node == NULL) priority = UGET_PRIORITY_NORMAL; else { - relation = ug_info_get (&node->info, UgetRelationInfo); + relation = ug_info_get (node->info, UgetRelationInfo); if (relation) - priority = relation->task.priority; + priority = relation->priority; else priority = UGET_PRIORITY_NORMAL; } @@ -135,15 +140,10 @@ if (traveler->state.cursor.pos != traveler->state.cursor.pos_last || traveler->category.cursor.pos != traveler->category.cursor.pos_last) { - // Is user select "All Status" or "All Category"? - if (traveler->state.cursor.pos && traveler->category.cursor.pos) - ugtk_traveler_set_sorting (traveler, FALSE, 0, 0); - else { - // set sorting column - ugtk_traveler_set_sorting (traveler, TRUE, - app->setting.download_column.sort.nth, - app->setting.download_column.sort.type); - } + // set sorting column + ugtk_traveler_set_sorting (traveler, TRUE, + app->setting.download_column.sort.nth, + app->setting.download_column.sort.type); } // show/hide download column and setup items in UgtkViewMenu @@ -160,10 +160,10 @@ sensitive = FALSE; else sensitive = TRUE; - gtk_widget_set_sensitive (app->menubar.view.columns.completed, sensitive); + gtk_widget_set_sensitive (app->menubar.view.columns.complete, sensitive); gtk_widget_set_sensitive (app->menubar.view.columns.percent, sensitive); column = gtk_tree_view_get_column (view, UGTK_NODE_COLUMN_COMPLETE); - gtk_tree_view_column_set_visible (column, sensitive && setting->completed); + gtk_tree_view_column_set_visible (column, sensitive && setting->complete); column = gtk_tree_view_get_column (view, UGTK_NODE_COLUMN_PERCENT); gtk_tree_view_column_set_visible (column, sensitive && setting->percent); // Recycled @@ -455,8 +455,8 @@ g_signal_connect_swapped (toolbar->save, "clicked", G_CALLBACK (ugtk_app_save), app); // change status - g_signal_connect_swapped (toolbar->runnable, "clicked", - G_CALLBACK (ugtk_app_queue_download), app); + g_signal_connect (toolbar->runnable, "clicked", + G_CALLBACK (on_set_download_runnable), app); g_signal_connect_swapped (toolbar->pause, "clicked", G_CALLBACK (ugtk_app_pause_download), app); // change data @@ -482,7 +482,7 @@ GtkTreeIter iter; UgtkApp* app; - app = node->notification->data; + app = node->control->notifier->data; if (node == (UgetNode*) app->traveler.category.model->root) { // category inserted path = gtk_tree_path_new_from_indices ( @@ -513,7 +513,7 @@ UgtkApp* app; int pos; - app = node->notification->data; + app = node->control->notifier->data; if (node == (UgetNode*) app->traveler.category.model->root) { // category removed if (sibling) @@ -549,7 +549,7 @@ UgtkApp* app; node = child->parent; - app = node->notification->data; + app = node->control->notifier->data; if (node == (UgetNode*) app->traveler.category.model->root) { // category changed path = gtk_tree_path_new_from_indices ( diff -Nru uget-2.0.2/ui-gtk/UgtkApp.h uget-2.2.2/ui-gtk/UgtkApp.h --- uget-2.0.2/ui-gtk/UgtkApp.h 2015-04-30 23:37:53.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkApp.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -71,31 +71,36 @@ struct UgtkApp { UGET_APP_MEMBERS; -// UgetNode real; // root node for real category -// UgetNode split; -// UgetNode sorted; -// UgetNode mix; -// UgetNode mix_split; -// UgRegistry infos; -// UgRegistry plugins; -// UgetPluginInfo* plugin; -// UgetTask task; -// void* uri_hash; -// char* config_dir; -// int n_error; // these n_xxxx increase by grow() -// int n_moved; -// int n_deleted; -// int n_completed; +/* // ------ UgetApp members ------ + UgetNode real; // real root node for real nodes + UgetNode split; // virtual root + UgetNode sorted; // virtual root + UgetNode sorted_split; // virtual root + UgetNode mix; // virtual root + UgetNode mix_split; // virtual root + UgRegistry infos; + UgRegistry plugins; + UgetPluginInfo* plugin_default; + UgetTask task; + UgArrayPtr nodes; + void* uri_hash; + char* config_dir; + int n_error; // uget_app_grow() will count these value: + int n_moved; // n_error, n_moved, n_deleted, and + int n_deleted; // n_completed + int n_completed; // + */ UgetRpc* rpc; UgtkSetting setting; UgtkScheduleState schedule_state; + // recent download settings struct { - UgetNode* infonode; + UgInfo* info; int category_index; int saved; - } last; + } recent; // status gboolean user_action; @@ -109,6 +114,8 @@ gchar* text; GRegex* regex; gboolean processing; + // monitor storage or media website + gboolean website; } clipboard; // dialogs @@ -195,6 +202,8 @@ // set UgtkSetting from/to UgtkApp void ugtk_app_get_window_setting (UgtkApp* app, UgtkSetting* setting); void ugtk_app_set_window_setting (UgtkApp* app, UgtkSetting* setting); +void ugtk_app_get_column_setting (UgtkApp* app, UgtkSetting* setting); +void ugtk_app_set_column_setting (UgtkApp* app, UgtkSetting* setting); void ugtk_app_set_plugin_setting (UgtkApp* app, UgtkSetting* setting); void ugtk_app_set_other_setting (UgtkApp* app, UgtkSetting* setting); void ugtk_app_set_menu_setting (UgtkApp* app, UgtkSetting* setting); @@ -216,7 +225,7 @@ void ugtk_app_edit_category (UgtkApp* app); void ugtk_app_edit_download (UgtkApp* app); // queue/pause -void ugtk_app_queue_download (UgtkApp* app); +void ugtk_app_queue_download (UgtkApp* app, gboolean keep_active); void ugtk_app_pause_download (UgtkApp* app); void ugtk_app_switch_download_state (UgtkApp* app); // move selected node diff -Nru uget-2.0.2/ui-gtk/UgtkApp-main.c uget-2.2.2/ui-gtk/UgtkApp-main.c --- uget-2.0.2/ui-gtk/UgtkApp-main.c 2015-08-18 01:17:31.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkApp-main.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -188,6 +188,7 @@ // ---------------------------------------------------------------------------- // SIGTERM UgtkApp* ugtk_app; +gboolean ugtk_quitting = FALSE; static void sys_signal_handler (int sig) { @@ -198,11 +199,15 @@ case SIGTERM: // termination request case SIGABRT: // Abnormal termination (abort) // case SIGQUIT: - // This will quit gtk_main() to main() - ugtk_app_quit (ugtk_app); + // avoid crash when program re-enter signal handler. + if (ugtk_quitting == FALSE) { + ugtk_quitting = TRUE; + // This will quit gtk_main() to main() + ugtk_app_quit (ugtk_app); #if !(defined _WIN32 || defined _WIN64) - sync(); + sync(); #endif + } break; // case SIGSEGV: @@ -263,10 +268,16 @@ // JSON-RPC server rpc = uget_rpc_new (NULL); - rpc->backup_dir = g_build_filename (g_get_user_config_dir (), +#ifdef USE_UNIX_DOMAIN_SOCKET + rpc->backup_dir = ug_build_filename (ugtk_get_config_dir (), + UGTK_APP_DIR, "RPC-socket", NULL); + uget_rpc_use_unix_socket (rpc, rpc->backup_dir, -1); + ug_free (rpc->backup_dir); +#endif + rpc->backup_dir = g_build_filename (ugtk_get_config_dir (), UGTK_APP_DIR, "attachment", NULL); ug_create_dir_all (rpc->backup_dir, -1); - if (uget_rpc_start_server (rpc)) + if (uget_rpc_start_server (rpc, TRUE)) uget_rpc_send_command (rpc, argc-1, argv+1); else { uget_rpc_send_command (rpc, argc-1, argv+1); @@ -301,13 +312,17 @@ gtk_main (); + // avoid crash when program re-enter signal handler. + ugtk_quitting = TRUE; + // clear/free other resource uget_app_clear_attachment ((UgetApp*) ugtk_app); ugtk_app_final (ugtk_app); g_free (ugtk_app); - // sleep 3 second to wait thread and shutdown RPC - g_usleep (3 * 1000000); + // sleep 2 second to wait thread and shutdown RPC + g_usleep (1000000); uget_rpc_free (rpc); + g_usleep (1000000); // libnotify #ifdef HAVE_LIBNOTIFY diff -Nru uget-2.0.2/ui-gtk/UgtkApp-timeout.c uget-2.2.2/ui-gtk/UgtkApp-timeout.c --- uget-2.0.2/ui-gtk/UgtkApp-timeout.c 2015-04-30 23:36:03.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkApp-timeout.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -67,7 +67,9 @@ static void ugtk_app_notify_starting (UgtkApp* app); static void ugtk_app_notify_completed (UgtkApp* app); // GSourceFunc +#ifdef HAVE_RSS_NOTIFY static gboolean ugtk_app_timeout_rss (UgtkApp* app); +#endif static gboolean ugtk_app_timeout_rpc (UgtkApp* app); static gboolean ugtk_app_timeout_queuing (UgtkApp* app); static gboolean ugtk_app_timeout_clipboard (UgtkApp* app); @@ -84,9 +86,11 @@ // 2 seconds g_timeout_add_seconds_full (G_PRIORITY_DEFAULT_IDLE, 2, (GSourceFunc) ugtk_app_timeout_clipboard, app, NULL); +#ifdef HAVE_RSS_NOTIFY // 3 seconds g_timeout_add_seconds_full (G_PRIORITY_DEFAULT_IDLE, 3, (GSourceFunc) ugtk_app_timeout_rss, app, NULL); +#endif // HAVE_RSS_NOTIFY // 1 minutes g_timeout_add_seconds_full (G_PRIORITY_DEFAULT_IDLE, 60, (GSourceFunc) ugtk_app_timeout_autosave, app, NULL); @@ -141,8 +145,7 @@ app->schedule_state = state; changed = TRUE; // switch mode - switch (state) - { + switch (state) { case UGTK_SCHEDULE_TURN_OFF: for (cnode = app->real.children; cnode; cnode = cnode->next) uget_app_stop_category ((UgetApp*)app, cnode); @@ -174,7 +177,7 @@ static gboolean ugtk_app_timeout_queuing (UgtkApp* app) { static int n_counts = 0; - static int n_active_prev = 0; + static int n_active_last = 0; int n_active; int no_queuing = FALSE; gchar* string; @@ -194,15 +197,15 @@ } n_active = uget_app_grow ((UgetApp*) app, no_queuing); - if (n_active != n_active_prev) { + if (n_active != n_active_last) { // start downloading - if (n_active > 0 && n_active_prev == 0) { + if (n_active > 0 && n_active_last == 0) { // starting notification if (app->setting.ui.start_notification) ugtk_app_notify_starting (app); } // stop downloading - else if (n_active == 0 && n_active_prev > 0) { + else if (n_active == 0 && n_active_last > 0) { if (app->n_error > 0) { // error notification ugtk_app_notify_error (app); @@ -262,7 +265,7 @@ } } - if (n_active > 0 || app->n_moved > 0) { + if (n_active > 0 || n_active != n_active_last || app->n_moved > 0) { // adjust speed limit every 1 seconds if (n_counts & 1) uget_task_adjust_speed (&app->task); @@ -277,13 +280,6 @@ app->task.speed.download, app->task.speed.upload); } - if (app->n_moved > 0) { - // refresh other data & status - gtk_widget_queue_draw ((GtkWidget*) app->traveler.download.view); - gtk_widget_queue_draw ((GtkWidget*) app->traveler.category.view); - gtk_widget_queue_draw ((GtkWidget*) app->traveler.state.view); - } - // if current status is "All" or "Active" if (app->traveler.state.cursor.pos == 0 || app->traveler.state.cursor.pos == 1) @@ -292,9 +288,17 @@ ugtk_traveler_restore_selection (&app->traveler); } + uget_app_trim((UgetApp*) app, NULL); + if (app->n_moved > 0) { + // refresh other data & status + gtk_widget_queue_draw ((GtkWidget*) app->traveler.download.view); + gtk_widget_queue_draw ((GtkWidget*) app->traveler.category.view); + gtk_widget_queue_draw ((GtkWidget*) app->traveler.state.view); + } + app->user_action = FALSE; app->n_moved = 0; // reset counter - n_active_prev = n_active; + n_active_last = n_active; n_counts++; return TRUE; } @@ -309,7 +313,8 @@ gtk_window_set_keep_above (window, FALSE); } -static void ugtk_app_add_uris_quietly (UgtkApp* app, GList* list, UgetNode* infonode, int nth_category) +static void ugtk_app_add_uris_quietly (UgtkApp* app, GList* list, + UgInfo* node_info, int nth_category) { GList* link; UgUri uuri; @@ -334,18 +339,18 @@ if (cnode == NULL) { // match category by URI ug_uri_init (&uuri, link->data); - cnode = uget_app_match_category ((UgetApp*) app, &uuri); + cnode = uget_app_match_category ((UgetApp*) app, &uuri, NULL); } - if (cnode == NULL && infonode) { + if (cnode == NULL && node_info) { // match category by filename - common = ug_info_realloc (&infonode->info, UgetCommonInfo); + common = ug_info_realloc(node_info, UgetCommonInfo); if (common && common->file) { ug_uri_init (&uuri, common->file); - cnode = uget_app_match_category ((UgetApp*) app, &uuri); + cnode = uget_app_match_category ((UgetApp*) app, &uuri, NULL); } } if (cnode == NULL) { - if (infonode == NULL) { + if (node_info == NULL) { cnode = uget_node_nth_child (&app->real, app->setting.clipboard.nth_category); } @@ -357,15 +362,15 @@ if (cnode == NULL) cnode = uget_node_nth_child (&app->real, 0); // add download - if (infonode == NULL) { + if (node_info == NULL) { // add and free URI uget_app_add_download_uri ((UgetApp*) app, link->data, cnode, TRUE); g_free (link->data); } else { dnode = uget_node_new (NULL); - ug_info_assign (&dnode->info, &infonode->info, NULL); - common = ug_info_realloc (&dnode->info, UgetCommonInfo); + ug_info_assign(dnode->info, node_info, NULL); + common = ug_info_realloc(dnode->info, UgetCommonInfo); common->uri = link->data; uget_app_add_download ((UgetApp*) app, dnode, cnode, TRUE); } @@ -373,7 +378,8 @@ } } -static void ugtk_app_add_uris_selected (UgtkApp* app, GList* list, UgetNode* infonode, int nth_category) +static void ugtk_app_add_uris_selected (UgtkApp* app, GList* list, + UgInfo* node_info, int nth_category) { UgtkBatchDialog* bdialog; UgtkSelectorPage* page; @@ -389,7 +395,7 @@ } // choose title for clipboard or command-line - if (infonode == NULL) + if (node_info == NULL) title = g_strconcat (UGTK_APP_NAME " - ", _("New from Clipboard"), NULL); else title = g_strconcat (UGTK_APP_NAME " - ", _("New Download"), NULL); @@ -400,9 +406,9 @@ if (list->next == NULL) ugtk_batch_dialog_disable_batch (bdialog); // apply other setting - if (infonode) { - ugtk_download_form_set (&bdialog->download, infonode, FALSE); - ugtk_proxy_form_set (&bdialog->proxy, infonode, FALSE); + if (node_info) { + ugtk_download_form_set(&bdialog->download, node_info, FALSE); + ugtk_proxy_form_set(&bdialog->proxy, node_info, FALSE); } // add URIs if (list->next == NULL) { @@ -415,7 +421,7 @@ // all uris in list will be freed. ugtk_batch_dialog_use_selector (bdialog); ugtk_selector_hide_href (&bdialog->selector); - if (infonode == NULL) + if (node_info == NULL) page = ugtk_selector_add_page (&bdialog->selector, _("Clipboard")); else page = ugtk_selector_add_page (&bdialog->selector, _("Command line")); @@ -430,18 +436,15 @@ if (cnode == NULL && list->data) { // match category by URI ug_uri_init (&uuri, list->data); - cnode = uget_app_match_category ((UgetApp*) app, &uuri); - } - if (cnode == NULL && infonode) { - // match category by filename - common = ug_info_realloc (&infonode->info, UgetCommonInfo); - if (common && common->file) { - ug_uri_init (&uuri, common->file); - cnode = uget_app_match_category ((UgetApp*) app, &uuri); + if (node_info == NULL) + cnode = uget_app_match_category ((UgetApp*) app, &uuri, NULL); + else { + common = ug_info_realloc(node_info, UgetCommonInfo); + cnode = uget_app_match_category ((UgetApp*) app, &uuri, common->file); } } if (cnode == NULL) { - if (infonode == NULL) { + if (node_info == NULL) { cnode = uget_node_nth_child (&app->real, app->setting.clipboard.nth_category); } @@ -463,9 +466,9 @@ ugtk_batch_dialog_run (bdialog); } -static void on_clipboard_text_received (GtkClipboard* clipboard, - const gchar* text, - gpointer user_data) +static void on_clipboard_text_received (GtkClipboard* clipboard, + const gchar* text, + gpointer user_data) { UgtkApp* app; GList* list; @@ -505,7 +508,7 @@ { UgetRpcReq* req; UgetRpcCmd* cmd; - UgetNode* infonode; + UgInfo* node_info; for (;;) { if (uget_rpc_has_request(app->rpc) == FALSE) @@ -555,17 +558,17 @@ break; // add downloads - infonode = uget_node_new (NULL); - uget_option_value_to_info (&cmd->value, &infonode->info); + node_info = ug_info_new(8, 0); + uget_option_value_to_info(&cmd->value, node_info); if (cmd->value.quiet) { ugtk_app_add_uris_quietly (app, (GList*) cmd->uris.head, - infonode, cmd->value.category_index); + node_info, cmd->value.category_index); } else { ugtk_app_add_uris_selected (app, (GList*) cmd->uris.head, - infonode, cmd->value.category_index); + node_info, cmd->value.category_index); } - uget_node_unref (infonode); + ug_info_unref(node_info); break; default: @@ -573,11 +576,14 @@ } req->free (req); } + + return TRUE; } // ---------------------------------------------------------------------------- // RSS +#ifdef HAVE_RSS_NOTIFY static gboolean ugtk_app_timeout_rss_update (UgtkApp* app) { uget_rss_update (app->rss_builtin, FALSE); @@ -603,6 +609,7 @@ } return TRUE; } +#endif // HAVE_RSS_NOTIFY // ---------------------------------------------------------------------------- // sound @@ -771,7 +778,7 @@ #endif // HAVE_LIBNOTIFY #define NOTIFICATION_ERROR_TITLE _("Error Occurred") -#define NOTIFICATION_ERROR_STRING _("Error Occurred when downloading.") +#define NOTIFICATION_ERROR_STRING _("Error Occurred during downloading.") #define NOTIFICATION_STARTING_TITLE _("Download Starting") #define NOTIFICATION_STARTING_STRING _("Starting download queue.") #define NOTIFICATION_COMPLETED_TITLE _("Download Completed") diff -Nru uget-2.0.2/ui-gtk/UgtkApp-ui.c uget-2.2.2/ui-gtk/UgtkApp-ui.c --- uget-2.0.2/ui-gtk/UgtkApp-ui.c 2015-09-10 02:26:03.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkApp-ui.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -46,20 +46,12 @@ static void ugtk_toolbar_init_ui (struct UgtkToolbar* app_toolbar, GtkAccelGroup* accel_group); static void ugtk_window_init_ui (struct UgtkWindow* window, UgtkApp* app); static void ugtk_app_init_size (UgtkApp* app); +#if defined _WIN32 || defined _WIN64 +static void ugtk_app_init_ui_win32 (UgtkApp* app, int screen_width); +#endif void ugtk_app_init_ui (UgtkApp* app) { -#if defined _WIN32 || defined _WIN64 - // This will use icons\hicolor\index.theme - GtkIconTheme* icon_theme; - gchar* path; - - icon_theme = gtk_icon_theme_get_default (); - path = g_build_filename (DATADIR, "icons", NULL); - gtk_icon_theme_append_search_path (icon_theme, path); - g_free (path); -#endif // _WIN32 || _WIN64 - // Registers a new accelerator "Ctrl+N" with the global accelerator map. gtk_accel_map_add_entry (UGTK_APP_ACCEL_PATH_NEW, GDK_KEY_n, GDK_CONTROL_MASK); gtk_accel_map_add_entry (UGTK_APP_ACCEL_PATH_LOAD, GDK_KEY_o, GDK_CONTROL_MASK); @@ -121,13 +113,50 @@ else { width = width * 85 / 100; height = height * 8 / 10; - paned_position = 220; + paned_position = width * 22 / 100; } gtk_window_resize (app->window.self, width, height); gtk_paned_set_position (app->window.hpaned, paned_position); + +#if defined _WIN32 || defined _WIN64 + ugtk_app_init_ui_win32 (app, width); +#endif } +#if defined _WIN32 || defined _WIN64 +static void ugtk_app_init_ui_win32 (UgtkApp* app, int screen_width) +{ + GSettings* gset; + gint sidebar_width; + +#if 0 + // This will use icons\hicolor\index.theme + GtkIconTheme* icon_theme; + gchar* path; + + icon_theme = gtk_icon_theme_get_default (); + path = g_build_filename (UG_DATADIR, "icons", NULL); + gtk_icon_theme_append_search_path (icon_theme, path); + g_free (path); +#endif + + if (screen_width <= 800) + sidebar_width = 0; + else if (screen_width <= 1200) + sidebar_width = 180; + else + sidebar_width = 220; + + gset = g_settings_new ("org.gtk.Settings.FileChooser"); + g_settings_set_boolean (gset, "sort-directories-first", TRUE); + + // default of "sidebar-width" == 148 + if (sidebar_width > 0 && g_settings_get_int(gset, "sidebar-width") == 148) + g_settings_set_int (gset, "sidebar-width", sidebar_width); +} +#endif // _WIN32 || _WIN64 + // ---------------------------------------------------------------------------- // UgtkWindow @@ -184,29 +213,41 @@ { GtkBox* hbox; GtkWidget* widget; + PangoContext* context; + PangoLayout* layout; + int text_width; sbar->self = (GtkStatusbar*) gtk_statusbar_new (); hbox = GTK_BOX (sbar->self); + // calculate text width + context = gtk_widget_get_pango_context (GTK_WIDGET (sbar->self)); + layout = pango_layout_new (context); + pango_layout_set_text (layout, "9999 MiB/s", -1); + pango_layout_get_pixel_size (layout, &text_width, NULL); + g_object_unref (layout); + if (text_width < 100) + text_width = 100; + // upload speed label widget = gtk_label_new (""); sbar->up_speed = (GtkLabel*) widget; - gtk_widget_set_size_request (widget, 100, 0); + gtk_widget_set_size_request (widget, text_width, 0); gtk_box_pack_end (hbox, widget, FALSE, TRUE, 2); // gtk_label_set_width_chars (sbar->down_speed, 15); gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5); - gtk_box_pack_end (hbox, gtk_label_new ("U:"), FALSE, TRUE, 2); + gtk_box_pack_end (hbox, gtk_label_new ("\xE2\x86\x91"), FALSE, TRUE, 2); // "↑" gtk_box_pack_end (hbox, gtk_separator_new (GTK_ORIENTATION_VERTICAL), FALSE, TRUE, 8); // download speed label widget = gtk_label_new (""); sbar->down_speed = (GtkLabel*) widget; - gtk_widget_set_size_request (widget, 100, 0); + gtk_widget_set_size_request (widget, text_width, 0); gtk_box_pack_end (hbox, widget, FALSE, TRUE, 2); // gtk_label_set_width_chars (sbar->down_speed, 15); gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5); - gtk_box_pack_end (hbox, gtk_label_new ("D:"), FALSE, TRUE, 2); + gtk_box_pack_end (hbox, gtk_label_new ("\xE2\x86\x93"), FALSE, TRUE, 2); // "↓" } // ---------------------------------------------------------------------------- diff -Nru uget-2.0.2/ui-gtk/UgtkBanner.c uget-2.2.2/ui-gtk/UgtkBanner.c --- uget-2.0.2/ui-gtk/UgtkBanner.c 2015-04-30 23:36:03.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkBanner.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk/UgtkBanner.h uget-2.2.2/ui-gtk/UgtkBanner.h --- uget-2.0.2/ui-gtk/UgtkBanner.h 2015-04-30 23:36:03.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkBanner.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk/UgtkBatchDialog.c uget-2.2.2/ui-gtk/UgtkBatchDialog.c --- uget-2.0.2/ui-gtk/UgtkBatchDialog.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkBatchDialog.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -122,7 +122,7 @@ gtk_dialog_set_response_sensitive (bdialog->self, GTK_RESPONSE_REJECT, FALSE); // add Page 1 - ugtk_sequencer_init (&bdialog->sequencer); + ugtk_sequence_init (&bdialog->sequencer); gtk_widget_get_preferred_size (bdialog->notebook, &requisition, NULL); gtk_widget_set_size_request (bdialog->sequencer.self, requisition.width, requisition.height); @@ -161,8 +161,8 @@ void ugtk_batch_dialog_run (UgtkBatchDialog* bdialog) { - ugtk_node_dialog_apply_last ((UgtkNodeDialog*) bdialog, - bdialog->app); + ugtk_node_dialog_apply_recent ((UgtkNodeDialog*) bdialog, + bdialog->app); // emit notify and call ugtk_batch_dialog_set_completed() if (bdialog->selector.self) ugtk_selector_count_marked (&bdialog->selector); @@ -198,7 +198,7 @@ uri = gtk_entry_get_text ((GtkEntry*)bdialog->download.uri_entry); if (ugtk_node_dialog_confirm_existing((UgtkNodeDialog*) bdialog, uri)) { dnode = uget_node_new (NULL); - ugtk_node_dialog_get ((UgtkNodeDialog*) bdialog, dnode); + ugtk_node_dialog_get ((UgtkNodeDialog*) bdialog, dnode->info); uget_app_add_download ((UgetApp*) app, dnode, cnode, FALSE); } } @@ -209,31 +209,26 @@ UgetNode* dnode; UgetNode* cnode; UgetCommon* common; - GList* uri_list; - GList* link; + UgList result; + UgLink* link; app = bdialog->app; ugtk_batch_dialog_get_category (bdialog, &cnode); ugtk_download_form_get_folders (&bdialog->download, &app->setting); // sequencer batch - uri_list = ugtk_sequencer_get_list (&bdialog->sequencer, FALSE); + ug_list_init (&result); + ugtk_sequence_get_list (&bdialog->sequencer, &result); - for (link = uri_list; link; link = link->next) { + for (link = result.head; link; link = link->next) { dnode = uget_node_new (NULL); - common = ug_info_realloc (&dnode->info, UgetCommonInfo); - ugtk_node_dialog_get ((UgtkNodeDialog*) bdialog, dnode); -#if 0 - common->uri = link->data; - link->data = NULL; -#else + common = ug_info_realloc (dnode->info, UgetCommonInfo); + ugtk_node_dialog_get ((UgtkNodeDialog*) bdialog, dnode->info); common->uri = ug_strdup (link->data); - g_free (link->data); -#endif uget_app_add_download ((UgetApp*) app, dnode, cnode, FALSE); } - g_list_free (uri_list); + uget_sequence_clear_result(&result); } static void on_selector_response (UgtkBatchDialog* bdialog) @@ -254,8 +249,8 @@ for (link = uri_list; link; link = link->next) { dnode = uget_node_new (NULL); - common = ug_info_realloc (&dnode->info, UgetCommonInfo); - ugtk_node_dialog_get ((UgtkNodeDialog*) bdialog, dnode); + common = ug_info_realloc (dnode->info, UgetCommonInfo); + ugtk_node_dialog_get ((UgtkNodeDialog*) bdialog, dnode->info); #if 0 common->uri = link->data; link->data = NULL; @@ -305,7 +300,7 @@ break; case GTK_RESPONSE_OK: - ugtk_node_dialog_store_last ((UgtkNodeDialog*) bdialog, bdialog->app); + ugtk_node_dialog_store_recent ((UgtkNodeDialog*) bdialog, bdialog->app); if (gtk_widget_get_sensitive (bdialog->download.uri_entry)) on_no_batch_response (bdialog); if (bdialog->sequencer.self) diff -Nru uget-2.0.2/ui-gtk/UgtkBatchDialog.h uget-2.2.2/ui-gtk/UgtkBatchDialog.h --- uget-2.0.2/ui-gtk/UgtkBatchDialog.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkBatchDialog.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #ifdef __cplusplus @@ -53,20 +53,23 @@ struct UgtkBatchDialog { UGTK_NODE_DIALOG_MEMBERS; -// GtkDialog* self; -// GtkBox* hbox; -// GtkWidget* notebook; -// GtkTreeView* node_view; -// UgtkNodeTree* node_tree; -// gulong handler_id[3]; -// UgtkApp* app; -// UgetNode* node; -// UgtkProxyForm proxy; -// UgtkDownloadForm download; -// UgtkCategoryForm category; +/* // ------ UgtkNodeDialog members ------ + GtkDialog* self; + GtkBox* hbox; + GtkWidget* notebook; + GtkTreeView* node_view; + UgtkNodeTree* node_tree; + gulong handler_id[3]; + UgtkApp* app; + UgetNode* note; + UgData* node_data; + UgtkProxyForm proxy; + UgtkDownloadForm download; + UgtkCategoryForm category; + */ UgtkSelector selector; - UgtkSequencer sequencer; + UgtkSequence sequencer; }; UgtkBatchDialog* ugtk_batch_dialog_new (const char* title, @@ -83,6 +86,10 @@ #define ugtk_batch_dialog_set_category(bdialog, cnode) \ ugtk_node_dialog_set_category((UgtkNodeDialog*) bdialog, cnode) +// void ugtk_batch_dialog_apply_recent (UgtkNodeDialog* ndialog, UgtkApp* app); +#define ugtk_batch_dialog_apply_recent(bdialog, app) \ + ugtk_node_dialog_apply_recent((UgtkNodeDialog*) bdialog, app); + void ugtk_batch_dialog_disable_batch (UgtkBatchDialog* bdialog); void ugtk_batch_dialog_run (UgtkBatchDialog* bdialog); diff -Nru uget-2.0.2/ui-gtk/UgtkCategoryForm.c uget-2.2.2/ui-gtk/UgtkCategoryForm.c --- uget-2.0.2/ui-gtk/UgtkCategoryForm.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkCategoryForm.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -78,7 +78,7 @@ cform->spin_active = gtk_spin_button_new_with_range (1.0, 20.0, 1.0); gtk_entry_set_activates_default (GTK_ENTRY (cform->spin_active), TRUE); - gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); +// gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_active), 5); label = gtk_label_new_with_mnemonic (_("Active _downloads:")); gtk_label_set_mnemonic_widget (GTK_LABEL(label), cform->spin_active); g_object_set (label, "margin", 2, NULL); @@ -88,7 +88,7 @@ cform->spin_finished = gtk_spin_button_new_with_range (0.0, 99999.0, 1.0); gtk_entry_set_activates_default (GTK_ENTRY (cform->spin_finished), TRUE); - gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); +// gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_finished), 5); label = gtk_label_new_with_mnemonic (_("Capacity of Finished:")); gtk_label_set_mnemonic_widget (GTK_LABEL(label), cform->spin_finished); g_object_set (label, "margin", 2, NULL); @@ -98,7 +98,7 @@ cform->spin_recycled = gtk_spin_button_new_with_range (0.0, 99999.0, 1.0); gtk_entry_set_activates_default (GTK_ENTRY (cform->spin_recycled), TRUE); - gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); +// gtk_entry_set_width_chars (GTK_ENTRY(cform->spin_recycled), 5); label = gtk_label_new_with_mnemonic (_("Capacity of Recycled:")); gtk_label_set_mnemonic_widget (GTK_LABEL(label), cform->spin_recycled); g_object_set (label, "margin", 2, NULL); @@ -151,16 +151,18 @@ gtk_widget_show_all (GTK_WIDGET (top_grid)); } -void ugtk_category_form_get (UgtkCategoryForm* cform, UgetNode* cnode) +void ugtk_category_form_get (UgtkCategoryForm* cform, UgInfo* cnode_info) { UgetCategory* category; + UgetCommon* common; const gchar* text; - category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + category = ug_info_realloc(cnode_info, UgetCategoryInfo); + common = ug_info_realloc(cnode_info, UgetCommonInfo); if (gtk_widget_is_sensitive (cform->name_entry) == TRUE) { text = gtk_entry_get_text ((GtkEntry*) cform->name_entry); - ug_free (cnode->name); - cnode->name = (*text) ? ug_strdup (text) : NULL; + ug_free(common->name); + common->name = (*text) ? ug_strdup(text) : NULL; } category->active_limit = gtk_spin_button_get_value_as_int ( (GtkSpinButton*) cform->spin_active); @@ -187,15 +189,17 @@ &category->file_exts); } -void ugtk_category_form_set (UgtkCategoryForm* cform, UgetNode* cnode) +void ugtk_category_form_set (UgtkCategoryForm* cform, UgInfo* cnode_info) { + UgetCommon* common; UgetCategory* category; gchar* str; - category = ug_info_realloc (&cnode->info, UgetCategoryInfo); + category = ug_info_realloc(cnode_info, UgetCategoryInfo); + common = ug_info_get(cnode_info, UgetCommonInfo); if (gtk_widget_is_sensitive (cform->name_entry) == TRUE) { gtk_entry_set_text ((GtkEntry*) cform->name_entry, - (cnode->name) ? cnode->name : ""); + (common->name) ? common->name : ""); } gtk_spin_button_set_value ((GtkSpinButton*) cform->spin_active, (gdouble) category->active_limit); diff -Nru uget-2.0.2/ui-gtk/UgtkCategoryForm.h uget-2.2.2/ui-gtk/UgtkCategoryForm.h --- uget-2.0.2/ui-gtk/UgtkCategoryForm.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkCategoryForm.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -67,8 +67,8 @@ }; void ugtk_category_form_init (UgtkCategoryForm* cform); -void ugtk_category_form_get (UgtkCategoryForm* cform, UgetNode* cnode); -void ugtk_category_form_set (UgtkCategoryForm* cform, UgetNode* cnode); +void ugtk_category_form_get (UgtkCategoryForm* cform, UgInfo* cnode_info); +void ugtk_category_form_set (UgtkCategoryForm* cform, UgInfo* cnode_info); void ugtk_category_form_set_multiple (UgtkCategoryForm* cform, gboolean multiple_mode); diff -Nru uget-2.0.2/ui-gtk/UgtkConfig.c uget-2.2.2/ui-gtk/UgtkConfig.c --- uget-2.0.2/ui-gtk/UgtkConfig.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkConfig.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -42,11 +42,11 @@ #if defined _WIN32 || defined _WIN64 #include -const char* ugtk_get_data_dir (void) +const char* ugtk_get_install_dir (void) { - static gchar* data_dir = NULL; + static gchar* install_dir = NULL; - if (data_dir == NULL) { + if (install_dir == NULL) { gchar* path; gunichar2* path_wcs; HMODULE hmod; @@ -57,17 +57,57 @@ GetModuleFileNameW (hmod, path_wcs, MAX_PATH); path = g_utf16_to_utf8 (path_wcs, -1, NULL, NULL, NULL); g_free (path_wcs); - data_dir = g_path_get_dirname (path); + install_dir = g_path_get_dirname (path); g_free (path); } + return install_dir; +} + +gboolean ugtk_is_portable_mode (void) +{ + static int portable = -1; + char* local_path; + + if (portable == -1) { + local_path = g_build_filename (ugtk_get_install_dir(), "uget-portable-mode", NULL); + portable = g_file_test (local_path, G_FILE_TEST_EXISTS); + g_free (local_path); + } + return portable; +} + +const char* ugtk_get_data_dir (void) +{ + static gchar* data_dir = NULL; + + if (data_dir == NULL) + data_dir = g_build_filename (ugtk_get_install_dir(), "..", "share", NULL); return data_dir; } +const char* ugtk_get_config_dir (void) +{ + static const gchar* config_dir = NULL; + + if (config_dir == NULL) { + if (ugtk_is_portable_mode () == TRUE) + config_dir = g_build_filename (ugtk_get_install_dir(), "..", "config", NULL); + else + config_dir = g_get_user_config_dir (); + } + return config_dir; +} + #else const char* ugtk_get_data_dir (void) { - return DATADIR; + return UG_DATADIR; +} + +const char* ugtk_get_config_dir (void) +{ + return g_get_user_config_dir (); } #endif // _WIN32 || _WIN64 @@ -82,4 +122,3 @@ return locale_dir; } - diff -Nru uget-2.0.2/ui-gtk/UgtkConfig.h uget-2.2.2/ui-gtk/UgtkConfig.h --- uget-2.0.2/ui-gtk/UgtkConfig.h 2015-09-11 12:12:53.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkConfig.h 2019-05-19 16:50:01.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -52,33 +52,42 @@ #endif #ifndef PACKAGE_VERSION -#define PACKAGE_VERSION "2.0.2" +#define PACKAGE_VERSION "2.2.2" #endif // ---------------------------------------------------------------------------- // path const char* ugtk_get_data_dir (void); +const char* ugtk_get_config_dir (void); const char* ugtk_get_locale_dir (void); #if defined _WIN32 || defined _WIN64 -#ifndef DATADIR -#define DATADIR ugtk_get_data_dir() +const char* ugtk_get_install_dir (void); +gboolean ugtk_is_portable (void); + +// Please undef UG_DATADIR and LOCALEDIR if you doesn't want to use fixed path +// to load data and you use autoconf and automake to build uGet in MSYS2. +#undef UG_DATADIR +#undef LOCALEDIR + +#ifndef UG_DATADIR +#define UG_DATADIR ugtk_get_data_dir() #endif #ifndef LOCALEDIR -#define LOCALEDIR ugtk_get_locale_dir() +#define LOCALEDIR ugtk_get_locale_dir() #endif #else -#ifndef DATADIR -#define DATADIR "/usr/share" +#ifndef UG_DATADIR +#define UG_DATADIR "/usr/share" #endif #ifndef LOCALEDIR -#define LOCALEDIR DATADIR "/locale" +#define LOCALEDIR UG_DATADIR "/locale" #endif #endif // _WIN32 || _WIN64 diff -Nru uget-2.0.2/ui-gtk/UgtkConfirmDialog.c uget-2.2.2/ui-gtk/UgtkConfirmDialog.c --- uget-2.0.2/ui-gtk/UgtkConfirmDialog.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkConfirmDialog.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk/UgtkConfirmDialog.h uget-2.2.2/ui-gtk/UgtkConfirmDialog.h --- uget-2.0.2/ui-gtk/UgtkConfirmDialog.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkConfirmDialog.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk/UgtkDownloadForm.c uget-2.2.2/ui-gtk/UgtkDownloadForm.c --- uget-2.0.2/ui-gtk/UgtkDownloadForm.c 2015-06-07 23:27:56.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkDownloadForm.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -81,13 +81,13 @@ static void ugtk_download_form_init_page1 (UgtkDownloadForm* dform, UgtkProxyForm* proxy) { - GtkWidget* widget; - GtkGrid* top_grid; - GtkGrid* grid; - GtkWidget* frame; + GtkWidget* widget; + GtkGrid* top_grid; + GtkGrid* grid; + GtkWidget* frame; GtkBox* top_vbox; - GtkWidget* vbox; - GtkWidget* hbox; + GtkWidget* vbox; + GtkWidget* hbox; dform->page1 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); top_vbox = (GtkBox*) dform->page1; @@ -137,6 +137,8 @@ // File - entry widget = gtk_entry_new (); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); + gtk_entry_set_placeholder_text (GTK_ENTRY (widget), + _("Leave blank to use default filename ...")); g_object_set (widget, "margin", 1, "hexpand", TRUE, NULL); gtk_grid_attach (top_grid, widget, 1, 2, 2, 1); g_signal_connect (GTK_EDITABLE (widget), "changed", @@ -282,8 +284,8 @@ static void ugtk_download_form_init_page2 (UgtkDownloadForm* dform) { - GtkWidget* widget; - GtkGrid* grid; + GtkWidget* widget; + GtkGrid* grid; dform->page2 = gtk_grid_new (); grid = (GtkGrid*) dform->page2; @@ -410,7 +412,7 @@ // spin - Max upload speed widget = gtk_spin_button_new_with_range (0, 99999999, 1); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); - gtk_entry_set_width_chars (GTK_ENTRY (widget), 8); +// gtk_entry_set_width_chars (GTK_ENTRY (widget), 8); g_object_set (widget, "margin", 1, NULL); gtk_grid_attach (grid, widget, 2, 5, 1, 1); dform->spin_upload_speed = (GtkSpinButton*) widget; @@ -428,7 +430,7 @@ // spin - Max download speed widget = gtk_spin_button_new_with_range (0, 99999999, 1); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); - gtk_entry_set_width_chars (GTK_ENTRY (widget), 8); +// gtk_entry_set_width_chars (GTK_ENTRY (widget), 8); g_object_set (widget, "margin", 1, NULL); gtk_grid_attach (grid, widget, 2, 6, 1, 1); dform->spin_download_speed = (GtkSpinButton*) widget; @@ -440,75 +442,79 @@ // Retrieve timestamp widget = gtk_check_button_new_with_label (_("Retrieve timestamp")); + g_object_set (widget, "margin-top", 3, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 0, 7, 3, 1); dform->timestamp = (GtkToggleButton*) widget; } -void ugtk_download_form_get (UgtkDownloadForm* dform, UgetNode* node) +void ugtk_download_form_get (UgtkDownloadForm* dform, UgInfo* node_info) { - UgetCommon* common; - UgetHttp* http; UgUri uuri; const gchar* text; gint number; + union { + UgetRelation* relation; + UgetCommon* common; + UgetHttp* http; + } temp; // ------------------------------------------ // UgetCommon - common = ug_info_realloc (&node->info, UgetCommonInfo); + temp.common = ug_info_realloc(node_info, UgetCommonInfo); // folder text = gtk_entry_get_text ((GtkEntry*)dform->folder_entry); - ug_free (common->folder); - common->folder = (*text) ? ug_strdup (text) : NULL; - ug_str_remove_crlf (common->folder, common->folder); + ug_free (temp.common->folder); + temp.common->folder = (*text) ? ug_strdup (text) : NULL; + ug_str_remove_crlf (temp.common->folder, temp.common->folder); // user text = gtk_entry_get_text ((GtkEntry*)dform->username_entry); - ug_free (common->user); - common->user = (*text) ? ug_strdup (text) : NULL; - ug_str_remove_crlf (common->user, common->user); + ug_free (temp.common->user); + temp.common->user = (*text) ? ug_strdup (text) : NULL; + ug_str_remove_crlf (temp.common->user, temp.common->user); // password text = gtk_entry_get_text ((GtkEntry*)dform->password_entry); - ug_free (common->password); - common->password = (*text) ? ug_strdup (text) : NULL; - ug_str_remove_crlf (common->password, common->password); + ug_free (temp.common->password); + temp.common->password = (*text) ? ug_strdup (text) : NULL; + ug_str_remove_crlf (temp.common->password, temp.common->password); // retry_limit number = gtk_spin_button_get_value_as_int ((GtkSpinButton*) dform->spin_retry); - common->retry_limit = number; + temp.common->retry_limit = number; // retry_delay number = gtk_spin_button_get_value_as_int ((GtkSpinButton*) dform->spin_delay); - common->retry_delay = number; + temp.common->retry_delay = number; // max_upload_speed number = gtk_spin_button_get_value_as_int ((GtkSpinButton*) dform->spin_upload_speed) * 1024; - common->max_upload_speed = number; + temp.common->max_upload_speed = number; // max_download_speed number = gtk_spin_button_get_value_as_int ((GtkSpinButton*) dform->spin_download_speed) * 1024; - common->max_download_speed = number; + temp.common->max_download_speed = number; // max_connections number = gtk_spin_button_get_value_as_int ((GtkSpinButton*) dform->spin_connections); - common->max_connections = number; + temp.common->max_connections = number; // timestamp - common->timestamp = gtk_toggle_button_get_active (dform->timestamp); + temp.common->timestamp = gtk_toggle_button_get_active (dform->timestamp); // URI if (gtk_widget_is_sensitive (dform->uri_entry) == TRUE) { text = gtk_entry_get_text ((GtkEntry*)dform->uri_entry); - ug_free (common->uri); - common->uri = (*text) ? ug_strdup (text) : NULL; - ug_str_remove_crlf (common->uri, common->uri); - if (common->uri) { - ug_uri_init (&uuri, common->uri); + ug_free (temp.common->uri); + temp.common->uri = (*text) ? ug_strdup (text) : NULL; + ug_str_remove_crlf (temp.common->uri, temp.common->uri); + if (temp.common->uri) { + ug_uri_init (&uuri, temp.common->uri); // set user number = ug_uri_user (&uuri, &text); if (number > 0) { - ug_free (common->user); - common->user = ug_strndup (text, number); + ug_free (temp.common->user); + temp.common->user = ug_strndup (text, number); } // set password number = ug_uri_password (&uuri, &text); if (number > 0) { - ug_free (common->password); - common->password = ug_strndup (text, number); + ug_free (temp.common->password); + temp.common->password = ug_strndup (text, number); } // Remove user & password from URL if (uuri.authority != uuri.host) { @@ -520,59 +526,61 @@ // mirrors if (gtk_widget_is_sensitive (dform->mirrors_entry) == TRUE) { text = gtk_entry_get_text ((GtkEntry*)dform->mirrors_entry); - ug_free (common->mirrors); - common->mirrors = (*text) ? ug_strdup (text) : NULL; - ug_str_remove_crlf (common->mirrors, common->mirrors); + ug_free (temp.common->mirrors); + temp.common->mirrors = (*text) ? ug_strdup (text) : NULL; + ug_str_remove_crlf (temp.common->mirrors, temp.common->mirrors); } // file if (gtk_widget_is_sensitive (dform->file_entry) == TRUE) { text = gtk_entry_get_text ((GtkEntry*)dform->file_entry); - ug_free (common->file); - common->file = (*text) ? ug_strdup (text) : NULL; - ug_str_remove_crlf (common->file, common->file); + ug_free (temp.common->file); + temp.common->file = (*text) ? ug_strdup (text) : NULL; + ug_str_remove_crlf (temp.common->file, temp.common->file); } // ------------------------------------------ // UgetHttp - http = ug_info_realloc (&node->info, UgetHttpInfo); + temp.http = ug_info_realloc(node_info, UgetHttpInfo); // referrer text = gtk_entry_get_text ((GtkEntry*) dform->referrer_entry); - ug_free (http->referrer); - http->referrer = (*text) ? ug_strdup (text) : NULL; - ug_str_remove_crlf (http->referrer, http->referrer); + ug_free (temp.http->referrer); + temp.http->referrer = (*text) ? ug_strdup (text) : NULL; + ug_str_remove_crlf (temp.http->referrer, temp.http->referrer); // cookie_file text = gtk_entry_get_text ((GtkEntry*) dform->cookie_entry); - ug_free (http->cookie_file); - http->cookie_file = (*text) ? ug_strdup (text) : NULL; - ug_str_remove_crlf (http->cookie_file, http->cookie_file); + ug_free (temp.http->cookie_file); + temp.http->cookie_file = (*text) ? ug_strdup (text) : NULL; + ug_str_remove_crlf (temp.http->cookie_file, temp.http->cookie_file); // post_file text = gtk_entry_get_text ((GtkEntry*) dform->post_entry); - ug_free (http->post_file); - http->post_file = (*text) ? ug_strdup (text) : NULL; - ug_str_remove_crlf (http->post_file, http->post_file); + ug_free (temp.http->post_file); + temp.http->post_file = (*text) ? ug_strdup (text) : NULL; + ug_str_remove_crlf (temp.http->post_file, temp.http->post_file); // user_agent text = gtk_entry_get_text ((GtkEntry*) dform->agent_entry); - ug_free (http->user_agent); - http->user_agent = (*text) ? ug_strdup (text) : NULL; - ug_str_remove_crlf (http->user_agent, http->user_agent); + ug_free (temp.http->user_agent); + temp.http->user_agent = (*text) ? ug_strdup (text) : NULL; + ug_str_remove_crlf (temp.http->user_agent, temp.http->user_agent); // ------------------------------------------ - // UgetNode + // UgetRelation if (gtk_widget_get_sensitive (dform->radio_pause)) { + temp.relation = ug_info_realloc(node_info, UgetRelationInfo); if (gtk_toggle_button_get_active ((GtkToggleButton*) dform->radio_pause)) - node->state |= UGET_STATE_PAUSED; + temp.relation->group |= UGET_GROUP_PAUSED; else - node->state &= ~UGET_STATE_PAUSED; + temp.relation->group &= ~UGET_GROUP_PAUSED; } } -void ugtk_download_form_set (UgtkDownloadForm* dform, UgetNode* node, gboolean keep_changed) +void ugtk_download_form_set (UgtkDownloadForm* dform, UgInfo* node_info, gboolean keep_changed) { + UgetRelation* relation; UgetCommon* common; UgetHttp* http; - common = ug_info_realloc (&node->info, UgetCommonInfo); - http = ug_info_get (&node->info, UgetHttpInfo); + common = ug_info_realloc(node_info, UgetCommonInfo); + http = ug_info_get(node_info, UgetHttpInfo); // disable changed flags dform->changed.enable = FALSE; @@ -683,9 +691,10 @@ } // ------------------------------------------ - // UgetNode + // UgetRelation if (gtk_widget_get_sensitive (dform->radio_pause)) { - if (node->state & UGET_STATE_PAUSED) + relation = ug_info_realloc(node_info, UgetRelationInfo); + if (relation->group & UGET_GROUP_PAUSED) gtk_toggle_button_set_active ((GtkToggleButton*) dform->radio_pause, TRUE); else gtk_toggle_button_set_active ((GtkToggleButton*) dform->radio_runnable, TRUE); diff -Nru uget-2.0.2/ui-gtk/UgtkDownloadForm.h uget-2.2.2/ui-gtk/UgtkDownloadForm.h --- uget-2.0.2/ui-gtk/UgtkDownloadForm.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkDownloadForm.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -143,8 +143,8 @@ void ugtk_download_form_init (UgtkDownloadForm* dform, UgtkProxyForm* proxy, GtkWindow* parent); -void ugtk_download_form_get (UgtkDownloadForm* dform, UgetNode* node); -void ugtk_download_form_set (UgtkDownloadForm* dform, UgetNode* node, gboolean keep_changed); +void ugtk_download_form_get (UgtkDownloadForm* dform, UgInfo* info); +void ugtk_download_form_set (UgtkDownloadForm* dform, UgInfo* info, gboolean keep_changed); void ugtk_download_form_set_multiple (UgtkDownloadForm* dform, gboolean multiple_mode); void ugtk_download_form_set_folders (UgtkDownloadForm* dform, UgtkSetting* setting); diff -Nru uget-2.0.2/ui-gtk/UgtkMenubar.c uget-2.2.2/ui-gtk/UgtkMenubar.c --- uget-2.0.2/ui-gtk/UgtkMenubar.c 2015-03-25 09:15:43.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkMenubar.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -36,6 +36,7 @@ #if defined _WIN32 || defined _WIN64 #include +#include // ShellExecuteW() #endif #include @@ -132,16 +133,16 @@ app->trayicon.menu.emission = TRUE; } -static void on_apply_recently (GtkWidget* widget, UgtkApp* app) +static void on_apply_recent (GtkWidget* widget, UgtkApp* app) { gboolean active; active = gtk_check_menu_item_get_active ((GtkCheckMenuItem*) widget); - app->setting.ui.apply_recently = active; + app->setting.ui.apply_recent = active; app->trayicon.menu.emission = FALSE; gtk_check_menu_item_set_active ( - (GtkCheckMenuItem*) app->trayicon.menu.apply_recently, active); + (GtkCheckMenuItem*) app->trayicon.menu.apply_recent, active); app->trayicon.menu.emission = TRUE; } @@ -276,12 +277,12 @@ traveler = &app->traveler; visible = gtk_check_menu_item_get_active ((GtkCheckMenuItem*) widget); // which widget - if (widget == app->menubar.view.columns.completed) { + if (widget == app->menubar.view.columns.complete) { column_index = UGTK_NODE_COLUMN_COMPLETE; - setting->completed = visible; + setting->complete = visible; } else if (widget == app->menubar.view.columns.total) { - column_index = UGTK_NODE_COLUMN_SIZE; + column_index = UGTK_NODE_COLUMN_TOTAL; setting->total = visible; } else if (widget == app->menubar.view.columns.percent) { @@ -348,7 +349,7 @@ GtkTreeIter iter1, iter2; GtkTreePath *path1, *path2; - cnode = app->traveler.category.cursor.node; + cnode = app->traveler.category.cursor.node->base; if (cnode == NULL || cnode->prev == NULL) return; @@ -379,7 +380,7 @@ GtkTreeIter iter1, iter2; GtkTreePath *path1, *path2; - cnode = app->traveler.category.cursor.node; + cnode = app->traveler.category.cursor.node->base; if (cnode == NULL || cnode->next == NULL) return; @@ -444,8 +445,7 @@ node = app->traveler.download.cursor.node; if (node == NULL) return; - node = node->data; - common = ug_info_get (&node->info, UgetCommonInfo); + common = ug_info_get (node->info, UgetCommonInfo); if (common == NULL || common->folder == NULL || common->file == NULL) return; @@ -474,8 +474,7 @@ node = app->traveler.download.cursor.node; if (node == NULL) return; - node = node->data; - common = ug_info_get (&node->info, UgetCommonInfo); + common = ug_info_get (node->info, UgetCommonInfo); if (common == NULL || common->folder == NULL) return; @@ -497,7 +496,7 @@ } g_free (string); -#ifdef _WIN32 +#if defined _WIN32 || defined _WIN64 { UgUri uuri; gchar* path; @@ -554,12 +553,12 @@ GList* link; list = ugtk_traveler_get_selected (&app->traveler); - cursor = app->traveler.download.cursor.node->data; + cursor = app->traveler.download.cursor.node->base; for (link = list; link; link = link->next) { node = link->data; - node = node->data; + node = node->base; link->data = node; - uget_app_activate_download ((UgetApp*) app, node->data); + uget_app_activate_download ((UgetApp*) app, node->base); } if (app->traveler.state.cursor.pos == 0) { ugtk_traveler_set_cursor (&app->traveler, cursor); @@ -572,6 +571,11 @@ // ugtk_summary_show (&app->summary, app->traveler.download.cursor.node); } +static void on_set_download_runnable (GtkWidget* widget, UgtkApp* app) +{ + ugtk_app_queue_download (app, TRUE); +} + // UgtkMenubar.download.move_to static void on_move_download (GtkWidget* widget, UgtkApp* app) { @@ -591,7 +595,7 @@ } } - if (cnode == NULL || cnode == app->traveler.category.cursor.node) + if (cnode == NULL || cnode == app->traveler.category.cursor.node->base) return; // if current category is "All" @@ -601,8 +605,8 @@ list = ugtk_traveler_get_selected (&app->traveler); for (link = list; link; link = link->next) { dnode = link->data; - dnode = dnode->data; - uget_app_move_download_to ((UgetApp*) app, dnode, cnode); + dnode = dnode->base; + uget_app_move_download_to ((UgetApp*) app, dnode, cnode->base); } g_list_free (list); // refresh @@ -633,9 +637,9 @@ list = ugtk_traveler_get_selected (&app->traveler); for (link = list; link; link = link->next) { node = link->data; - node = node->data; - relation = ug_info_realloc (&node->info, UgetRelationInfo); - relation->task.priority = priority; + node = node->base; + relation = ug_info_realloc (node->info, UgetRelationInfo); + relation->priority = priority; } g_list_free (list); } @@ -734,8 +738,8 @@ G_CALLBACK (on_commandline_quiet), app); g_signal_connect (menubar->edit.skip_existing, "activate", G_CALLBACK (on_skip_existing), app); - g_signal_connect (menubar->edit.apply_recently, "activate", - G_CALLBACK (on_apply_recently), app); + g_signal_connect (menubar->edit.apply_recent, "activate", + G_CALLBACK (on_apply_recent), app); g_signal_connect (menubar->edit.completion.disable, "activate", G_CALLBACK (on_config_completion), app); @@ -778,7 +782,7 @@ g_signal_connect (menubar->view.summary_items.message, "toggled", G_CALLBACK (on_change_visible_summary), app); // download columns - g_signal_connect (menubar->view.columns.completed, "toggled", + g_signal_connect (menubar->view.columns.complete, "toggled", G_CALLBACK (on_change_visible_column), app); g_signal_connect (menubar->view.columns.total, "toggled", G_CALLBACK (on_change_visible_column), app); @@ -836,8 +840,8 @@ // change status g_signal_connect (menubar->download.force_start, "activate", G_CALLBACK (on_set_download_force_start), app); - g_signal_connect_swapped (menubar->download.runnable, "activate", - G_CALLBACK (ugtk_app_queue_download), app); + g_signal_connect (menubar->download.runnable, "activate", + G_CALLBACK (on_set_download_runnable), app); g_signal_connect_swapped (menubar->download.pause, "activate", G_CALLBACK (ugtk_app_pause_download), app); // move @@ -883,6 +887,7 @@ void ugtk_menubar_sync_category (UgtkMenubar* menubar, UgtkApp* app, gboolean reset) { UgetNode* cnode; + UgetCommon* common; GtkWidget* menu_item; GtkWidget* image; GPtrArray* array; @@ -901,7 +906,11 @@ // add new item for (cnode = app->real.children; cnode; cnode = cnode->next) { // create menu item - menu_item = gtk_image_menu_item_new_with_label (cnode->name); + common = ug_info_get(cnode->info, UgetCommonInfo); + if (common && common->name) + menu_item = gtk_image_menu_item_new_with_label (common->name); + else + menu_item = gtk_image_menu_item_new_with_label (""); image = gtk_image_new_from_stock (GTK_STOCK_DND_MULTIPLE, GTK_ICON_SIZE_MENU); gtk_image_menu_item_set_image ((GtkImageMenuItem*) menu_item, @@ -921,7 +930,7 @@ for (index = 0; index < array->len; index += 2) { menu_item = g_ptr_array_index (array, index); cnode = g_ptr_array_index (array, index +1); - if (cnode == app->traveler.category.cursor.node) + if (cnode == app->traveler.category.cursor.node->base) gtk_widget_set_sensitive (menu_item, FALSE); else gtk_widget_set_sensitive (menu_item, TRUE); diff -Nru uget-2.0.2/ui-gtk/UgtkMenubar.h uget-2.2.2/ui-gtk/UgtkMenubar.h --- uget-2.0.2/ui-gtk/UgtkMenubar.h 2015-03-25 09:15:42.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkMenubar.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -84,7 +84,7 @@ GtkWidget* clipboard_quiet; GtkWidget* commandline_quiet; GtkWidget* skip_existing; - GtkWidget* apply_recently; + GtkWidget* apply_recent; GtkWidget* settings; // Completion Auto-Actions @@ -122,7 +122,7 @@ { GtkWidget* self; // GtkMenu - GtkWidget* completed; + GtkWidget* complete; GtkWidget* total; GtkWidget* percent; GtkWidget* elapsed; // consuming time diff -Nru uget-2.0.2/ui-gtk/UgtkMenubar-ui.c uget-2.2.2/ui-gtk/UgtkMenubar-ui.c --- uget-2.0.2/ui-gtk/UgtkMenubar-ui.c 2015-09-10 02:26:03.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkMenubar-ui.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -228,9 +228,9 @@ gtk_menu_shell_append ((GtkMenuShell*)menu, menu_item); menubar->edit.skip_existing = menu_item; - menu_item = gtk_check_menu_item_new_with_mnemonic (_("Apply recently download settings")); + menu_item = gtk_check_menu_item_new_with_mnemonic (_("Apply recent download settings")); gtk_menu_shell_append ((GtkMenuShell*)menu, menu_item); - menubar->edit.apply_recently = menu_item; + menubar->edit.apply_recent = menu_item; gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_separator_menu_item_new()); @@ -377,11 +377,11 @@ gtk_menu_item_set_submenu ((GtkMenuItem*) menu_item, submenu); gtk_menu_shell_append ((GtkMenuShell*)menu, menu_item); menubar->view.columns.self = submenu; - // Download Columns - Completed + // Download Columns - Complete menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Complete")); gtk_menu_shell_append ((GtkMenuShell*) submenu, menu_item); gtk_check_menu_item_set_active ((GtkCheckMenuItem*) menu_item, TRUE); - menubar->view.columns.completed = menu_item; + menubar->view.columns.complete = menu_item; // Download Columns - Total menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Size")); gtk_menu_shell_append ((GtkMenuShell*) submenu, menu_item); diff -Nru uget-2.0.2/ui-gtk/UgtkNodeDialog.c uget-2.2.2/ui-gtk/UgtkNodeDialog.c --- uget-2.0.2/ui-gtk/UgtkNodeDialog.c 2015-03-25 09:15:42.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkNodeDialog.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -79,9 +79,20 @@ { GtkWindow* window; int sensitive; + int width, height, temp; ugtk_node_dialog_init_ui (ndialog, has_category_form); ndialog->app = app; + + // decide width + if (app->setting.window.category) { + gtk_widget_get_size_request (ndialog->notebook, &width, &height); + temp = gtk_paned_get_position (ndialog->app->window.hpaned); + temp = temp * 5 / 3; // (temp * 1.666) + if (width < temp) + gtk_widget_set_size_request (ndialog->notebook, temp, height); + } + window = (GtkWindow*) ndialog->self; gtk_window_set_transient_for (window, app->window.self); gtk_window_set_destroy_with_parent (window, TRUE); @@ -142,12 +153,13 @@ { if (node) { ndialog->node = node; - uget_node_ref (node); + ndialog->node_info = node->info; + ug_info_ref(node->info); } switch (mode) { case UGTK_NODE_DIALOG_NEW_DOWNLOAD: - ugtk_node_dialog_apply_last (ndialog, ndialog->app); + ugtk_node_dialog_apply_recent (ndialog, ndialog->app); g_signal_connect (ndialog->self, "response", G_CALLBACK (on_response_new_download), ndialog); break; @@ -221,30 +233,32 @@ return TRUE; } -void ugtk_node_dialog_store_last (UgtkNodeDialog* ndialog, UgtkApp* app) +void ugtk_node_dialog_store_recent (UgtkNodeDialog* ndialog, UgtkApp* app) { GtkTreePath* path; int nth; - app->last.saved = TRUE; + app->recent.saved = TRUE; gtk_tree_view_get_cursor (ndialog->node_view, &path, NULL); - nth = *gtk_tree_path_get_indices (path); - app->last.category_index = nth; - gtk_tree_path_free (path); - ugtk_download_form_get (&ndialog->download, app->last.infonode); + if (path != NULL) { + nth = *gtk_tree_path_get_indices (path); + app->recent.category_index = nth; + gtk_tree_path_free (path); + } + ugtk_download_form_get(&ndialog->download, app->recent.info); } -void ugtk_node_dialog_apply_last (UgtkNodeDialog* ndialog, UgtkApp* app) +void ugtk_node_dialog_apply_recent (UgtkNodeDialog* ndialog, UgtkApp* app) { GtkTreePath* path; - if (app->last.saved && app->setting.ui.apply_recently) { - path = gtk_tree_path_new_from_indices (app->last.category_index, -1); + if (app->recent.saved && app->setting.ui.apply_recent) { + path = gtk_tree_path_new_from_indices (app->recent.category_index, -1); gtk_tree_view_set_cursor (ndialog->node_view, path, NULL, FALSE); gtk_tree_path_free (path); ndialog->download.changed.uri = TRUE; - ugtk_download_form_set (&ndialog->download, - app->last.infonode, TRUE); + ugtk_download_form_set(&ndialog->download, + app->recent.info, TRUE); } } @@ -297,20 +311,20 @@ return nth; } -void ugtk_node_dialog_set (UgtkNodeDialog* ndialog, UgetNode* node) +void ugtk_node_dialog_set (UgtkNodeDialog* ndialog, UgInfo* node_info) { - ugtk_proxy_form_set (&ndialog->proxy, node, FALSE); - ugtk_download_form_set (&ndialog->download, node, FALSE); + ugtk_proxy_form_set(&ndialog->proxy, node_info, FALSE); + ugtk_download_form_set(&ndialog->download, node_info, FALSE); if (ndialog->category.self) - ugtk_category_form_set (&ndialog->category, node); + ugtk_category_form_set(&ndialog->category, node_info); } -void ugtk_node_dialog_get (UgtkNodeDialog* ndialog, UgetNode* node) +void ugtk_node_dialog_get (UgtkNodeDialog* ndialog, UgInfo* node_info) { - ugtk_proxy_form_get (&ndialog->proxy, node); - ugtk_download_form_get (&ndialog->download, node); + ugtk_proxy_form_get(&ndialog->proxy, node_info); + ugtk_download_form_get(&ndialog->download, node_info); if (ndialog->category.self) - ugtk_category_form_get (&ndialog->category, node); + ugtk_category_form_get(&ndialog->category, node_info); } // ---------------------------------------------------------------------------- @@ -387,6 +401,9 @@ ndialog->node_view = (GtkTreeView*) ugtk_node_view_new_for_category (); model = GTK_TREE_MODEL (ndialog->node_tree); gtk_tree_view_set_model (ndialog->node_view, model); + ugtk_node_view_use_large_icon (ndialog->node_view, + ndialog->app->setting.ui.large_icon, + ndialog->app->setting.download_column.width.state); scrolled = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_size_request (scrolled, width, 200); @@ -423,8 +440,8 @@ gtk_tree_model_get_iter (model, &iter, path); gtk_tree_path_free (path); node = iter.user_data; - ugtk_proxy_form_set (&ndialog->proxy, node, TRUE); - ugtk_download_form_set (&ndialog->download, node, TRUE); + ugtk_proxy_form_set(&ndialog->proxy, node->info, TRUE); + ugtk_download_form_set(&ndialog->download, node->info, TRUE); } static void after_uri_entry_changed (GtkEditable *editable, @@ -441,14 +458,14 @@ if (response_id == GTK_RESPONSE_OK) { cnode = uget_node_new (NULL); - ugtk_node_dialog_get (ndialog, cnode); + ugtk_node_dialog_get(ndialog, cnode->info); uget_app_add_category ((UgetApp*) ndialog->app, cnode, TRUE); ugtk_app_decide_category_sensitive (ndialog->app); ugtk_download_form_get_folders (&ndialog->download, &ndialog->app->setting); } - if (ndialog->node) - uget_node_unref (ndialog->node); + if (ndialog->node_info) + ug_info_unref(ndialog->node_info); ugtk_node_dialog_free (ndialog); } @@ -460,9 +477,9 @@ const char* uri; if (response_id == GTK_RESPONSE_OK) { - ugtk_node_dialog_store_last (ndialog, ndialog->app); + ugtk_node_dialog_store_recent (ndialog, ndialog->app); dnode = uget_node_new (NULL); - ugtk_node_dialog_get (ndialog, dnode); + ugtk_node_dialog_get(ndialog, dnode->info); ugtk_node_dialog_get_category (ndialog, &cnode); uri = gtk_entry_get_text ((GtkEntry*) ndialog->download.uri_entry); if (ugtk_node_dialog_confirm_existing (ndialog, uri)) { @@ -471,8 +488,8 @@ &ndialog->app->setting); } } - if (ndialog->node) - uget_node_unref (ndialog->node); + if (ndialog->node_info) + ug_info_unref(ndialog->node_info); ugtk_node_dialog_free (ndialog); } @@ -481,11 +498,13 @@ { UgtkApp* app; - if (response_id == GTK_RESPONSE_OK && ndialog->node) { + if (response_id == GTK_RESPONSE_OK && ndialog->node_info) { app = ndialog->app; - ugtk_node_dialog_get (ndialog, ndialog->node); - ugtk_app_category_changed (app, ndialog->node); - uget_node_unref (ndialog->node); + ugtk_node_dialog_get(ndialog, ndialog->node_info); + // if ndialog->node_info->ref_count == 1, ndialog->node is freed by App + if (ndialog->node_info->ref_count > 1) + ugtk_app_category_changed(app, ndialog->node); + ug_info_unref(ndialog->node_info); ugtk_download_form_get_folders (&ndialog->download, &app->setting); } @@ -497,15 +516,18 @@ { UgtkApp* app; - if (response_id == GTK_RESPONSE_OK && ndialog->node) { + if (response_id == GTK_RESPONSE_OK && ndialog->node_info) { app = ndialog->app; - uget_uri_hash_remove_download (app->uri_hash, ndialog->node); - ugtk_node_dialog_get (ndialog, ndialog->node); - uget_uri_hash_add_download (app->uri_hash, ndialog->node); - ugtk_traveler_reserve_selection (&app->traveler); - uget_app_reset_download_name ((UgetApp*) app, ndialog->node); - ugtk_traveler_restore_selection (&app->traveler); - uget_node_unref (ndialog->node); + uget_uri_hash_remove_download(app->uri_hash, ndialog->node_info); + ugtk_node_dialog_get(ndialog, ndialog->node_info); + uget_uri_hash_add_download(app->uri_hash, ndialog->node_info); + // if ndialog->node_info->ref_count == 1, ndialog->node is freed by App + if (ndialog->node_info->ref_count > 1) { + ugtk_traveler_reserve_selection (&app->traveler); + uget_app_reset_download_name((UgetApp*) app, ndialog->node); + ugtk_traveler_restore_selection (&app->traveler); + } + ug_info_unref(ndialog->node_info); ugtk_download_form_get_folders (&ndialog->download, &app->setting); } diff -Nru uget-2.0.2/ui-gtk/UgtkNodeDialog.h uget-2.2.2/ui-gtk/UgtkNodeDialog.h --- uget-2.0.2/ui-gtk/UgtkNodeDialog.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkNodeDialog.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -66,6 +66,7 @@ gulong handler_id[3]; \ UgtkApp* app; \ UgetNode* node; \ + UgInfo* node_info; \ UgtkProxyForm proxy; \ UgtkDownloadForm download; \ UgtkCategoryForm category @@ -73,17 +74,20 @@ struct UgtkNodeDialog { UGTK_NODE_DIALOG_MEMBERS; -// GtkDialog* self; -// GtkBox* hbox; -// GtkWidget* notebook; -// GtkTreeView* node_view; -// UgtkNodeTree* node_tree; -// gulong handler_id[3]; -// UgtkApp* app; -// UgetNode* node; -// UgtkProxyForm proxy; -// UgtkDownloadForm download; -// UgtkCategoryForm category; +/* // ------ UgtkNodeDialog members ------ + GtkDialog* self; + GtkBox* hbox; + GtkWidget* notebook; + GtkTreeView* node_view; + UgtkNodeTree* node_tree; + gulong handler_id[3]; + UgtkApp* app; + UgetNode* note; + UgInfo* node_info; + UgtkProxyForm proxy; + UgtkDownloadForm download; + UgtkCategoryForm category; + */ // handler_id[0] : "row-changed" // handler_id[1] : "row-deleted" @@ -102,15 +106,15 @@ void ugtk_node_dialog_set_category (UgtkNodeDialog* ndialog, UgetNode* cnode); // set/get node's info to/from UgtkNodeDialog -void ugtk_node_dialog_get (UgtkNodeDialog* ndialog, UgetNode* node); -void ugtk_node_dialog_set (UgtkNodeDialog* ndialog, UgetNode* node); +void ugtk_node_dialog_get (UgtkNodeDialog* ndialog, UgInfo* node_info); +void ugtk_node_dialog_set (UgtkNodeDialog* ndialog, UgInfo* node_info); void ugtk_node_dialog_run (UgtkNodeDialog* ndialog, UgtkNodeDialogMode mode, UgetNode* node4edit); -void ugtk_node_dialog_store_last (UgtkNodeDialog* ndialog, UgtkApp* app); -void ugtk_node_dialog_apply_last (UgtkNodeDialog* ndialog, UgtkApp* app); +void ugtk_node_dialog_store_recent (UgtkNodeDialog* ndialog, UgtkApp* app); +void ugtk_node_dialog_apply_recent (UgtkNodeDialog* ndialog, UgtkApp* app); void ugtk_node_dialog_monitor_uri (UgtkNodeDialog* ndialog); gboolean ugtk_node_dialog_confirm_existing (UgtkNodeDialog* ndialog, const char* uri); diff -Nru uget-2.0.2/ui-gtk/UgtkNodeList.c uget-2.2.2/ui-gtk/UgtkNodeList.c --- uget-2.0.2/ui-gtk/UgtkNodeList.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkNodeList.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk/UgtkNodeList.h uget-2.2.2/ui-gtk/UgtkNodeList.h --- uget-2.0.2/ui-gtk/UgtkNodeList.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkNodeList.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk/UgtkNodeTree.c uget-2.2.2/ui-gtk/UgtkNodeTree.c --- uget-2.0.2/ui-gtk/UgtkNodeTree.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkNodeTree.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk/UgtkNodeTree.h uget-2.2.2/ui-gtk/UgtkNodeTree.h --- uget-2.0.2/ui-gtk/UgtkNodeTree.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkNodeTree.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk/UgtkNodeView.c uget-2.2.2/ui-gtk/UgtkNodeView.c --- uget-2.0.2/ui-gtk/UgtkNodeView.c 2015-04-30 23:37:53.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkNodeView.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -49,26 +49,26 @@ #if GTK_MAJOR_VERSION >= 3 && GTK_MINOR_VERSION >= 10 static const UgPair state_icon_pair[] = { - {(void*)(intptr_t) UGET_STATE_FINISHED, "go-last"}, - {(void*)(intptr_t) UGET_STATE_RECYCLED, "list-remove"}, - {(void*)(intptr_t) UGET_STATE_PAUSED, "media-playback-pause"}, - {(void*)(intptr_t) UGET_STATE_ERROR, "dialog-error"}, - {(void*)(intptr_t) UGET_STATE_UPLOADING, "go-up"}, - {(void*)(intptr_t) UGET_STATE_COMPLETED, "gtk-yes"}, - {(void*)(intptr_t) UGET_STATE_QUEUING, "text-x-generic"}, - {(void*)(intptr_t) UGET_STATE_ACTIVE, "media-playback-start"}, + {(void*)(intptr_t) UGET_GROUP_FINISHED, "go-last"}, + {(void*)(intptr_t) UGET_GROUP_RECYCLED, "list-remove"}, + {(void*)(intptr_t) UGET_GROUP_PAUSED, "media-playback-pause"}, + {(void*)(intptr_t) UGET_GROUP_ERROR, "dialog-error"}, + {(void*)(intptr_t) UGET_GROUP_UPLOADING, "go-up"}, + {(void*)(intptr_t) UGET_GROUP_COMPLETED, "gtk-yes"}, + {(void*)(intptr_t) UGET_GROUP_QUEUING, "text-x-generic"}, + {(void*)(intptr_t) UGET_GROUP_ACTIVE, "media-playback-start"}, }; #else static const UgPair state_icon_pair[] = { - {(void*)(intptr_t) UGET_STATE_FINISHED, GTK_STOCK_GOTO_LAST}, - {(void*)(intptr_t) UGET_STATE_RECYCLED, GTK_STOCK_DELETE}, - {(void*)(intptr_t) UGET_STATE_PAUSED, GTK_STOCK_MEDIA_PAUSE}, - {(void*)(intptr_t) UGET_STATE_ERROR, GTK_STOCK_DIALOG_ERROR}, - {(void*)(intptr_t) UGET_STATE_UPLOADING, GTK_STOCK_GO_UP}, - {(void*)(intptr_t) UGET_STATE_COMPLETED, GTK_STOCK_YES}, - {(void*)(intptr_t) UGET_STATE_QUEUING, GTK_STOCK_FILE}, - {(void*)(intptr_t) UGET_STATE_ACTIVE, GTK_STOCK_MEDIA_PLAY}, + {(void*)(intptr_t) UGET_GROUP_FINISHED, GTK_STOCK_GOTO_LAST}, + {(void*)(intptr_t) UGET_GROUP_RECYCLED, GTK_STOCK_DELETE}, + {(void*)(intptr_t) UGET_GROUP_PAUSED, GTK_STOCK_MEDIA_PAUSE}, + {(void*)(intptr_t) UGET_GROUP_ERROR, GTK_STOCK_DIALOG_ERROR}, + {(void*)(intptr_t) UGET_GROUP_UPLOADING, GTK_STOCK_GO_UP}, + {(void*)(intptr_t) UGET_GROUP_COMPLETED, GTK_STOCK_YES}, + {(void*)(intptr_t) UGET_GROUP_QUEUING, GTK_STOCK_FILE}, + {(void*)(intptr_t) UGET_GROUP_ACTIVE, GTK_STOCK_MEDIA_PLAY}, }; #endif static const int state_icon_pair_len = sizeof (state_icon_pair) / sizeof (UgPair); @@ -80,6 +80,7 @@ gpointer data) { UgetNode* node; + UgetRelation* relation; const gchar* icon_name; int key, index; @@ -89,7 +90,7 @@ if (node == NULL) return; - node = node->data; + node = node->base; #if GTK_MAJOR_VERSION >= 3 && GTK_MINOR_VERSION >= 10 icon_name = "text-x-generic"; #else @@ -98,7 +99,8 @@ // select icon_name for (index = 0; index < state_icon_pair_len; index++) { key = (intptr_t)state_icon_pair[index].key; - if ((key & node->state) == key) { + relation = ug_info_realloc(node->info, UgetRelationInfo); + if ((key & relation->group) == key) { icon_name = state_icon_pair[index].data; break; } @@ -120,7 +122,7 @@ gpointer data) { // UgtkNodeTree* utree; - UgetCommon* common; + UgetCommon* common; UgetNode* node; char* name; @@ -139,13 +141,14 @@ // } // } - node = node->data; + node = node->base; name = _("unnamed"); + common = ug_info_get(node->info, UgetCommonInfo); - if (node->name) - name = node->name; + if (common && common->name) + name = common->name; else { - common = ug_info_get (&node->info, UgetCommonInfo); + common = ug_info_get (node->info, UgetCommonInfo); if (common) { if (common->file) name = common->file; @@ -171,9 +174,9 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - progress = ug_info_get (&node->info, UgetProgressInfo); + progress = ug_info_get (node->info, UgetProgressInfo); if (progress && progress->total) string = ug_str_from_int_unit (progress->complete, NULL); else @@ -198,9 +201,9 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - progress = ug_info_get (&node->info, UgetProgressInfo); + progress = ug_info_get (node->info, UgetProgressInfo); if (progress && progress->total) string = ug_str_from_int_unit (progress->total, NULL); else @@ -225,9 +228,9 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - progress = ug_info_get (&node->info, UgetProgressInfo); + progress = ug_info_get (node->info, UgetProgressInfo); if (progress && progress->total) { string = ug_strdup_printf ("%d%c", progress->percent, '%'); g_object_set (cell, "visible", TRUE, NULL); @@ -242,11 +245,12 @@ } } -static void col_set_consume_time (GtkTreeViewColumn *tree_column, - GtkCellRenderer *cell, - GtkTreeModel *model, - GtkTreeIter *iter, - gpointer data) +// consume time +static void col_set_elapsed (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell, + GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data) { UgetNode* node; UgetProgress* progress; @@ -257,11 +261,11 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - progress = ug_info_get (&node->info, UgetProgressInfo); + progress = ug_info_get (node->info, UgetProgressInfo); if (progress) - string = ug_str_from_seconds ((int) progress->consume_time, TRUE); + string = ug_str_from_seconds ((int) progress->elapsed, TRUE); else string = NULL; @@ -269,11 +273,12 @@ ug_free (string); } -static void col_set_remain_time (GtkTreeViewColumn *tree_column, - GtkCellRenderer *cell, - GtkTreeModel *model, - GtkTreeIter *iter, - gpointer data) +// remain time +static void col_set_left (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell, + GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data) { UgetNode* node; UgetProgress* progress; @@ -285,13 +290,13 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - progress = ug_info_get (&node->info, UgetProgressInfo); - relation = ug_info_get (&node->info, UgetRelationInfo); + progress = ug_info_get (node->info, UgetProgressInfo); + relation = ug_info_get (node->info, UgetRelationInfo); - if (progress && relation && relation->task.plugin) - string = ug_str_from_seconds ((int) progress->remain_time, TRUE); + if (progress && relation && relation->task) + string = ug_str_from_seconds ((int) progress->left, TRUE); else string = NULL; @@ -315,12 +320,12 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - progress = ug_info_get (&node->info, UgetProgressInfo); - relation = ug_info_get (&node->info, UgetRelationInfo); + progress = ug_info_get (node->info, UgetProgressInfo); + relation = ug_info_get (node->info, UgetRelationInfo); - if (progress && relation && relation->task.plugin) + if (progress && relation && relation->task) string = ug_str_from_int_unit (progress->download_speed, "/s"); else string = NULL; @@ -345,12 +350,12 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - progress = ug_info_get (&node->info, UgetProgressInfo); - relation = ug_info_get (&node->info, UgetRelationInfo); + progress = ug_info_get (node->info, UgetProgressInfo); + relation = ug_info_get (node->info, UgetRelationInfo); - if (progress && relation && relation->task.plugin && progress->upload_speed) + if (progress && relation && relation->task && progress->upload_speed) string = ug_str_from_int_unit (progress->upload_speed, "/s"); else string = NULL; @@ -374,9 +379,9 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - progress = ug_info_get (&node->info, UgetProgressInfo); + progress = ug_info_get (node->info, UgetProgressInfo); if (progress && progress->uploaded) string = ug_str_from_int_unit (progress->uploaded, NULL); else @@ -401,9 +406,9 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - progress = ug_info_get (&node->info, UgetProgressInfo); + progress = ug_info_get (node->info, UgetProgressInfo); if (progress && progress->ratio) string = ug_strdup_printf ("%.2f", progress->ratio); else @@ -428,9 +433,9 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - common = ug_info_get (&node->info, UgetCommonInfo); + common = ug_info_get (node->info, UgetCommonInfo); if (common == NULL || common->retry_count == 0) string = NULL; else if (common->retry_count < 100) @@ -450,6 +455,7 @@ GtkTreeIter *iter, gpointer data) { + UgetCommon* common; UgetNode* node; char* string; @@ -458,10 +464,15 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - if (node->parent) - string = node->parent->name; + if (node->parent) { + common = ug_info_get(node->parent->info, UgetCommonInfo); + if (common) + string = common->name; + else + string = NULL; + } else string = NULL; @@ -483,9 +494,9 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - common = ug_info_get (&node->info, UgetCommonInfo); + common = ug_info_get (node->info, UgetCommonInfo); if (common) string = common->uri; else @@ -509,9 +520,9 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - ulog = ug_info_get (&node->info, UgetLogInfo); + ulog = ug_info_get (node->info, UgetLogInfo); if (ulog && ulog->added_time) string = ug_str_from_time (ulog->added_time, FALSE); else @@ -536,9 +547,9 @@ // avoid crash in GTK3 if (node == NULL) return; - node = node->data; + node = node->base; - ulog = ug_info_get (&node->info, UgetLogInfo); + ulog = ug_info_get (node->info, UgetLogInfo); if (ulog && ulog->completed_time) string = ug_str_from_time (ulog->completed_time, FALSE); else @@ -580,6 +591,7 @@ GtkTreeIter *iter, gpointer data) { + UgetCommon* common; UgetNode* node; char* name; @@ -599,9 +611,10 @@ // } // } - node = node->data; - if (node->name) - name = node->name; + node = node->base; + common = ug_info_get(node->info, UgetCommonInfo); + if (common && common->name) + name = common->name; else name = _("unnamed"); @@ -618,12 +631,12 @@ node = iter->user_data; #if GTK_MAJOR_VERSION >= 3 && GTK_MINOR_VERSION >= 10 - if (node->state & UGET_STATE_PAUSED) + if (uget_node_get_group(node) & UGET_GROUP_PAUSED) g_object_set (cell, "icon-name", "media-playback-pause", NULL); else g_object_set (cell, "icon-name", "gtk-dnd-multiple", NULL); #else - if (node->state & UGET_STATE_PAUSED) + if (uget_node_get_group(node) & UGET_GROUP_PAUSED) g_object_set (cell, "stock-id", GTK_STOCK_MEDIA_PAUSE, NULL); else g_object_set (cell, "stock-id", GTK_STOCK_DND_MULTIPLE, NULL); @@ -635,14 +648,14 @@ static const UgPair state_name_pair[] = { - {(void*)(intptr_t) UGET_STATE_ERROR, N_("Error")}, - {(void*)(intptr_t) UGET_STATE_PAUSED, N_("Paused")}, - {(void*)(intptr_t) UGET_STATE_UPLOADING, N_("Uploading")}, - {(void*)(intptr_t) UGET_STATE_COMPLETED, N_("Completed")}, - {(void*)(intptr_t) UGET_STATE_FINISHED, N_("Finished")}, - {(void*)(intptr_t) UGET_STATE_RECYCLED, N_("Recycled")}, - {(void*)(intptr_t) UGET_STATE_QUEUING, N_("Queuing")}, - {(void*)(intptr_t) UGET_STATE_ACTIVE, N_("Active")}, + {(void*)(intptr_t) UGET_GROUP_ERROR, N_("Error")}, + {(void*)(intptr_t) UGET_GROUP_PAUSED, N_("Paused")}, + {(void*)(intptr_t) UGET_GROUP_UPLOADING, N_("Uploading")}, + {(void*)(intptr_t) UGET_GROUP_COMPLETED, N_("Completed")}, + {(void*)(intptr_t) UGET_GROUP_FINISHED, N_("Finished")}, + {(void*)(intptr_t) UGET_GROUP_RECYCLED, N_("Recycled")}, + {(void*)(intptr_t) UGET_GROUP_QUEUING, N_("Queuing")}, + {(void*)(intptr_t) UGET_GROUP_ACTIVE, N_("Active")}, }; static const int state_name_pair_len = sizeof (state_name_pair) / sizeof (UgPair); @@ -656,6 +669,7 @@ char* name; int key; int index; + int group; // gtk_tree_model_get (model, iter, 0, &node, -1); node = iter->user_data; @@ -665,9 +679,10 @@ name = _("All Status"); if (node->real) { + group = uget_node_get_group(node); for (index = 0; index < state_name_pair_len; index++) { key = (intptr_t)state_name_pair[index].key; - if ((key & node->state) == key) { + if ((key & group) == key) { name = gettext (state_name_pair[index].data); break; } @@ -685,6 +700,7 @@ UgetNode* node; const gchar* icon_name; int key, index; + int group; // gtk_tree_model_get (model, iter, 0, &node, -1); node = iter->user_data; @@ -699,9 +715,10 @@ icon_name = GTK_STOCK_DND_MULTIPLE; #endif if (node->real) { + group = uget_node_get_group(node); for (index = 0; index < state_icon_pair_len; index++) { key = (intptr_t)state_icon_pair[index].key; - if ((key & node->state) == key) { + if ((key & group) == key) { icon_name = state_icon_pair[index].data; break; } @@ -727,7 +744,7 @@ view = (GtkTreeView*)gtk_tree_view_new (); - // column state icon + // UGTK_NODE_COLUMN_STATE // GtkCellRendererPixbuf "stock-size" = 1, 16x16 column = gtk_tree_view_column_new (); // gtk_tree_view_column_set_title (column, ""); @@ -742,7 +759,7 @@ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_append_column (view, column); - // column name + // UGTK_NODE_COLUMN_NAME column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, name_title); renderer = gtk_cell_renderer_text_new (); @@ -772,12 +789,16 @@ selection = gtk_tree_view_get_selection (view); gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE); - // column name + // UGTK_NODE_COLUMN_STATE + column = gtk_tree_view_get_column (view, UGTK_NODE_COLUMN_STATE); + gtk_tree_view_column_set_resizable (column, TRUE); + + // UGTK_NODE_COLUMN_NAME column = gtk_tree_view_get_column (view, UGTK_NODE_COLUMN_NAME); gtk_tree_view_column_set_min_width (column, 180); gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); - // column completed + // UGTK_NODE_COLUMN_COMPLETE column = gtk_tree_view_column_new (); renderer = gtk_cell_renderer_text_new (); g_object_set (renderer, "xalign", 1.0, NULL); @@ -793,7 +814,7 @@ gtk_tree_view_column_set_alignment (column, 1.0); gtk_tree_view_append_column (view, column); - // column total + // UGTK_NODE_COLUMN_TOTAL column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Size")); gtk_tree_view_column_pack_start (column, renderer, TRUE); @@ -807,7 +828,7 @@ gtk_tree_view_column_set_alignment (column, 1.0); gtk_tree_view_append_column (view, column); - // column percent + // UGTK_NODE_COLUMN_PERCENT column = gtk_tree_view_column_new (); renderer_progress = gtk_cell_renderer_progress_new (); gtk_tree_view_column_set_title (column, _("%")); @@ -822,13 +843,13 @@ gtk_tree_view_column_set_alignment (column, 1.0); gtk_tree_view_append_column (view, column); - // column "Elapsed" for consuming time + // UGTK_NODE_COLUMN_ELAPSED for consuming time column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Elapsed")); gtk_tree_view_column_pack_start (column, renderer, TRUE); gtk_tree_view_column_set_cell_data_func (column, renderer, - col_set_consume_time, + col_set_elapsed, NULL, NULL); gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_column_set_min_width (column, 65); @@ -836,13 +857,13 @@ gtk_tree_view_column_set_alignment (column, 1.0); gtk_tree_view_append_column (view, column); - // column "Left" for remaining time + // UGTK_NODE_COLUMN_LEFT for remaining time column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Left")); gtk_tree_view_column_pack_start (column, renderer, TRUE); gtk_tree_view_column_set_cell_data_func (column, renderer, - col_set_remain_time, + col_set_left, NULL, NULL); gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_column_set_min_width (column, 65); @@ -850,7 +871,7 @@ gtk_tree_view_column_set_alignment (column, 1.0); gtk_tree_view_append_column (view, column); - // columns speed + // UGTK_NODE_COLUMN_SPEED column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Speed")); gtk_tree_view_column_pack_start (column, renderer, TRUE); @@ -864,7 +885,7 @@ gtk_tree_view_column_set_alignment (column, 1.0); gtk_tree_view_append_column (view, column); - // columns upload speed + // UGTK_NODE_COLUMN_UPLOAD_SPEED column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Up Speed")); gtk_tree_view_column_pack_start (column, renderer, TRUE); @@ -878,7 +899,7 @@ gtk_tree_view_column_set_alignment (column, 1.0); gtk_tree_view_append_column (view, column); - // columns uploaded + // UGTK_NODE_COLUMN_UPLOADED column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Uploaded")); gtk_tree_view_column_pack_start (column, renderer, TRUE); @@ -892,7 +913,7 @@ gtk_tree_view_column_set_alignment (column, 1.0); gtk_tree_view_append_column (view, column); - // columns ratio + // UGTK_NODE_COLUMN_RATIO column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Ratio")); gtk_tree_view_column_pack_start (column, renderer, TRUE); @@ -906,7 +927,7 @@ gtk_tree_view_column_set_alignment (column, 1.0); gtk_tree_view_append_column (view, column); - // column retries + // UGTK_NODE_COLUMN_RETRY column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Retry")); gtk_tree_view_column_pack_start (column, renderer, TRUE); @@ -920,7 +941,7 @@ gtk_tree_view_column_set_alignment (column, 1.0); gtk_tree_view_append_column (view, column); - // column category + // UGTK_NODE_COLUMN_CATEGORY renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Category")); @@ -934,7 +955,7 @@ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_append_column (view, column); - // column url + // UGTK_NODE_COLUMN_URI // renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("URI")); @@ -948,7 +969,7 @@ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_append_column (view, column); - // column addon_on + // UGTK_NODE_COLUMN_ADDED_ON // renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Added On")); @@ -962,7 +983,7 @@ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_append_column (view, column); - // column completed_on + // UGTK_NODE_COLUMN_COMPLETED_ON // renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Completed On")); @@ -986,7 +1007,7 @@ GtkCellRenderer* renderer; GtkTreeViewColumn* column; - // column Quantity = number of tasks + // UGTK_NODE_COLUMN_QUANTITY : number of tasks column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Quantity")); // gtk_tree_view_column_set_title (column, _("N")); @@ -1014,7 +1035,7 @@ col_set_name_c, _("Category")); gtk_tree_view_set_headers_visible (view, FALSE); - // column Category (Name) + // UGTK_NODE_COLUMN_NAME // column = gtk_tree_view_get_column (view, 0); // gtk_tree_view_column_set_min_width (column, -1); // gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); @@ -1042,3 +1063,26 @@ return (GtkWidget*) view; } +void ugtk_node_view_use_large_icon (GtkTreeView* view, gboolean is_large, int fixed_width) +{ + GtkTreeViewColumn* column; + GtkIconSize icon_size; + int icon_width; + GList* list; + + if (is_large) { + icon_size = GTK_ICON_SIZE_LARGE_TOOLBAR; + icon_width = 24 + 2; // icon size + 2 pixel + } + else { + icon_size = GTK_ICON_SIZE_SMALL_TOOLBAR; + icon_width = 16 + 2; // icon size + 2 pixel + } + + column = gtk_tree_view_get_column (view, UGTK_NODE_COLUMN_STATE); + gtk_tree_view_column_set_min_width (column, icon_width); + gtk_tree_view_column_set_fixed_width (column, fixed_width); + list = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT(column)); + g_object_set (list->data, "stock-size", icon_size, NULL); + g_list_free (list); +} diff -Nru uget-2.0.2/ui-gtk/UgtkNodeView.h uget-2.2.2/ui-gtk/UgtkNodeView.h --- uget-2.0.2/ui-gtk/UgtkNodeView.h 2015-08-18 01:17:31.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkNodeView.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -55,8 +55,8 @@ UGTK_NODE_COLUMN_QUANTITY = 2, // Download only - UGTK_NODE_COLUMN_COMPLETE = 2, - UGTK_NODE_COLUMN_SIZE, + UGTK_NODE_COLUMN_COMPLETE = 2, // complete size + UGTK_NODE_COLUMN_TOTAL, // total size UGTK_NODE_COLUMN_PERCENT, UGTK_NODE_COLUMN_ELAPSED, // consuming time UGTK_NODE_COLUMN_LEFT, // remaining time @@ -78,6 +78,8 @@ GtkWidget* ugtk_node_view_new_for_category (void); GtkWidget* ugtk_node_view_new_for_state (void); +void ugtk_node_view_use_large_icon (GtkTreeView* view, gboolean is_large, int fixed_width); + #ifdef __cplusplus } #endif diff -Nru uget-2.0.2/ui-gtk/UgtkProxyForm.c uget-2.2.2/ui-gtk/UgtkProxyForm.c --- uget-2.0.2/ui-gtk/UgtkProxyForm.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkProxyForm.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -181,14 +181,14 @@ gtk_widget_show_all (pform->std); } -void ugtk_proxy_form_get (UgtkProxyForm* pform, UgetNode* node) +void ugtk_proxy_form_get (UgtkProxyForm* pform, UgInfo* node_info) { UgetProxy* proxy; gint index; const gchar* text; index = gtk_combo_box_get_active ((GtkComboBox*) pform->type); - proxy = ug_info_realloc (&node->info, UgetProxyInfo); + proxy = ug_info_realloc (node_info, UgetProxyInfo); proxy->type = index; // user text = gtk_entry_get_text ((GtkEntry*)pform->user); @@ -206,18 +206,26 @@ proxy->port = gtk_spin_button_get_value_as_int ((GtkSpinButton*) pform->port); #ifdef HAVE_LIBPWMD - ug_str_set (&proxy->pwmd.socket, gtk_entry_get_text ((GtkEntry*)pform->pwmd.socket), -1); - ug_str_set (&proxy->pwmd.socket_args, gtk_entry_get_text ((GtkEntry*)pform->pwmd.socket_args), -1); - ug_str_set (&proxy->pwmd.file, gtk_entry_get_text ((GtkEntry*)pform->pwmd.file), -1); - ug_str_set (&proxy->pwmd.element, gtk_entry_get_text ((GtkEntry*)pform->pwmd.element), -1); + ug_free (proxy->pwmd.socket); + text = gtk_entry_get_text ((GtkEntry*)pform->pwmd.socket); + proxy->pwmd.socket = (*text) ? ug_strdup (text) : NULL; + ug_free (proxy->pwmd.socket_args); + text = gtk_entry_get_text ((GtkEntry*)pform->pwmd.socket_args); + proxy->pwmd.socket_args = (*text) ? ug_strdup (text) : NULL; + ug_free (proxy->pwmd.file); + text = gtk_entry_get_text ((GtkEntry*)pform->pwmd.file); + proxy->pwmd.file = (*text) ? ug_strdup (text) : NULL; + ug_free (proxy->pwmd.element); + text = gtk_entry_get_text ((GtkEntry*)pform->pwmd.element); + proxy->pwmd.element = (*text) ? ug_strdup (text) : NULL; #endif // HAVE_LIBPWMD } -void ugtk_proxy_form_set (UgtkProxyForm* pform, UgetNode* node, gboolean keep_changed) +void ugtk_proxy_form_set (UgtkProxyForm* pform, UgInfo* node_info, gboolean keep_changed) { UgetProxy* proxy; - proxy = ug_info_get (&node->info, UgetProxyInfo); + proxy = ug_info_get (node_info, UgetProxyInfo); // if no proxy data if (proxy == NULL) { pform->changed.enable = FALSE; // disable changed flags diff -Nru uget-2.0.2/ui-gtk/UgtkProxyForm.h uget-2.2.2/ui-gtk/UgtkProxyForm.h --- uget-2.0.2/ui-gtk/UgtkProxyForm.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkProxyForm.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -104,8 +104,8 @@ }; void ugtk_proxy_form_init (UgtkProxyForm* pform); -void ugtk_proxy_form_get (UgtkProxyForm* pform, UgetNode* node); -void ugtk_proxy_form_set (UgtkProxyForm* pform, UgetNode* node, gboolean keep_changed); +void ugtk_proxy_form_get (UgtkProxyForm* pform, UgInfo* info); +void ugtk_proxy_form_set (UgtkProxyForm* pform, UgInfo* info, gboolean keep_changed); #ifdef __cplusplus diff -Nru uget-2.0.2/ui-gtk/UgtkScheduleForm.c uget-2.2.2/ui-gtk/UgtkScheduleForm.c --- uget-2.0.2/ui-gtk/UgtkScheduleForm.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkScheduleForm.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -39,15 +39,6 @@ #include -#define GRID_FONT_SIZE 10 - -#define GRID_WIDTH 14 -#define GRID_HEIGHT 16 -#define GRID_WIDTH_LINE (GRID_WIDTH + 1) -#define GRID_HEIGHT_LINE (GRID_HEIGHT + 1) -#define GRID_WIDTH_ALL (GRID_WIDTH_LINE * 24 + 1) -#define GRID_HEIGHT_ALL (GRID_HEIGHT_LINE * 7 + 1) - #define COLOR_DISABLE_R 0.5 #define COLOR_DISABLE_G 0.5 #define COLOR_DISABLE_B 0.5 @@ -72,9 +63,20 @@ N_("Sun"), }; -// grid one -static GtkWidget* ug_grid_one_new (const gdouble* rgb_array); -static gboolean ug_grid_one_draw (GtkWidget* widget, cairo_t* cr, const gdouble* rgb_array); +// UgtkGrid +static struct { + int width; + int height; + int width_and_line; + int height_and_line; + int width_all; + int height_all; +} UgtkGrid; + +static void ugtk_grid_global_init (int width, int height); +static GtkWidget* ugtk_grid_new (const gdouble* rgb_array); +static gboolean ugtk_grid_draw (GtkWidget* widget, cairo_t* cr, const gdouble* rgb_array); + // signal handler static void on_enable_toggled (GtkToggleButton* togglebutton, struct UgtkScheduleForm* sform); static gboolean on_draw_callback (GtkWidget* widget, cairo_t* cr, struct UgtkScheduleForm* sform); @@ -85,10 +87,13 @@ void ugtk_schedule_form_init (struct UgtkScheduleForm* sform) { + PangoContext* context; + PangoLayout* layout; GtkWidget* widget; GtkGrid* caption; GtkBox* hbox; GtkBox* vbox; + int text_width, text_height; sform->self = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); vbox = (GtkBox*) sform->self; @@ -103,12 +108,20 @@ G_CALLBACK (on_enable_toggled), sform); sform->enable = widget; + // initialize UgtkGrid + context = gtk_widget_get_pango_context (widget); + layout = pango_layout_new (context); + pango_layout_set_text (layout, gettext (week_days[0]), -1); + pango_layout_get_pixel_size (layout, &text_width, &text_height); + g_object_unref (layout); + ugtk_grid_global_init (text_height, text_height + 2); + // drawing area widget = gtk_drawing_area_new (); gtk_box_pack_start (vbox, widget, FALSE, FALSE, 2); // gtk_widget_set_has_window (widget, FALSE); gtk_widget_set_size_request (widget, - GRID_WIDTH_ALL + 32, GRID_HEIGHT_ALL); + UgtkGrid.width_all + text_width + 32, UgtkGrid.height_all); gtk_widget_add_events (widget, GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); g_signal_connect (widget, "draw", @@ -133,8 +146,8 @@ gtk_grid_attach (caption, widget, 0, 0, 5, 1); sform->time_tips = GTK_LABEL (widget); - // Turn off - gridone - widget = ug_grid_one_new (colors[UGTK_SCHEDULE_TURN_OFF]); + // Turn off + widget = ugtk_grid_new (colors[UGTK_SCHEDULE_TURN_OFF]); g_object_set (widget, "margin", 3, NULL); gtk_grid_attach (caption, widget, 0, 1, 1, 1); // Turn off - label @@ -148,8 +161,8 @@ g_object_set (widget, "margin", 2, NULL); gtk_grid_attach (caption, widget, 2, 1, 2, 1); - // Normal - gridone - widget = ug_grid_one_new (colors[UGTK_SCHEDULE_NORMAL]); + // Normal + widget = ugtk_grid_new (colors[UGTK_SCHEDULE_NORMAL]); g_object_set (widget, "margin", 3, NULL); gtk_grid_attach (caption, widget, 0, 2, 1, 1); // Normal - label @@ -163,8 +176,8 @@ g_object_set (widget, "margin", 2, NULL); gtk_grid_attach (caption, widget, 2, 2, 2, 1); /* - // Speed limit - gridone - widget = ug_grid_one_new (colors[UGTK_SCHEDULE_LIMITED_SPEED]); + // Speed limit + widget = ugtk_grid_new (colors[UGTK_SCHEDULE_LIMITED_SPEED]); g_object_set (widget, "margin", 3, NULL); gtk_grid_attach (caption, widget, 0, 3, 1, 1); // Speed limit - label @@ -246,13 +259,14 @@ // week days // ox = x offset - for (ox = 0, cy = 0.5, y = 0; y < 7; y++, cy+=GRID_HEIGHT_LINE) { + for (ox = 0, cy = 0.5, y = 0; y < 7; y++, cy+=UgtkGrid.height_and_line) { cairo_move_to (cr, 1, cy); pango_layout_set_text (layout, gettext (week_days[y]), -1); pango_cairo_update_layout (cr, layout); pango_cairo_show_layout (cr, layout); - pango_layout_get_size (layout, &x, NULL); - x /= PANGO_SCALE; +// pango_layout_get_size (layout, &x, NULL); +// x /= PANGO_SCALE; + pango_layout_get_pixel_size (layout, &x, NULL); if (x + 4 > ox) ox = x + 4; } @@ -261,14 +275,14 @@ if (sform->drawing_offset == 0) sform->drawing_offset = ox; // draw grid columns - for (cx = 0.5; cx <= GRID_WIDTH_ALL; cx += GRID_WIDTH_LINE) { + for (cx = 0.5; cx <= UgtkGrid.width_all; cx += UgtkGrid.width_and_line) { cairo_move_to (cr, ox + cx, 0 + 0.5); - cairo_line_to (cr, ox + cx, GRID_HEIGHT_ALL - 1.0 + 0.5); + cairo_line_to (cr, ox + cx, UgtkGrid.height_all - 1.0 + 0.5); } // draw grid rows - for (cy = 0.5; cy <= GRID_HEIGHT_ALL; cy += GRID_HEIGHT_LINE) { + for (cy = 0.5; cy <= UgtkGrid.height_all; cy += UgtkGrid.height_and_line) { cairo_move_to (cr, ox + 0.5, cy); - cairo_line_to (cr, ox + GRID_WIDTH_ALL - 1.0 + 0.5, cy); + cairo_line_to (cr, ox + UgtkGrid.width_all - 1.0 + 0.5, cy); } cairo_stroke (cr); @@ -279,8 +293,8 @@ COLOR_DISABLE_G, COLOR_DISABLE_B); } - for (cy = 1.5, y = 0; y < 7; y++, cy+=GRID_HEIGHT_LINE) { - for (cx = 1.5+ox, x = 0; x < 24; x++, cx+=GRID_WIDTH_LINE) { + for (cy = 1.5, y = 0; y < 7; y++, cy+=UgtkGrid.height_and_line) { + for (cx = 1.5+ox, x = 0; x < 24; x++, cx+=UgtkGrid.width_and_line) { if (sensitive) { cairo_set_source_rgb (cr, colors [sform->state[y][x]][0], @@ -290,8 +304,8 @@ cairo_rectangle (cr, cx, cy, - GRID_WIDTH - 0.5, - GRID_HEIGHT - 0.5); + UgtkGrid.width - 0.5, + UgtkGrid.height - 0.5); cairo_fill (cr); } } @@ -305,8 +319,8 @@ cairo_t* cr; UgtkScheduleState state; - x = (event->x - sform->drawing_offset) / GRID_WIDTH_LINE; - y = event->y / GRID_HEIGHT_LINE; + x = (event->x - sform->drawing_offset) / UgtkGrid.width_and_line; + y = event->y / UgtkGrid.height_and_line; if (x < 0 || y < 0 || x >= 24 || y >= 7) return FALSE; @@ -325,10 +339,10 @@ colors [state][1], colors [state][2]); cairo_rectangle (cr, - (gdouble)x * GRID_WIDTH_LINE + 1.0 + 0.5 + sform->drawing_offset, - (gdouble)y * GRID_HEIGHT_LINE + 1.0 + 0.5, - GRID_WIDTH - 0.5, - GRID_HEIGHT - 0.5); + (gdouble)x * UgtkGrid.width_and_line + 1.0 + 0.5 + sform->drawing_offset, + (gdouble)y * UgtkGrid.height_and_line + 1.0 + 0.5, + UgtkGrid.width - 0.5, + UgtkGrid.height - 0.5); cairo_fill (cr); cairo_destroy (cr); @@ -347,8 +361,8 @@ gdkwin = gtk_widget_get_window (widget); gdk_window_get_device_position (gdkwin, event->device, &x, &y, &mod); x -= sform->drawing_offset; - x /= GRID_WIDTH_LINE; - y /= GRID_HEIGHT_LINE; + x /= UgtkGrid.width_and_line; + y /= UgtkGrid.height_and_line; if (x < 0 || y < 0 || x >= 24 || y >= 7) { // clear time_tips gtk_label_set_text (sform->time_tips, ""); @@ -369,17 +383,17 @@ cr = gdk_cairo_create (gdkwin); cairo_rectangle (cr, sform->drawing_offset, 0, - GRID_WIDTH_ALL, GRID_HEIGHT_ALL); + UgtkGrid.width_all, UgtkGrid.height_all); cairo_clip (cr); cairo_set_source_rgb (cr, colors [state][0], colors [state][1], colors [state][2]); cairo_rectangle (cr, - (gdouble)x * GRID_WIDTH_LINE + 1.0 + 0.5 + sform->drawing_offset, - (gdouble)y * GRID_HEIGHT_LINE + 1.0 + 0.5, - GRID_WIDTH - 0.5, - GRID_HEIGHT - 0.5); + (gdouble)x * UgtkGrid.width_and_line + 1.0 + 0.5 + sform->drawing_offset, + (gdouble)y * UgtkGrid.height_and_line + 1.0 + 0.5, + UgtkGrid.width - 0.5, + UgtkGrid.height - 0.5); cairo_fill (cr); cairo_destroy (cr); @@ -394,23 +408,33 @@ // ---------------------------------------------------------------------------- -// grid one +// UgtkGrid // -static GtkWidget* ug_grid_one_new (const gdouble* rgb_array) +static void ugtk_grid_global_init (int width, int height) +{ + UgtkGrid.width = width; + UgtkGrid.height = height; + UgtkGrid.width_and_line = UgtkGrid.width + 1; + UgtkGrid.height_and_line = UgtkGrid.height + 1; + UgtkGrid.width_all = UgtkGrid.width_and_line * 24 + 1; + UgtkGrid.height_all = UgtkGrid.height_and_line * 7 + 1; +} + +static GtkWidget* ugtk_grid_new (const gdouble* rgb_array) { GtkWidget* widget; widget = gtk_drawing_area_new (); - gtk_widget_set_size_request (widget, GRID_WIDTH + 2, GRID_HEIGHT + 2); + gtk_widget_set_size_request (widget, UgtkGrid.width + 2, UgtkGrid.height + 2); gtk_widget_add_events (widget, GDK_POINTER_MOTION_MASK); g_signal_connect (widget, "draw", - G_CALLBACK (ug_grid_one_draw), (gpointer) rgb_array); + G_CALLBACK (ugtk_grid_draw), (gpointer) rgb_array); return widget; } -static gboolean ug_grid_one_draw (GtkWidget* widget, cairo_t* cr, const gdouble* rgb_array) +static gboolean ugtk_grid_draw (GtkWidget* widget, cairo_t* cr, const gdouble* rgb_array) { GtkAllocation allocation; gdouble x, y, width, height; diff -Nru uget-2.0.2/ui-gtk/UgtkScheduleForm.h uget-2.2.2/ui-gtk/UgtkScheduleForm.h --- uget-2.0.2/ui-gtk/UgtkScheduleForm.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkScheduleForm.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk/UgtkSelector.c uget-2.2.2/ui-gtk/UgtkSelector.c --- uget-2.0.2/ui-gtk/UgtkSelector.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSelector.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk/UgtkSelector.h uget-2.2.2/ui-gtk/UgtkSelector.h --- uget-2.0.2/ui-gtk/UgtkSelector.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSelector.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk/UgtkSequence.c uget-2.2.2/ui-gtk/UgtkSequence.c --- uget-2.0.2/ui-gtk/UgtkSequence.c 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSequence.c 2019-05-19 16:49:07.000000000 +0000 @@ -0,0 +1,439 @@ +/* + * + * Copyright (C) 2005-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#include +#include + +#include + +// ---------------------------------------------------------------------------- +// UgtkSeqRange +static void on_type_changed (GtkComboBox* widget, UgtkSeqRange* range); +static void on_show (GtkWidget *widget, UgtkSeqRange* range); + +void ugtk_seq_range_init (UgtkSeqRange* range, UgtkSequence* seq, GtkSizeGroup* size_group) +{ + GtkBox* box; + GtkAdjustment* adjustment; + + range->self = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3); + box = (GtkBox*) range->self; + g_signal_connect (range->self, "show", + G_CALLBACK (on_show), range); + // Type + range->type = gtk_combo_box_text_new (); + gtk_combo_box_text_insert_text (GTK_COMBO_BOX_TEXT (range->type), + UGTK_SEQ_TYPE_NONE, _("None")); + gtk_combo_box_text_insert_text (GTK_COMBO_BOX_TEXT (range->type), + UGTK_SEQ_TYPE_NUMBER, _("Num")); + gtk_combo_box_text_insert_text (GTK_COMBO_BOX_TEXT (range->type), + UGTK_SEQ_TYPE_CHARACTER, _("Char")); + gtk_box_pack_start (box, range->type, FALSE, FALSE, 2); + g_signal_connect (range->type, "changed", + G_CALLBACK (on_type_changed), range); + g_signal_connect_swapped (range->type, "changed", + G_CALLBACK (ugtk_sequence_show_preview), seq); + + // SpinButton - From + adjustment = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, + 99999.0, 1.0, 5.0, 0.0); + range->spin_from = gtk_spin_button_new (adjustment, 1.0, 0); + gtk_size_group_add_widget (size_group, range->spin_from); + gtk_box_pack_start (box, range->spin_from, FALSE, FALSE, 2); + g_signal_connect_swapped (range->spin_from, "value-changed", + G_CALLBACK (ugtk_sequence_show_preview), seq); + // Entry - From + range->entry_from = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (range->entry_from), "a"); + gtk_entry_set_max_length (GTK_ENTRY (range->entry_from), 1); +// gtk_entry_set_width_chars (GTK_ENTRY (range->entry_from), 2); + gtk_size_group_add_widget (size_group, range->entry_from); + gtk_box_pack_start (box, range->entry_from, FALSE, FALSE, 2); + g_signal_connect_swapped (GTK_EDITABLE (range->entry_from), "changed", + G_CALLBACK (ugtk_sequence_show_preview), seq); + + // Label - To + range->label_to = gtk_label_new (_("To:")); +// range->label_to = gtk_label_new_with_mnemonic (_("To:")); + gtk_box_pack_start (box, range->label_to, FALSE, FALSE, 2); +// gtk_label_set_mnemonic_widget (GTK_LABEL (widget), range->spin_to); + + // SpinButton - To + adjustment = (GtkAdjustment *) gtk_adjustment_new (10.0, 1.0, + 99999.0, 1.0, 5.0, 0.0); + range->spin_to = gtk_spin_button_new (adjustment, 1.0, 0); + gtk_box_pack_start (box, range->spin_to, FALSE, FALSE, 2); + gtk_size_group_add_widget (size_group, range->spin_to); + g_signal_connect_swapped (range->spin_to, "value-changed", + G_CALLBACK (ugtk_sequence_show_preview), seq); + + // label - digits + range->label_digits = gtk_label_new (_("digits:")); +// range->label_digits = gtk_label_new_with_mnemonic (_("digits:")); + gtk_box_pack_start (box, range->label_digits, FALSE, FALSE, 2); +// gtk_label_set_mnemonic_widget (GTK_LABEL (range->label_digits), range->spin_digits); + + // SpinButton - digits + adjustment = (GtkAdjustment *) gtk_adjustment_new (2.0, 1.0, + 20.0, 1.0, 5.0, 0.0); + range->spin_digits = gtk_spin_button_new (adjustment, 1.0, 0); + gtk_box_pack_start (box, range->spin_digits, FALSE, FALSE, 2); + g_signal_connect_swapped (range->spin_digits, "value-changed", + G_CALLBACK (ugtk_sequence_show_preview), seq); + + // Entry - To + range->entry_to = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (range->entry_to), "z"); + gtk_entry_set_max_length (GTK_ENTRY (range->entry_to), 1); +// gtk_entry_set_width_chars (GTK_ENTRY (range->entry_to), 2); + gtk_size_group_add_widget (size_group, range->entry_to); + gtk_box_pack_start (box, range->entry_to, FALSE, FALSE, 2); + g_signal_connect_swapped (GTK_EDITABLE (range->entry_to), "changed", + G_CALLBACK(ugtk_sequence_show_preview), seq); + + // label - case-sensitive + range->label_case = gtk_label_new (_("case-sensitive")); + gtk_box_pack_start (box, range->label_case, FALSE, FALSE, 2); + +// gtk_widget_show_all (range->self); +} + +void ugtk_seq_range_set_type (UgtkSeqRange* range, enum UgtkSeqType type) +{ + gtk_combo_box_set_active ((GtkComboBox*) range->type, type); +} + +enum UgtkSeqType ugtk_seq_range_get_type (UgtkSeqRange* range) +{ + return gtk_combo_box_get_active ((GtkComboBox*) range->type); +} + +// signal handler +static void on_show (GtkWidget *widget, UgtkSeqRange* range) +{ + ugtk_seq_range_set_type (range, UGTK_SEQ_TYPE_NONE); +} + +// signal handler +static void on_type_changed (GtkComboBox* widget, UgtkSeqRange* range) +{ + gint type; + + type = gtk_combo_box_get_active (widget); + switch (type) { + case UGTK_SEQ_TYPE_NONE: + gtk_widget_set_sensitive (range->label_to, FALSE); + gtk_widget_set_sensitive (range->spin_from, FALSE); + gtk_widget_set_sensitive (range->spin_to, FALSE); + gtk_widget_set_sensitive (range->spin_digits, FALSE); + gtk_widget_set_sensitive (range->label_digits, FALSE); + gtk_widget_set_sensitive (range->entry_from, FALSE); + gtk_widget_set_sensitive (range->entry_to, FALSE); + gtk_widget_set_sensitive (range->label_case, FALSE); + if (gtk_widget_get_visible (range->spin_from) == TRUE) { + gtk_widget_set_visible (range->entry_from, FALSE); + gtk_widget_set_visible (range->entry_to, FALSE); + gtk_widget_set_visible (range->label_case, FALSE); + } + break; + + case UGTK_SEQ_TYPE_NUMBER: + gtk_widget_set_sensitive (range->spin_from, TRUE); + gtk_widget_set_sensitive (range->label_to, TRUE); + gtk_widget_set_sensitive (range->spin_to, TRUE); + gtk_widget_set_sensitive (range->spin_digits, TRUE); + gtk_widget_set_sensitive (range->label_digits, TRUE); + gtk_widget_set_visible (range->spin_from, TRUE); + gtk_widget_set_visible (range->spin_to, TRUE); + gtk_widget_set_visible (range->spin_digits, TRUE); + gtk_widget_set_visible (range->label_digits, TRUE); + gtk_widget_set_visible (range->entry_from, FALSE); + gtk_widget_set_visible (range->entry_to, FALSE); + gtk_widget_set_visible (range->label_case, FALSE); + break; + + case UGTK_SEQ_TYPE_CHARACTER: + gtk_widget_set_sensitive (range->entry_from, TRUE); + gtk_widget_set_sensitive (range->label_to, TRUE); + gtk_widget_set_sensitive (range->entry_to, TRUE); + gtk_widget_set_sensitive (range->label_case, TRUE); + gtk_widget_set_visible (range->spin_from, FALSE); + gtk_widget_set_visible (range->spin_to, FALSE); + gtk_widget_set_visible (range->spin_digits, FALSE); + gtk_widget_set_visible (range->label_digits, FALSE); + gtk_widget_set_visible (range->entry_from, TRUE); + gtk_widget_set_visible (range->entry_to, TRUE); + gtk_widget_set_visible (range->label_case, TRUE); + break; + } +} + +// --------------------------------------------------------------------------- +// UgtkSequence + +// static functions +static void ugtk_sequence_add_range (UgtkSequence* seq, UgtkSeqRange* range); +static void ugtk_sequence_preview_init (struct UgtkSequencePreview* preview); +static void ugtk_sequence_preview_show (struct UgtkSequencePreview* preview, const gchar* message); +// signal handlers +static void on_realize (GtkWidget *widget, UgtkSequence* seq); +static void on_destroy (GtkWidget *widget, UgtkSequence* seq); + +void ugtk_sequence_init (UgtkSequence* seq) +{ + GtkGrid* grid; + GtkWidget* label; + GtkWidget* entry; + GtkWidget* widget; + GtkSizeGroup* size_group; + + // UgetSequence: call uget_sequence_final() in on_destroy() + uget_sequence_init (&seq->sequence); + + // top widget + seq->self = gtk_grid_new (); + grid = (GtkGrid*) seq->self; + gtk_grid_set_row_homogeneous (grid, FALSE); + g_signal_connect (seq->self, "realize", G_CALLBACK (on_realize), seq); + g_signal_connect (seq->self, "destroy", G_CALLBACK (on_destroy), seq); + + // URI entry + entry = gtk_entry_new (); + label = gtk_label_new_with_mnemonic (_("_URI:")); + seq->entry = GTK_ENTRY (entry); + gtk_label_set_mnemonic_widget(GTK_LABEL (label), entry); + gtk_entry_set_activates_default (seq->entry, TRUE); + g_object_set (label, "margin", 3, NULL); + g_object_set (entry, "margin", 3, "hexpand", TRUE, NULL); + gtk_grid_attach (grid, label, 0, 0, 1, 1); + gtk_grid_attach (grid, entry, 1, 0, 1, 1); + g_signal_connect_swapped (GTK_EDITABLE (entry), "changed", + G_CALLBACK (ugtk_sequence_show_preview), seq); + // e.g. + label = gtk_label_new (_("e.g.")); + g_object_set (label, "margin", 3, NULL); + gtk_grid_attach (grid, label, 0, 1, 1, 1); + label = gtk_label_new ("http://for.example/path/pre*.jpg"); + g_object_set (label, "margin", 3, NULL); + gtk_grid_attach (grid, label, 1, 1, 1, 1); + // separator + widget = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); + gtk_grid_attach (grid, widget, 0, 2, 2, 1); + + // ------------------------------------------------ + // UgtkSeqRange + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + ugtk_seq_range_init (&seq->range[0], seq, size_group); + ugtk_seq_range_init (&seq->range[1], seq, size_group); + ugtk_seq_range_init (&seq->range[2], seq, size_group); + g_object_set (seq->range[0].self, "margin", 3, NULL); + g_object_set (seq->range[1].self, "margin", 3, NULL); + g_object_set (seq->range[2].self, "margin", 3, NULL); + gtk_grid_attach (grid, seq->range[0].self, 0, 3, 2, 1); + gtk_grid_attach (grid, seq->range[1].self, 0, 4, 2, 1); + gtk_grid_attach (grid, seq->range[2].self, 0, 5, 2, 1); + g_object_unref (size_group); + + // ------------------------------------------------ + // preview + ugtk_sequence_preview_init (&seq->preview); + g_object_set (seq->preview.self, "margin", 3, "expand", TRUE, NULL); + gtk_grid_attach (grid, seq->preview.self, 0, 6, 2, 1); + + ugtk_sequence_show_preview (seq); + gtk_widget_show_all (seq->self); +} + +void ugtk_sequence_show_preview (UgtkSequence* seq) +{ + GtkTreeIter iter; + UgList result; + UgLink* link; + const char* string; + + uget_sequence_clear (&seq->sequence); + ugtk_sequence_add_range (seq, &seq->range[0]); + ugtk_sequence_add_range (seq, &seq->range[1]); + ugtk_sequence_add_range (seq, &seq->range[2]); + + string = gtk_entry_get_text (seq->entry); + if (ug_uri_init (NULL, string) == 0) { + ugtk_sequence_preview_show (&seq->preview, + _("URI is not valid.")); + // notify + if (seq->notify.func) + seq->notify.func (seq->notify.data, FALSE); + return; + } + if (strpbrk (string, "*") == NULL) { + ugtk_sequence_preview_show (&seq->preview, + _("No wildcard(*) character in URI entry.")); + // notify + if (seq->notify.func) + seq->notify.func (seq->notify.data, FALSE); + return; + } + if (uget_sequence_count (&seq->sequence, string) == 0) { + ugtk_sequence_preview_show (&seq->preview, + _("No character in 'From' or 'To' entry.")); + // notify + if (seq->notify.func) + seq->notify.func (seq->notify.data, FALSE); + return; + } + + ug_list_init (&result); + uget_sequence_get_preview (&seq->sequence, string, &result); + + gtk_list_store_clear (seq->preview.store); + for (link = result.head; link; link = link->next) { + gtk_list_store_append (seq->preview.store, &iter); + gtk_list_store_set (seq->preview.store, &iter, 0, link->data, -1); + } + uget_sequence_clear_result(&result); + // notify + if (seq->notify.func) + seq->notify.func (seq->notify.data, TRUE); + return; +} + +int ugtk_sequence_get_list (UgtkSequence* seq, UgList* result) +{ + const char* string; + + string = gtk_entry_get_text (seq->entry); + return uget_sequence_get_list (&seq->sequence, string, result); +} + +// ---------------------------------------------------------------------------- +// static functions +// +static void ugtk_sequence_add_range (UgtkSequence* seq, UgtkSeqRange* range) +{ + uint32_t first, last; + int type, digits; + + type = ugtk_seq_range_get_type (range); + switch (type) { + case UGTK_SEQ_TYPE_NUMBER: + first = gtk_spin_button_get_value_as_int ((GtkSpinButton*) range->spin_from); + last = gtk_spin_button_get_value_as_int ((GtkSpinButton*) range->spin_to); + digits = gtk_spin_button_get_value_as_int ((GtkSpinButton*) range->spin_digits); + break; + + case UGTK_SEQ_TYPE_CHARACTER: + first = *gtk_entry_get_text (GTK_ENTRY (range->entry_from)); + last = *gtk_entry_get_text (GTK_ENTRY (range->entry_to)); + digits = 0; + break; + + default: + return; + } + + uget_sequence_add (&seq->sequence, first, last, digits); +} + +static void ugtk_sequence_preview_init (struct UgtkSequencePreview* preview) +{ + GtkScrolledWindow* scrolled; + GtkCellRenderer* renderer; + GtkTreeViewColumn* column; + GtkTreeSelection* selection; + PangoContext* context; + PangoLayout* layout; + int height; + + preview->view = (GtkTreeView*) gtk_tree_view_new (); + preview->store = gtk_list_store_new (1, G_TYPE_STRING); + gtk_tree_view_set_model (preview->view, (GtkTreeModel*) preview->store); +// gtk_tree_view_set_fixed_height_mode (preview->view, TRUE); + gtk_widget_set_size_request ((GtkWidget*) preview->view, 140, 140); + selection = gtk_tree_view_get_selection (preview->view); + gtk_tree_selection_set_mode (selection, GTK_SELECTION_NONE); + // It will free UgtkSequence.preview_store when UgtkSequence.preview_view destroy. + g_object_unref (preview->store); + + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ( + _("Preview"), renderer, "text", 0, NULL); +// gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); + gtk_tree_view_append_column (preview->view, column); + + // calc text height + context = gtk_widget_get_pango_context ((GtkWidget*)preview->view); + layout = pango_layout_new (context); + pango_layout_set_text (layout, "Xy", -1); + pango_layout_get_pixel_size (layout, NULL, &height); + g_object_unref (layout); + height *= 10; + if (height < 140) + height = 140; + + preview->self = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_set_size_request (preview->self, 140, height); + scrolled = GTK_SCROLLED_WINDOW (preview->self); + gtk_scrolled_window_set_shadow_type (scrolled, GTK_SHADOW_IN); + gtk_scrolled_window_set_policy (scrolled, + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_container_add (GTK_CONTAINER (scrolled), GTK_WIDGET (preview->view)); +} + +static void ugtk_sequence_preview_show (struct UgtkSequencePreview* preview, const gchar* message) +{ + GtkTreeIter iter; + + gtk_list_store_clear (preview->store); + // skip first row + gtk_list_store_append (preview->store, &iter); + // show message in second row + gtk_list_store_append (preview->store, &iter); + gtk_list_store_set (preview->store, &iter, 0, message, -1); +} + +// ---------------------------------------------------------------------------- +// signal handler +static void on_realize (GtkWidget *widget, UgtkSequence* seq) +{ + ugtk_seq_range_set_type (&seq->range[0], UGTK_SEQ_TYPE_NUMBER); +} + +static void on_destroy (GtkWidget *widget, UgtkSequence* seq) +{ + uget_sequence_final (&seq->sequence); +} + + diff -Nru uget-2.0.2/ui-gtk/UgtkSequence.h uget-2.2.2/ui-gtk/UgtkSequence.h --- uget-2.0.2/ui-gtk/UgtkSequence.h 1970-01-01 00:00:00.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSequence.h 2019-05-19 16:49:07.000000000 +0000 @@ -0,0 +1,121 @@ +/* + * + * Copyright (C) 2005-2019 by C.H. Huang + * plushuang.tw@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU Lesser General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#ifndef UGTK_SEQUENCE_H +#define UGTK_SEQUENCE_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct UgtkSequence UgtkSequence; +typedef struct UgtkSeqRange UgtkSeqRange; +typedef void (*UgtkSequenceNotify) (gpointer user_data, gboolean completed); + +enum UgtkSeqType +{ + UGTK_SEQ_TYPE_NONE, + UGTK_SEQ_TYPE_NUMBER, + UGTK_SEQ_TYPE_CHARACTER +}; + +// ----------------------------------------------------------------------------- +// UgtkSeqRange + +struct UgtkSeqRange +{ + GtkWidget* self; + + GtkWidget* type; // GtkComboBox - None, Number, and Character + GtkWidget* label_to; + + // digit mode + GtkWidget* spin_from; + GtkWidget* spin_to; + GtkWidget* spin_digits; + GtkWidget* label_digits; + + // character mode + GtkWidget* entry_from; + GtkWidget* entry_to; + GtkWidget* label_case; +}; + +void ugtk_seq_range_init (UgtkSeqRange* range, UgtkSequence* seq, GtkSizeGroup* size_group); +void ugtk_seq_range_set_type (UgtkSeqRange* range, enum UgtkSeqType type); +enum UgtkSeqType ugtk_seq_range_get_type (UgtkSeqRange* range); + +// ----------------------------------------------------------------------------- +// UgtkSequence + +struct UgtkSequence +{ + GtkWidget* self; // GtkGrid + GtkEntry* entry; // URI + wildcard character (*) + UgtkSeqRange range[3]; // range x 3 + UgetSequence sequence; + + // preview + struct UgtkSequencePreview + { + GtkWidget* self; // GtkScrolledWindow + GtkTreeView* view; + GtkListStore* store; + guint status; + } preview; + + // callback + struct + { +// UgtkNotify func1; + UgtkSequenceNotify func; + gpointer data; + } notify; +}; + +void ugtk_sequence_init (UgtkSequence* seq); +void ugtk_sequence_show_preview (UgtkSequence* seq); +int ugtk_sequence_get_list (UgtkSequence* seq, UgList* result); + +#ifdef __cplusplus +} +#endif + +#endif // End of UGTK_SEQUENCE_H + diff -Nru uget-2.0.2/ui-gtk/UgtkSequencer.c uget-2.2.2/ui-gtk/UgtkSequencer.c --- uget-2.0.2/ui-gtk/UgtkSequencer.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSequencer.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,367 +0,0 @@ -/* - * - * Copyright (C) 2005-2015 by C.H. Huang - * plushuang.tw@gmail.com - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * --- - * - * In addition, as a special exception, the copyright holders give - * permission to link the code of portions of this program with the - * OpenSSL library under certain conditions as described in each - * individual source file, and distribute linked combinations - * including the two. - * You must obey the GNU Lesser General Public License in all respects - * for all of the code used other than OpenSSL. If you modify - * file(s) with this exception, you may extend this exception to your - * version of the file(s), but you are not obligated to do so. If you - * do not wish to do so, delete this exception statement from your - * version. If you delete this exception statement from all source - * files in the program, then also delete it here. - * - */ - -#include -#include - -#include - -// static functions -static void ugtk_sequencer_preview_init (struct UgtkSequencerPreview* preview); -static void ugtk_sequencer_preview_show (struct UgtkSequencerPreview* preview, const gchar* message); -// signal handlers -static void on_radio1_clicked (GtkWidget* widget, UgtkSequencer* seqer); -static void on_radio2_clicked (GtkWidget* widget, UgtkSequencer* seqer); - -void ugtk_sequencer_init (UgtkSequencer* seqer) -{ - GtkGrid* grid; - GtkWidget* label; - GtkWidget* entry; - GtkWidget* widget; - GtkAdjustment* spin_adj; - - // top widget - seqer->self = gtk_grid_new (); - grid = (GtkGrid*) seqer->self; - gtk_grid_set_row_homogeneous (grid, FALSE); - // URI entry - entry = gtk_entry_new (); - label = gtk_label_new_with_mnemonic (_("_URI:")); - seqer->entry = GTK_ENTRY (entry); - gtk_label_set_mnemonic_widget(GTK_LABEL (label), entry); - gtk_entry_set_activates_default (seqer->entry, TRUE); - g_object_set (label, "margin", 3, NULL); - g_object_set (entry, "margin", 3, "hexpand", TRUE, NULL); - gtk_grid_attach (grid, label, 0, 0, 1, 1); - gtk_grid_attach (grid, entry, 1, 0, 5, 1); - g_signal_connect_swapped (GTK_EDITABLE (entry), "changed", - G_CALLBACK (ugtk_sequencer_update_preview), seqer); - // e.g. - label = gtk_label_new (_("e.g.")); - g_object_set (label, "margin", 3, NULL); - gtk_grid_attach (grid, label, 0, 1, 1, 1); - label = gtk_label_new ("http://for.example/path/pre*.jpg"); - g_object_set (label, "margin", 3, NULL); - gtk_grid_attach (grid, label, 1, 1, 5, 1); - widget = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); - gtk_grid_attach (grid, widget, 0, 2, 6, 1); - - // ------------------------------------------------------- - // radio "From" - seqer->radio = gtk_radio_button_new_with_mnemonic (NULL, _("_From:")); - g_object_set (seqer->radio, "margin", 3, NULL); - gtk_grid_attach (grid, seqer->radio, 0, 3, 1, 1); - g_signal_connect (seqer->radio, "clicked", - G_CALLBACK (on_radio1_clicked), seqer); - // spin "From" - spin_adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, - 99999.0, 1.0, 5.0, 0.0); - seqer->spin_from = gtk_spin_button_new (spin_adj, 1.0, 0); - g_object_set (seqer->spin_from, "margin", 3, "hexpand", TRUE, NULL); - gtk_grid_attach (grid, seqer->spin_from, 1, 3, 1, 1); - g_signal_connect_swapped (seqer->spin_from, "value-changed", - G_CALLBACK (ugtk_sequencer_update_preview), seqer); - - // spin "To" - spin_adj = (GtkAdjustment *) gtk_adjustment_new (10.0, 1.0, - 99999.0, 1.0, 5.0, 0.0); - seqer->spin_to = gtk_spin_button_new (spin_adj, 1.0, 0); - g_object_set (seqer->spin_to, "margin", 3, "hexpand", TRUE, NULL); - gtk_grid_attach (grid, seqer->spin_to, 3, 3, 1, 1); - g_signal_connect_swapped (seqer->spin_to, "value-changed", - G_CALLBACK (ugtk_sequencer_update_preview), seqer); - // label "To" - label = gtk_label_new_with_mnemonic (_("To:")); - g_object_set (label, "margin", 3, NULL); - gtk_grid_attach (grid, label, 2, 3, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), seqer->spin_to); - seqer->label_to = label; - - // spin "digits" - spin_adj = (GtkAdjustment *) gtk_adjustment_new (2.0, 1.0, - 20.0, 1.0, 5.0, 0.0); - seqer->spin_digits = gtk_spin_button_new (spin_adj, 1.0, 0); - g_object_set (seqer->spin_digits, "margin", 3, "hexpand", TRUE, NULL); - gtk_grid_attach (grid, seqer->spin_digits, 5, 3, 1, 1); - g_signal_connect_swapped (seqer->spin_digits, "value-changed", - G_CALLBACK (ugtk_sequencer_update_preview), seqer); - // label "digits" - label = gtk_label_new_with_mnemonic (_("digits:")); - g_object_set (label, "margin", 3, NULL); - gtk_grid_attach (grid, label, 4, 3, 1, 1); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), seqer->spin_digits); - seqer->label_digits = label; - - // ------------------------------------------------------- - // radio "From" - seqer->radio = gtk_radio_button_new_with_mnemonic_from_widget ( - GTK_RADIO_BUTTON (seqer->radio), _("F_rom:")); - g_object_set (seqer->radio, "margin", 3, NULL); - gtk_grid_attach (grid, seqer->radio, 0, 4, 1, 1); - g_signal_connect (seqer->radio, "clicked", - G_CALLBACK (on_radio2_clicked), seqer); - // entry "From" - entry = gtk_entry_new (); - seqer->entry_from = GTK_ENTRY (entry); - gtk_entry_set_text (seqer->entry_from, "a"); - gtk_entry_set_max_length (seqer->entry_from, 1); - gtk_entry_set_width_chars (seqer->entry_from, 2); - gtk_widget_set_sensitive (entry, FALSE); - g_object_set (entry, "margin", 3, "hexpand", TRUE, NULL); - gtk_grid_attach (grid, entry, 1, 4, 1, 1); - g_signal_connect_swapped (GTK_EDITABLE (entry), "changed", - G_CALLBACK (ugtk_sequencer_update_preview), seqer); - - // entry "To" - entry = gtk_entry_new (); - seqer->entry_to = GTK_ENTRY (entry); - gtk_entry_set_text (seqer->entry_to, "z"); - gtk_entry_set_max_length (seqer->entry_to, 1); - gtk_entry_set_width_chars (seqer->entry_to, 2); - gtk_widget_set_sensitive (entry, FALSE); - g_object_set (entry, "margin", 3, "hexpand", TRUE, NULL); - gtk_grid_attach (grid, entry, 3, 4, 1, 1); - g_signal_connect_swapped (GTK_EDITABLE (seqer->entry_to), "changed", - G_CALLBACK(ugtk_sequencer_update_preview), seqer); - - // label case-sensitive - label = gtk_label_new (_("case-sensitive")); - gtk_widget_set_sensitive (label, FALSE); - g_object_set (label, "margin", 3, NULL); - gtk_grid_attach (grid, label, 4, 4, 2, 1); - seqer->label_case = label; - - // ------------------------------------------------------- - // preview - ugtk_sequencer_preview_init (&seqer->preview); - g_object_set (seqer->preview.self, "margin", 3, "expand", TRUE, NULL); - gtk_grid_attach (grid, seqer->preview.self, 0, 7, 6, 1); - - ugtk_sequencer_update_preview (seqer); - gtk_widget_show_all (seqer->self); -} - -void ugtk_sequencer_update_preview (UgtkSequencer* seqer) -{ - GtkTreeIter iter; - GList* list; - GList* link; - - list = ugtk_sequencer_get_list (seqer, TRUE); - if (list == NULL) { - if (seqer->preview.status == 1) { - ugtk_sequencer_preview_show (&seqer->preview, - _("No wildcard(*) character in URL entry.")); - } - else if (seqer->preview.status == 2) { - ugtk_sequencer_preview_show (&seqer->preview, - _("URL is not valid.")); - } - else if (seqer->preview.status == 3) { - ugtk_sequencer_preview_show (&seqer->preview, - _("No character in 'From' or 'To' entry.")); - } - // notify - if (seqer->notify.func) - seqer->notify.func (seqer->notify.data, FALSE); - return; - } - - gtk_list_store_clear (seqer->preview.store); - for (link = list; link; link = link->next) { - gtk_list_store_append (seqer->preview.store, &iter); - gtk_list_store_set (seqer->preview.store, &iter, 0, link->data, -1); - } - g_list_foreach (list, (GFunc) g_free, NULL); - g_list_free (list); - // notify - if (seqer->notify.func) - seqer->notify.func (seqer->notify.data, TRUE); - return; -} - -GList* ugtk_sequencer_get_list (UgtkSequencer* seqer, gboolean preview) -{ - GString* gstr; - GList* list; - gint from, to, cur, digits; - gboolean char_mode; - const gchar* string; - gint offset, offset_cur, offset_end; - - string = gtk_entry_get_text (seqer->entry); - offset = strcspn (string, "*"); - if (string [offset] == 0) { - seqer->preview.status = 1; - return NULL; - } - if (ug_uri_init (NULL, string) == 0) { - seqer->preview.status = 2; - return NULL; - } - // char or digit - char_mode = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (seqer->radio)); - if (char_mode) { - // char - from = *gtk_entry_get_text (seqer->entry_from); - to = *gtk_entry_get_text (seqer->entry_to); - digits = 1; - if (from == 0 || to == 0) { - seqer->preview.status = 3; - return NULL; - } - } - else { - // digit - from = gtk_spin_button_get_value_as_int ((GtkSpinButton*) seqer->spin_from); - to = gtk_spin_button_get_value_as_int ((GtkSpinButton*) seqer->spin_to); - digits = gtk_spin_button_get_value_as_int ((GtkSpinButton*) seqer->spin_digits); - } - // swap from & to - if (from > to) { - cur = from; - from = to; - to = cur; - } - // create URI list - list = NULL; - gstr = g_string_sized_new (80); - g_string_append_len (gstr, string, offset); - for (cur = to; cur >= from; cur--) { - if (preview && from < to -4 && cur == to -2) { - list = g_list_prepend (list, g_strdup (" ...")); - cur = from + 1; - } - // multi wildcard - for (offset_cur = offset; string[offset_cur]; offset_cur = offset_end) { - offset_cur++; - offset_end = strcspn (string + offset_cur, "*") + offset_cur; - if (char_mode) - g_string_append_printf (gstr, "%c", cur); - else - g_string_append_printf (gstr, "%.*d", digits, cur); - g_string_append_len (gstr, string + offset_cur, - offset_end - offset_cur); - } - list = g_list_prepend (list, g_strdup (gstr->str)); - g_string_truncate (gstr, offset); - } - g_string_free (gstr, TRUE); - seqer->preview.status = 0; - return list; -} - - -// ---------------------------------------------------------------------------- -// static functions -// -static void ugtk_sequencer_preview_init (struct UgtkSequencerPreview* preview) -{ - GtkScrolledWindow* scrolled; - GtkCellRenderer* renderer; - GtkTreeViewColumn* column; - GtkTreeSelection* selection; - - preview->view = (GtkTreeView*) gtk_tree_view_new (); - preview->store = gtk_list_store_new (1, G_TYPE_STRING); - gtk_tree_view_set_model (preview->view, (GtkTreeModel*) preview->store); -// gtk_tree_view_set_fixed_height_mode (preview->view, TRUE); - gtk_widget_set_size_request ((GtkWidget*) preview->view, 140, 140); - selection = gtk_tree_view_get_selection (preview->view); - gtk_tree_selection_set_mode (selection, GTK_SELECTION_NONE); - // It will free UgtkSequencer.preview_store when UgtkSequencer.preview_view destroy. - g_object_unref (preview->store); - - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ( - _("Preview"), renderer, "text", 0, NULL); -// gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_append_column (preview->view, column); - - preview->self = gtk_scrolled_window_new (NULL, NULL); - scrolled = GTK_SCROLLED_WINDOW (preview->self); - gtk_scrolled_window_set_shadow_type (scrolled, GTK_SHADOW_IN); - gtk_scrolled_window_set_policy (scrolled, - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_container_add (GTK_CONTAINER (scrolled), GTK_WIDGET (preview->view)); -} - -static void ugtk_sequencer_preview_show (struct UgtkSequencerPreview* preview, const gchar* message) -{ - GtkTreeIter iter; - - gtk_list_store_clear (preview->store); - // skip first row - gtk_list_store_append (preview->store, &iter); - // show message in second row - gtk_list_store_append (preview->store, &iter); - gtk_list_store_set (preview->store, &iter, 0, message, -1); -} - -// ---------------------------------------------------------------------------- -// signal handler -// -static void on_radio1_clicked (GtkWidget* widget, UgtkSequencer* seqer) -{ - // digit - gtk_widget_set_sensitive (seqer->spin_from, TRUE); - gtk_widget_set_sensitive (seqer->spin_to, TRUE); - gtk_widget_set_sensitive (seqer->spin_digits, TRUE); - gtk_widget_set_sensitive (seqer->label_to, TRUE); - gtk_widget_set_sensitive (seqer->label_digits, TRUE); - // character - gtk_widget_set_sensitive (GTK_WIDGET (seqer->entry_from), FALSE); - gtk_widget_set_sensitive (GTK_WIDGET (seqer->entry_to), FALSE); - gtk_widget_set_sensitive (seqer->label_case, FALSE); - ugtk_sequencer_update_preview (seqer); -} - -static void on_radio2_clicked (GtkWidget* widget, UgtkSequencer* seqer) -{ - // digit - gtk_widget_set_sensitive (seqer->spin_from, FALSE); - gtk_widget_set_sensitive (seqer->spin_to, FALSE); - gtk_widget_set_sensitive (seqer->spin_digits, FALSE); - gtk_widget_set_sensitive (seqer->label_to, FALSE); - gtk_widget_set_sensitive (seqer->label_digits, FALSE); - // character - gtk_widget_set_sensitive (GTK_WIDGET (seqer->entry_from), TRUE); - gtk_widget_set_sensitive (GTK_WIDGET (seqer->entry_to), TRUE); - gtk_widget_set_sensitive (seqer->label_case, TRUE); - ugtk_sequencer_update_preview (seqer); -} - diff -Nru uget-2.0.2/ui-gtk/UgtkSequencer.h uget-2.2.2/ui-gtk/UgtkSequencer.h --- uget-2.0.2/ui-gtk/UgtkSequencer.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSequencer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -/* - * - * Copyright (C) 2005-2015 by C.H. Huang - * plushuang.tw@gmail.com - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * --- - * - * In addition, as a special exception, the copyright holders give - * permission to link the code of portions of this program with the - * OpenSSL library under certain conditions as described in each - * individual source file, and distribute linked combinations - * including the two. - * You must obey the GNU Lesser General Public License in all respects - * for all of the code used other than OpenSSL. If you modify - * file(s) with this exception, you may extend this exception to your - * version of the file(s), but you are not obligated to do so. If you - * do not wish to do so, delete this exception statement from your - * version. If you delete this exception statement from all source - * files in the program, then also delete it here. - * - */ - -#ifndef UGTK_SEQUENCER_H -#define UGTK_SEQUENCER_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct UgtkSequencer UgtkSequencer; -typedef void (*UgtkSequencerNotify) (gpointer user_data, gboolean completed); - -struct UgtkSequencer -{ - GtkWidget* self; // GtkGrid - - GtkEntry* entry; // URI, wildcard - GtkWidget* radio; // GtkRadioButton - - // digit mode - GtkWidget* spin_from; - GtkWidget* spin_to; - GtkWidget* spin_digits; - GtkWidget* label_to; - GtkWidget* label_digits; - - // character mode - GtkEntry* entry_from; - GtkEntry* entry_to; - GtkWidget* label_case; - - // preview - struct UgtkSequencerPreview - { - GtkWidget* self; // GtkScrolledWindow - GtkTreeView* view; - GtkListStore* store; - guint status; - } preview; - - // callback - struct - { -// UgtkNotify func1; - UgtkSequencerNotify func; - gpointer data; - } notify; -}; - -void ugtk_sequencer_init (UgtkSequencer* seqer); -void ugtk_sequencer_update_preview (UgtkSequencer* seqer); -GList* ugtk_sequencer_get_list (UgtkSequencer* seqer, gboolean preview); - - -#ifdef __cplusplus -} -#endif - -#endif // End of UGTK_SEQUENCER_H - diff -Nru uget-2.0.2/ui-gtk/UgtkSetting.c uget-2.2.2/ui-gtk/UgtkSetting.c --- uget-2.0.2/ui-gtk/UgtkSetting.c 2015-08-18 01:17:31.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSetting.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -111,9 +112,46 @@ // ---------------------------------------------------------------------------- // DownloadColumnSetting +static const UgEntry UgtkDownloadColumnWidthEntry[] = +{ + {"state", offsetof (struct UgtkDownloadColumnWidth, state), + UG_ENTRY_INT, NULL, NULL}, + {"name", offsetof (struct UgtkDownloadColumnWidth, name), + UG_ENTRY_INT, NULL, NULL}, + {"complete", offsetof (struct UgtkDownloadColumnWidth, complete), + UG_ENTRY_INT, NULL, NULL}, + {"total", offsetof (struct UgtkDownloadColumnWidth, total), + UG_ENTRY_INT, NULL, NULL}, + {"percent", offsetof (struct UgtkDownloadColumnWidth, percent), + UG_ENTRY_INT, NULL, NULL}, + {"elapsed", offsetof (struct UgtkDownloadColumnWidth, elapsed), + UG_ENTRY_INT, NULL, NULL}, + {"left", offsetof (struct UgtkDownloadColumnWidth, left), + UG_ENTRY_INT, NULL, NULL}, + {"speed", offsetof (struct UgtkDownloadColumnWidth, speed), + UG_ENTRY_INT, NULL, NULL}, + {"UploadSpeed", offsetof (struct UgtkDownloadColumnWidth, upload_speed), + UG_ENTRY_INT, NULL, NULL}, + {"uploaded", offsetof (struct UgtkDownloadColumnWidth, uploaded), + UG_ENTRY_INT, NULL, NULL}, + {"ratio", offsetof (struct UgtkDownloadColumnWidth, ratio), + UG_ENTRY_INT, NULL, NULL}, + {"retry", offsetof (struct UgtkDownloadColumnWidth, retry), + UG_ENTRY_INT, NULL, NULL}, + {"category", offsetof (struct UgtkDownloadColumnWidth, category), + UG_ENTRY_INT, NULL, NULL}, + {"uri", offsetof (struct UgtkDownloadColumnWidth, uri), + UG_ENTRY_INT, NULL, NULL}, + {"AddedOn", offsetof (struct UgtkDownloadColumnWidth, added_on), + UG_ENTRY_INT, NULL, NULL}, + {"CompletedOn", offsetof (struct UgtkDownloadColumnWidth, completed_on), + UG_ENTRY_INT, NULL, NULL}, + {NULL} // null-terminated +}; + static const UgEntry UgtkDownloadColumnSettingEntry[] = { - {"completed", offsetof (struct UgtkDownloadColumnSetting, completed), + {"complete", offsetof (struct UgtkDownloadColumnSetting, complete), UG_ENTRY_BOOL, NULL, NULL}, {"total", offsetof (struct UgtkDownloadColumnSetting, total), UG_ENTRY_BOOL, NULL, NULL}, @@ -146,6 +184,14 @@ UG_ENTRY_INT, NULL, NULL}, {"SortNth", offsetof (struct UgtkDownloadColumnSetting, sort.nth), UG_ENTRY_INT, NULL, NULL}, + + {"Width", offsetof (struct UgtkDownloadColumnSetting, width), + UG_ENTRY_OBJECT, (void*) UgtkDownloadColumnWidthEntry, NULL}, + + // deprecated + {"completed", offsetof (struct UgtkDownloadColumnSetting, complete), + UG_ENTRY_BOOL, NULL, NULL}, + {NULL} // null-terminated }; @@ -170,10 +216,14 @@ UG_ENTRY_BOOL, NULL, NULL}, {"SoundNotification", offsetof (struct UgtkUserInterfaceSetting, sound_notification), UG_ENTRY_BOOL, NULL, NULL}, - {"ApplyRecently", offsetof (struct UgtkUserInterfaceSetting, apply_recently), + {"ApplyRecently", offsetof (struct UgtkUserInterfaceSetting, apply_recent), + UG_ENTRY_BOOL, NULL, NULL}, + {"ApplyRecent", offsetof (struct UgtkUserInterfaceSetting, apply_recent), UG_ENTRY_BOOL, NULL, NULL}, {"SkipExisting", offsetof (struct UgtkUserInterfaceSetting, skip_existing), UG_ENTRY_BOOL, NULL, NULL}, + {"LargeIcon", offsetof (struct UgtkUserInterfaceSetting, large_icon), + UG_ENTRY_BOOL, NULL, NULL}, #ifdef HAVE_APP_INDICATOR {"AppIndicator", offsetof (struct UgtkUserInterfaceSetting, app_indicator), UG_ENTRY_BOOL, NULL, NULL}, @@ -186,14 +236,21 @@ static const UgEntry UgtkClipboardSettingEntry[] = { - {"pattern", offsetof (struct UgtkClipboardSetting, pattern), + {"pattern", offsetof (struct UgtkClipboardSetting, pattern), UG_ENTRY_STRING, NULL, NULL}, - {"monitor", offsetof (struct UgtkClipboardSetting, monitor), + {"monitor", offsetof (struct UgtkClipboardSetting, monitor), UG_ENTRY_BOOL, NULL, NULL}, - {"quiet", offsetof (struct UgtkClipboardSetting, quiet), + {"quiet", offsetof (struct UgtkClipboardSetting, quiet), UG_ENTRY_BOOL, NULL, NULL}, - {"NthCategory", offsetof (struct UgtkClipboardSetting, nth_category), + {"NthCategory", offsetof (struct UgtkClipboardSetting, nth_category), UG_ENTRY_INT, NULL, NULL}, + + {"Website", offsetof (struct UgtkClipboardSetting, website), + UG_ENTRY_BOOL, NULL, NULL}, + + // remove this in future verison + {"MediaWebsite", offsetof (struct UgtkClipboardSetting, website), + UG_ENTRY_BOOL, NULL, NULL}, {NULL}, // null-terminated }; @@ -230,9 +287,9 @@ static const UgEntry UgtkCommandlineSettingEntry[] = { - {"quiet", offsetof (struct UgtkCommandlineSetting, quiet), + {"quiet", offsetof (struct UgtkCommandlineSetting, quiet), UG_ENTRY_BOOL, NULL, NULL}, - {"NthCategory", offsetof (struct UgtkCommandlineSetting, nth_category), + {"NthCategory", offsetof (struct UgtkCommandlineSetting, nth_category), UG_ENTRY_INT, NULL, NULL}, {NULL}, // null-terminated }; @@ -262,6 +319,20 @@ }; // ---------------------------------------------------------------------------- +// PluginMediaSetting + +static const UgEntry UgtkPluginMediaSettingEntry[] = +{ + {"match_mode", offsetof (struct UgtkPluginMediaSetting, match_mode), + UG_ENTRY_INT, NULL, NULL}, + {"quality", offsetof (struct UgtkPluginMediaSetting, quality), + UG_ENTRY_INT, NULL, NULL}, + {"type", offsetof (struct UgtkPluginMediaSetting, type), + UG_ENTRY_INT, NULL, NULL}, + {NULL}, // null-terminated +}; + +// ---------------------------------------------------------------------------- // UgtkCompletionSetting static const UgEntry UgtkCompletionSettingEntry[] = @@ -286,7 +357,7 @@ UG_ENTRY_OBJECT, (void*) UgtkWindowSettingEntry, NULL}, {"Summary", offsetof (UgtkSetting, summary), UG_ENTRY_OBJECT, (void*) UgtkSummarySettingEntry, NULL}, - {"DownloadColumn", offsetof (UgtkSetting, download_column), + {"DownloadColumn", offsetof (UgtkSetting, download_column), UG_ENTRY_OBJECT, (void*) UgtkDownloadColumnSettingEntry, NULL}, {"UserInterface", offsetof (UgtkSetting, ui), UG_ENTRY_OBJECT, (void*) UgtkUserInterfaceSettingEntry, NULL}, @@ -301,6 +372,8 @@ UG_ENTRY_INT, NULL, NULL}, {"PluginAria2", offsetof (UgtkSetting, aria2), UG_ENTRY_OBJECT, (void*) UgtkPluginAria2SettingEntry, NULL}, + {"PluginMedia", offsetof (UgtkSetting, media), + UG_ENTRY_OBJECT, (void*) UgtkPluginMediaSettingEntry, NULL}, {"Completion", offsetof (UgtkSetting, completion), UG_ENTRY_OBJECT, (void*) UgtkCompletionSettingEntry, NULL}, @@ -308,7 +381,7 @@ {"FolderHistory", offsetof (UgtkSetting, folder_history), UG_ENTRY_ARRAY, ug_json_parse_list_string, ug_json_write_list_string}, - {"AutoSave", offsetof (UgtkSetting, auto_save.enable), + {"AutoSave", offsetof (UgtkSetting, auto_save.enable), UG_ENTRY_INT, NULL, NULL}, {"AutoSaveInterval",offsetof (UgtkSetting, auto_save.interval), UG_ENTRY_INT, NULL, NULL}, @@ -325,8 +398,15 @@ // void ugtk_setting_init (UgtkSetting* setting) { + // "SchedulerSetting" ug_array_init (&setting->scheduler.state, sizeof (int), 7*24); memset (setting->scheduler.state.at, UGTK_SCHEDULE_NORMAL, 7*24); + + // default settings for media (or storage) website + setting->clipboard.website = TRUE; + setting->media.match_mode = UGET_MEDIA_MATCH_NEAR; + setting->media.quality = UGET_MEDIA_QUALITY_360P; + setting->media.type = UGET_MEDIA_TYPE_MP4; } void ugtk_setting_reset (UgtkSetting* setting) @@ -355,7 +435,7 @@ setting->summary.message = TRUE; // "DownloadColumnSetting" - setting->download_column.completed = TRUE; + setting->download_column.complete = TRUE; setting->download_column.total = TRUE; setting->download_column.percent = TRUE; setting->download_column.elapsed = TRUE; @@ -371,7 +451,10 @@ setting->download_column.completed_on = FALSE; // default sorted column setting->download_column.sort.type = GTK_SORT_DESCENDING; - setting->download_column.sort.nth = UGTK_NODE_COLUMN_ADDED_ON; + setting->download_column.sort.nth = UGTK_NODE_COLUMN_STATE; + // "DownloadColumnWidth" + memset (&setting->download_column.width, 0, + sizeof (setting->download_column.width)); // "UserInterfaceSetting" setting->ui.exit_confirmation = TRUE; @@ -382,8 +465,9 @@ setting->ui.start_in_offline_mode = FALSE; setting->ui.start_notification = TRUE; setting->ui.sound_notification = TRUE; - setting->ui.apply_recently = TRUE; + setting->ui.apply_recent = TRUE; setting->ui.skip_existing = FALSE; + setting->ui.large_icon = FALSE; #ifdef HAVE_APP_INDICATOR setting->ui.app_indicator = TRUE; #endif @@ -394,6 +478,7 @@ setting->clipboard.monitor = TRUE; setting->clipboard.quiet = FALSE; setting->clipboard.nth_category = 0; + setting->clipboard.website = TRUE; // "BandwidthSetting" setting->bandwidth.normal.upload = 0; @@ -418,7 +503,7 @@ // "PluginSetting" setting->plugin_order = UGTK_PLUGIN_ORDER_CURL; - // aria2 plugin settings + // aria2 plug-in settings setting->aria2.limit.download = 0; setting->aria2.limit.upload = 0; setting->aria2.launch = TRUE; @@ -426,6 +511,10 @@ setting->aria2.path = ug_strdup (UGTK_ARIA2_PATH); setting->aria2.args = ug_strdup (UGTK_ARIA2_ARGS); setting->aria2.uri = ug_strdup (UGTK_ARIA2_URI); + // media plug-in settings + setting->media.match_mode = UGET_MEDIA_MATCH_NEAR; + setting->media.quality = UGET_MEDIA_QUALITY_360P; + setting->media.type = UGET_MEDIA_TYPE_MP4; // Others setting->completion.remember = TRUE; @@ -471,7 +560,7 @@ ug_json_file_end_write (jfile); ug_json_file_free (jfile); - ug_unlink (file); + ug_remove (file); ug_rename (path, file); g_free (path); @@ -488,7 +577,7 @@ jfile = ug_json_file_new (4096); file_ok = ug_json_file_begin_parse (jfile, path); if (file_ok) - ug_unlink (path_temp); + ug_remove (path_temp); else if (ug_rename (path_temp, path) != -1) file_ok = ug_json_file_begin_parse (jfile, path); g_free (path_temp); @@ -579,7 +668,7 @@ { setting->plugin_order = UGTK_PLUGIN_ORDER_CURL; } - // aria2 plugin settings + // aria2 plug-in settings if (setting->aria2.path == NULL || setting->aria2.path[0] == 0) { ug_free (setting->aria2.path); setting->aria2.path = ug_strdup (UGTK_ARIA2_PATH); @@ -592,4 +681,11 @@ ug_free (setting->aria2.uri); setting->aria2.uri = ug_strdup (UGTK_ARIA2_URI); } + // media plug-in settings + if (setting->media.match_mode < 0 || setting->media.match_mode > UGET_MEDIA_N_MATCH_MODE) + setting->media.match_mode = UGET_MEDIA_MATCH_NEAR; + if (setting->media.quality < 0 || setting->media.quality > UGET_MEDIA_N_QUALITY) + setting->media.quality = UGET_MEDIA_QUALITY_360P; + if (setting->media.type < 0 || setting->media.type > UGET_MEDIA_N_TYPE) + setting->media.type = UGET_MEDIA_TYPE_MP4; } diff -Nru uget-2.0.2/ui-gtk/UgtkSettingDialog.c uget-2.2.2/ui-gtk/UgtkSettingDialog.c --- uget-2.0.2/ui-gtk/UgtkSettingDialog.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSettingDialog.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -49,6 +49,9 @@ UgtkSettingDialog* ugtk_setting_dialog_new (const gchar* title, GtkWindow* parent) { + PangoContext* context; + PangoLayout* layout; + int text_width; UgtkSettingDialog* dialog; GtkCellRenderer* renderer; GtkWidget* widget; @@ -71,14 +74,24 @@ // Notebook widget = gtk_notebook_new (); gtk_widget_set_size_request (widget, 430, 320); - gtk_box_pack_end (hbox, widget, FALSE, FALSE, 0); + gtk_box_pack_end (hbox, widget, TRUE, TRUE, 3); dialog->notebook = (GtkNotebook*) widget; gtk_notebook_set_show_tabs (dialog->notebook, FALSE); + gtk_notebook_set_show_border (dialog->notebook, FALSE); + // get text width + context = gtk_widget_get_pango_context (widget); + layout = pango_layout_new (context); + pango_layout_set_text (layout, "User Interface", -1); + pango_layout_get_pixel_size (layout, &text_width, NULL); + g_object_unref (layout); + text_width = text_width * 5 / 3; + if (text_width < 130) + text_width = 130; // TreeView dialog->list_store = gtk_list_store_new (1, G_TYPE_STRING); widget = gtk_tree_view_new_with_model ( GTK_TREE_MODEL (dialog->list_store)); - gtk_widget_set_size_request (widget, 130, 120); + gtk_widget_set_size_request (widget, text_width, 120); gtk_box_pack_start (hbox, widget, FALSE, FALSE, 0); dialog->tree_view = (GtkTreeView*) widget; gtk_tree_view_set_headers_visible (dialog->tree_view, FALSE); @@ -124,6 +137,12 @@ ugtk_setting_dialog_add (dialog, _("Plug-in"), dialog->plugin.self); // ------------------------------------------------------------------------ + // Plugin Media & Media Website settings page + ugtk_media_website_form_init (&dialog->media_website); + gtk_container_set_border_width (GTK_CONTAINER (dialog->media_website.self), 2); + ugtk_setting_dialog_add (dialog, _("Media website"), dialog->media_website.self); + + // ------------------------------------------------------------------------ // Others settings page vbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); gtk_container_set_border_width (GTK_CONTAINER (vbox), 2); @@ -169,6 +188,7 @@ ugtk_auto_save_form_set (&dialog->auto_save, setting); ugtk_commandline_form_set (&dialog->commandline, setting); ugtk_plugin_form_set (&dialog->plugin, setting); + ugtk_media_website_form_set (&dialog->media_website, setting); } void ugtk_setting_dialog_get (UgtkSettingDialog* dialog, UgtkSetting* setting) @@ -181,6 +201,7 @@ ugtk_auto_save_form_get (&dialog->auto_save, setting); ugtk_commandline_form_get (&dialog->commandline, setting); ugtk_plugin_form_get (&dialog->plugin, setting); + ugtk_media_website_form_get (&dialog->media_website, setting); } void ugtk_setting_dialog_add (UgtkSettingDialog* sdialog, diff -Nru uget-2.0.2/ui-gtk/UgtkSettingDialog.h uget-2.2.2/ui-gtk/UgtkSettingDialog.h --- uget-2.0.2/ui-gtk/UgtkSettingDialog.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSettingDialog.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -72,6 +72,7 @@ struct UgtkScheduleForm scheduler; struct UgtkCommandlineForm commandline; struct UgtkPluginForm plugin; + struct UgtkMediaWebsiteForm media_website; }; UgtkSettingDialog* ugtk_setting_dialog_new (); diff -Nru uget-2.0.2/ui-gtk/UgtkSettingForm.c uget-2.2.2/ui-gtk/UgtkSettingForm.c --- uget-2.0.2/ui-gtk/UgtkSettingForm.c 2015-01-17 15:39:13.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSettingForm.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -35,44 +35,47 @@ */ #include +#include #include #include -static void remove_line_breaks (gchar* buffer, gint len); - // ---------------------------------------------------------------------------- // UgtkClipboardForm // -void ugtk_clipboard_form_init (struct UgtkClipboardForm* csform) +// +void ugtk_clipboard_form_init (struct UgtkClipboardForm* cbform) { + PangoContext* context; + PangoLayout* layout; + int text_height; GtkTextView* textview; GtkWidget* widget; GtkBox* vbox; GtkBox* hbox; GtkScrolledWindow* scroll; - csform->self = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); - vbox = (GtkBox*) csform->self; + cbform->self = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + vbox = (GtkBox*) cbform->self; // Monitor button widget = gtk_check_button_new_with_mnemonic (_("_Enable clipboard monitor")); gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); - csform->monitor = (GtkToggleButton*) widget; + cbform->monitor = (GtkToggleButton*) widget; // quiet mode widget = gtk_check_button_new_with_mnemonic (_("_Quiet mode")); gtk_box_pack_start (vbox, widget, FALSE, FALSE, 0); - csform->quiet = (GtkToggleButton*) widget; + cbform->quiet = (GtkToggleButton*) widget; // Nth category hbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); gtk_box_pack_start (vbox, (GtkWidget*) hbox, FALSE, FALSE, 2); widget = gtk_label_new (_("Default category index")); gtk_box_pack_start (hbox, widget, FALSE, FALSE, 2); - csform->nth_label = widget; + cbform->nth_label = widget; widget = gtk_spin_button_new_with_range (0.0, 1000.0, 1.0); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); gtk_box_pack_start (hbox, widget, FALSE, FALSE, 2); - csform->nth_spin = (GtkSpinButton*) widget; + cbform->nth_spin = (GtkSpinButton*) widget; // hint hbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); gtk_box_pack_start (vbox, (GtkWidget*) hbox, FALSE, FALSE, 2); @@ -83,6 +86,20 @@ gtk_box_pack_start (vbox, gtk_label_new (""), FALSE, FALSE, 2); + // media or storage website + widget = gtk_check_button_new_with_mnemonic (_("_Monitor URL of website")); + gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); + cbform->website = (GtkToggleButton*) widget; + + gtk_box_pack_start (vbox, gtk_label_new (""), FALSE, FALSE, 2); + + // get text height --- begin --- + context = gtk_widget_get_pango_context (widget); + layout = pango_layout_new (context); + pango_layout_set_text (layout, "joIN", -1); + pango_layout_get_pixel_size (layout, NULL, &text_height); + g_object_unref (layout); + // get text height --- end --- hbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); gtk_box_pack_start (vbox, (GtkWidget*) hbox, FALSE, FALSE, 2); widget = gtk_label_new (_("Monitor clipboard for specified file types:")); @@ -90,16 +107,16 @@ // Scrolled Window scroll = (GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (scroll, GTK_SHADOW_IN); - gtk_widget_set_size_request (GTK_WIDGET (scroll), 100, 100); + gtk_widget_set_size_request (GTK_WIDGET (scroll), 100, text_height * 6); gtk_box_pack_start (vbox, GTK_WIDGET (scroll), FALSE, FALSE, 2); // file type pattern : TextView - csform->buffer = gtk_text_buffer_new (NULL); - csform->pattern = gtk_text_view_new_with_buffer (csform->buffer); - g_object_unref (csform->buffer); - textview = (GtkTextView*) csform->pattern; + cbform->buffer = gtk_text_buffer_new (NULL); + cbform->pattern = gtk_text_view_new_with_buffer (cbform->buffer); + g_object_unref (cbform->buffer); + textview = (GtkTextView*) cbform->pattern; gtk_text_view_set_wrap_mode (textview, GTK_WRAP_WORD_CHAR); gtk_container_add (GTK_CONTAINER (scroll), - GTK_WIDGET (csform->pattern)); + GTK_WIDGET (cbform->pattern)); // tips hbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); @@ -114,33 +131,35 @@ FALSE, FALSE, 2); } -void ugtk_clipboard_form_set (struct UgtkClipboardForm* csform, UgtkSetting* setting) +void ugtk_clipboard_form_set (struct UgtkClipboardForm* cbform, UgtkSetting* setting) { if (setting->clipboard.pattern) - gtk_text_buffer_set_text (csform->buffer, setting->clipboard.pattern, -1); - gtk_toggle_button_set_active (csform->monitor, setting->clipboard.monitor); - gtk_toggle_button_set_active (csform->quiet, setting->clipboard.quiet); - gtk_spin_button_set_value (csform->nth_spin, setting->clipboard.nth_category); - gtk_toggle_button_toggled (csform->monitor); - gtk_toggle_button_toggled (csform->quiet); -// on_clipboard_quiet_mode_toggled ((GtkWidget*) csform->quiet, csform); + gtk_text_buffer_set_text (cbform->buffer, setting->clipboard.pattern, -1); + gtk_toggle_button_set_active (cbform->monitor, setting->clipboard.monitor); + gtk_toggle_button_set_active (cbform->quiet, setting->clipboard.quiet); + gtk_toggle_button_set_active (cbform->website, setting->clipboard.website); + gtk_spin_button_set_value (cbform->nth_spin, setting->clipboard.nth_category); + gtk_toggle_button_toggled (cbform->monitor); + gtk_toggle_button_toggled (cbform->quiet); +// on_clipboard_quiet_mode_toggled ((GtkWidget*) cbform->quiet, cbform); } -void ugtk_clipboard_form_get (struct UgtkClipboardForm* csform, UgtkSetting* setting) +void ugtk_clipboard_form_get (struct UgtkClipboardForm* cbform, UgtkSetting* setting) { GtkTextIter iter1; GtkTextIter iter2; - gtk_text_buffer_get_start_iter (csform->buffer, &iter1); - gtk_text_buffer_get_end_iter (csform->buffer, &iter2); + gtk_text_buffer_get_start_iter (cbform->buffer, &iter1); + gtk_text_buffer_get_end_iter (cbform->buffer, &iter2); ug_free (setting->clipboard.pattern); - setting->clipboard.pattern = gtk_text_buffer_get_text (csform->buffer, &iter1, &iter2, FALSE); - setting->clipboard.monitor = gtk_toggle_button_get_active (csform->monitor); - setting->clipboard.quiet = gtk_toggle_button_get_active (csform->quiet); - setting->clipboard.nth_category = gtk_spin_button_get_value_as_int (csform->nth_spin); + setting->clipboard.pattern = gtk_text_buffer_get_text (cbform->buffer, &iter1, &iter2, FALSE); + setting->clipboard.monitor = gtk_toggle_button_get_active (cbform->monitor); + setting->clipboard.quiet = gtk_toggle_button_get_active (cbform->quiet); + setting->clipboard.website = gtk_toggle_button_get_active (cbform->website); + setting->clipboard.nth_category = gtk_spin_button_get_value_as_int (cbform->nth_spin); // remove line break - remove_line_breaks (setting->clipboard.pattern, -1); + ug_str_remove_crlf (setting->clipboard.pattern, setting->clipboard.pattern); } // ---------------------------------------------------------------------------- @@ -201,12 +220,15 @@ widget = gtk_check_button_new_with_label (_("Sound when download is finished")); uiform->sound_notification = (GtkToggleButton*) widget; gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); - widget = gtk_check_button_new_with_label (_("Apply recently download settings")); - uiform->apply_recently = (GtkToggleButton*) widget; + widget = gtk_check_button_new_with_label (_("Apply recent download settings")); + uiform->apply_recent = (GtkToggleButton*) widget; gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); // widget = gtk_check_button_new_with_label (_("Skip existing URI from clipboard and command-line")); // uiform->skip_existing = (GtkToggleButton*) widget; // gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); + widget = gtk_check_button_new_with_label (_("Display large icon")); + uiform->large_icon = (GtkToggleButton*) widget; + gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); } void ugtk_user_interface_form_set (struct UgtkUserInterfaceForm* uiform, UgtkSetting* setting) @@ -227,10 +249,12 @@ setting->ui.start_notification); gtk_toggle_button_set_active (uiform->sound_notification, setting->ui.sound_notification); - gtk_toggle_button_set_active (uiform->apply_recently, - setting->ui.apply_recently); + gtk_toggle_button_set_active (uiform->apply_recent, + setting->ui.apply_recent); // gtk_toggle_button_set_active (uiform->skip_existing, // setting->ui.skip_existing); + gtk_toggle_button_set_active (uiform->large_icon, + setting->ui.large_icon); #ifdef HAVE_APP_INDICATOR gtk_toggle_button_set_active (uiform->app_indicator, setting->ui.app_indicator); @@ -247,8 +271,9 @@ setting->ui.start_in_offline_mode = gtk_toggle_button_get_active (uiform->start_in_offline_mode); setting->ui.start_notification = gtk_toggle_button_get_active (uiform->start_notification); setting->ui.sound_notification = gtk_toggle_button_get_active (uiform->sound_notification); - setting->ui.apply_recently = gtk_toggle_button_get_active (uiform->apply_recently); + setting->ui.apply_recent = gtk_toggle_button_get_active (uiform->apply_recent); // setting->ui.skip_existing = gtk_toggle_button_get_active (uiform->skip_existing); + setting->ui.large_icon = gtk_toggle_button_get_active (uiform->large_icon); #ifdef HAVE_APP_INDICATOR setting->ui.app_indicator = gtk_toggle_button_get_active (uiform->app_indicator); #endif @@ -346,7 +371,7 @@ hbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (vbox, (GtkWidget*) hbox, FALSE, FALSE, 1); - widget = gtk_label_new (_("Custom command if error occured:")); + widget = gtk_label_new (_("Custom command if error occurred:")); gtk_box_pack_start (hbox, widget, FALSE, FALSE, 0); entry = gtk_entry_new (); @@ -401,20 +426,26 @@ g_signal_connect (widget, "toggled", G_CALLBACK (on_auto_save_toggled), asform); asform->enable = (GtkToggleButton*) widget; - // auto save spin & label (interval) - widget = gtk_label_new_with_mnemonic (_("minutes")); - gtk_box_pack_end (hbox, widget, FALSE, FALSE, 2); - asform->minutes_label = widget; - widget = gtk_spin_button_new_with_range (1.0, 120.0, 1.0); - gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); - gtk_box_pack_end (hbox, widget, FALSE, FALSE, 2); - asform->interval_spin = (GtkSpinButton*) widget; - // auto save label + + // space + widget = gtk_label_new (""); + gtk_box_pack_start (hbox, widget, FALSE, FALSE, 30); + + // auto save interval label widget = gtk_label_new_with_mnemonic (_("_Interval:")); - gtk_box_pack_end (hbox, widget, FALSE, FALSE, 2); + gtk_box_pack_start (hbox, widget, FALSE, FALSE, 2); asform->interval_label = widget; gtk_label_set_mnemonic_widget (GTK_LABEL (asform->interval_label), (GtkWidget*) asform->interval_spin); + // auto save interval spin + widget = gtk_spin_button_new_with_range (1.0, 120.0, 1.0); + gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); + gtk_box_pack_start (hbox, widget, FALSE, FALSE, 2); + asform->interval_spin = (GtkSpinButton*) widget; + // auto save interval unit label + widget = gtk_label_new_with_mnemonic (_("minutes")); + gtk_box_pack_start (hbox, widget, FALSE, FALSE, 2); + asform->minutes_label = widget; } void ugtk_auto_save_form_set (struct UgtkAutoSaveForm* asform, UgtkSetting* setting) @@ -434,7 +465,7 @@ // ---------------------------------------------------------------------------- // UgtkCommandlineForm // -void ugtk_commandline_form_init (struct UgtkCommandlineForm* csform) +void ugtk_commandline_form_init (struct UgtkCommandlineForm* clform) { GtkWidget* widget; GtkBox* vbox; @@ -442,25 +473,25 @@ // Commandline Settings widget = gtk_frame_new (_("Commandline Settings")); - csform->self = widget; + clform->self = widget; vbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_add (GTK_CONTAINER (widget), (GtkWidget*) vbox); gtk_container_set_border_width (GTK_CONTAINER (vbox), 2); // --quiet widget = gtk_check_button_new_with_mnemonic (_("Use '--quiet' by default")); - gtk_box_pack_start (vbox, widget, FALSE, FALSE, 0); - csform->quiet = (GtkToggleButton*) widget; + gtk_box_pack_start (vbox, widget, FALSE, FALSE, 1); + clform->quiet = (GtkToggleButton*) widget; // --category-index hbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); gtk_box_pack_start (vbox, (GtkWidget*) hbox, FALSE, FALSE, 2); widget = gtk_label_new (_("Default category index")); gtk_box_pack_start (hbox, widget, FALSE, FALSE, 2); - csform->index_label = widget; + clform->index_label = widget; widget = gtk_spin_button_new_with_range (0.0, 1000.0, 1.0); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); gtk_box_pack_start (hbox, widget, FALSE, FALSE, 2); - csform->index_spin = (GtkSpinButton*) widget; + clform->index_spin = (GtkSpinButton*) widget; // hint hbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); gtk_box_pack_start (vbox, (GtkWidget*) hbox, FALSE, FALSE, 2); @@ -470,22 +501,22 @@ gtk_box_pack_start (hbox, widget, FALSE, FALSE, 0); } -void ugtk_commandline_form_set (struct UgtkCommandlineForm* csform, UgtkSetting* setting) +void ugtk_commandline_form_set (struct UgtkCommandlineForm* clform, UgtkSetting* setting) { - gtk_toggle_button_set_active (csform->quiet, setting->commandline.quiet); - gtk_spin_button_set_value (csform->index_spin, setting->commandline.nth_category); + gtk_toggle_button_set_active (clform->quiet, setting->commandline.quiet); + gtk_spin_button_set_value (clform->index_spin, setting->commandline.nth_category); } -void ugtk_commandline_form_get (struct UgtkCommandlineForm* csform, UgtkSetting* setting) +void ugtk_commandline_form_get (struct UgtkCommandlineForm* clform, UgtkSetting* setting) { - setting->commandline.quiet = gtk_toggle_button_get_active (csform->quiet); - setting->commandline.nth_category = gtk_spin_button_get_value_as_int (csform->index_spin); + setting->commandline.quiet = gtk_toggle_button_get_active (clform->quiet); + setting->commandline.nth_category = gtk_spin_button_get_value_as_int (clform->index_spin); } // ---------------------------------------------------------------------------- // UgtkPluginForm // -static void on_plugin_launch_toggled (GtkWidget* widget, struct UgtkPluginForm* psform) +static void on_plugin_launch_toggled (GtkWidget* widget, struct UgtkPluginForm* psform) { gboolean sensitive; @@ -506,6 +537,9 @@ void ugtk_plugin_form_init (struct UgtkPluginForm* psform) { + PangoContext* context; + PangoLayout* layout; + int text_height; GtkBox* vbox; GtkBox* hbox; GtkBox* box; @@ -539,7 +573,7 @@ vbox = (GtkBox*) widget; hbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - gtk_box_pack_start (vbox, (GtkWidget*) hbox, FALSE, TRUE, 2); + gtk_box_pack_start (vbox, (GtkWidget*) hbox, FALSE, TRUE, 4); widget = gtk_label_new (_("Aria2 plug-in options")); gtk_box_pack_start (hbox, widget, FALSE, FALSE, 0); gtk_box_pack_start (hbox, gtk_separator_new (GTK_ORIENTATION_HORIZONTAL), TRUE, TRUE, 4); @@ -628,6 +662,13 @@ // gtk_box_pack_start (box, gtk_label_new (""), FALSE, FALSE, 0); // Arguments + // get text height --- begin --- + context = gtk_widget_get_pango_context (widget); + layout = pango_layout_new (context); + pango_layout_set_text (layout, "joIN", -1); + pango_layout_get_pixel_size (layout, NULL, &text_height); + g_object_unref (layout); + // get text height --- end --- hbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (box, (GtkWidget*) hbox, FALSE, TRUE, 2); widget = gtk_label_new (_("Arguments")); @@ -640,13 +681,13 @@ // Arguments - Scrolled Window scroll = (GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (scroll, GTK_SHADOW_IN); - gtk_widget_set_size_request (GTK_WIDGET (scroll), 100, 50); + gtk_widget_set_size_request (GTK_WIDGET (scroll), 100, text_height * 3); gtk_box_pack_start (box, GTK_WIDGET (scroll), FALSE, TRUE, 2); // Arguments - text view psform->args_buffer = gtk_text_buffer_new (NULL); psform->args = gtk_text_view_new_with_buffer (psform->args_buffer); g_object_unref (psform->args_buffer); - gtk_text_view_set_wrap_mode ((GtkTextView*) psform->args, GTK_WRAP_WORD_CHAR); + gtk_text_view_set_wrap_mode ((GtkTextView*) psform->args, GTK_WRAP_CHAR); gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (psform->args)); // ------------------------------------------------------------------------ @@ -702,25 +743,121 @@ gtk_text_buffer_get_start_iter (psform->args_buffer, &iter1); gtk_text_buffer_get_end_iter (psform->args_buffer, &iter2); setting->aria2.args = gtk_text_buffer_get_text (psform->args_buffer, &iter1, &iter2, FALSE); - remove_line_breaks (setting->aria2.args, -1); + ug_str_remove_crlf (setting->aria2.args, setting->aria2.args); setting->aria2.limit.upload = (guint) gtk_spin_button_get_value (psform->upload); setting->aria2.limit.download = (guint) gtk_spin_button_get_value (psform->download); } // ---------------------------------------------------------------------------- +// UgtkMediaWebsiteForm +// -static void remove_line_breaks (gchar* buffer, gint len) +static void on_match_mode_changed (GtkComboBox* widget, struct UgtkMediaWebsiteForm* mwform) { - gchar* cur; - gchar* end; + gboolean sensitive; + int index; + + index = gtk_combo_box_get_active (widget); + if (index == UGET_MEDIA_MATCH_0) + sensitive = FALSE; + else + sensitive = TRUE; + + gtk_widget_set_sensitive ((GtkWidget*) mwform->quality, sensitive); + gtk_widget_set_sensitive ((GtkWidget*) mwform->type, sensitive); +} + +void ugtk_media_website_form_init (struct UgtkMediaWebsiteForm* mwform) +{ + GtkBox* vbox; + GtkBox* hbox; + GtkWidget* widget; + GtkGrid* grid; + + mwform->self = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + vbox = (GtkBox*) mwform->self; - if (len == -1) - len = strlen (buffer); - cur = buffer; - end = buffer + len; - while ( (cur = strchr (cur, '\n')) ) { - memmove (cur, cur + 1, end - cur); - end--; - } + hbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_pack_start (vbox, (GtkWidget*) hbox, FALSE, TRUE, 2); + widget = gtk_label_new (_("Media matching mode:")); + gtk_box_pack_start (hbox, widget, FALSE, FALSE, 0); + widget = gtk_combo_box_text_new (); + mwform->match_mode = (GtkComboBoxText*) widget; + gtk_combo_box_text_insert_text (mwform->match_mode, + UGET_MEDIA_MATCH_0, _("Don't match")); + gtk_combo_box_text_insert_text (mwform->match_mode, + UGET_MEDIA_MATCH_1, _("Match 1 condition")); + gtk_combo_box_text_insert_text (mwform->match_mode, + UGET_MEDIA_MATCH_2, _("Match 2 condition")); + gtk_combo_box_text_insert_text (mwform->match_mode, + UGET_MEDIA_MATCH_NEAR, _("Near quality")); + g_signal_connect (mwform->match_mode, "changed", + G_CALLBACK (on_match_mode_changed), mwform); + gtk_box_pack_start (hbox, widget, FALSE, FALSE, 4); + + hbox = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_pack_start (vbox, (GtkWidget*) hbox, FALSE, TRUE, 4); + widget = gtk_label_new (_("Match conditions")); + gtk_box_pack_start (hbox, widget, FALSE, FALSE, 0); + gtk_box_pack_start (hbox, + gtk_separator_new (GTK_ORIENTATION_HORIZONTAL), TRUE, TRUE, 4); + + // conditions + grid = (GtkGrid*) gtk_grid_new (); + gtk_box_pack_start (vbox, (GtkWidget*) grid, FALSE, FALSE, 0); + // Quality + widget = gtk_label_new (_("Quality:")); + g_object_set (widget, "margin-left", 3, "margin-right", 3, NULL); + g_object_set (widget, "margin-top", 2, "margin-bottom", 2, NULL); + gtk_grid_attach (grid, widget, 0, 0, 1, 1); + widget = gtk_combo_box_text_new (); + mwform->quality = (GtkComboBoxText*) widget; + gtk_combo_box_text_insert_text (mwform->quality, + UGET_MEDIA_QUALITY_240P, "240p"); + gtk_combo_box_text_insert_text (mwform->quality, + UGET_MEDIA_QUALITY_360P, "360p"); + gtk_combo_box_text_insert_text (mwform->quality, + UGET_MEDIA_QUALITY_480P, "480p"); + gtk_combo_box_text_insert_text (mwform->quality, + UGET_MEDIA_QUALITY_720P, "720p"); + gtk_combo_box_text_insert_text (mwform->quality, + UGET_MEDIA_QUALITY_1080P, "1080p"); + g_object_set (widget, "margin-left", 3, "margin-right", 3, NULL); + g_object_set (widget, "margin-top", 2, "margin-bottom", 2, NULL); + gtk_grid_attach (grid, widget, 1, 0, 1, 1); + // Type + widget = gtk_label_new (_("Type:")); + g_object_set (widget, "margin-left", 3, "margin-right", 3, NULL); + g_object_set (widget, "margin-top", 2, "margin-bottom", 2, NULL); + gtk_grid_attach (grid, widget, 0, 1, 1, 1); + widget = gtk_combo_box_text_new (); + mwform->type = (GtkComboBoxText*) widget; + gtk_combo_box_text_insert_text (mwform->type, + UGET_MEDIA_TYPE_MP4, "mp4"); + gtk_combo_box_text_insert_text (mwform->type, + UGET_MEDIA_TYPE_WEBM, "webm"); + gtk_combo_box_text_insert_text (mwform->type, + UGET_MEDIA_TYPE_3GPP, "3gpp"); + gtk_combo_box_text_insert_text (mwform->type, + UGET_MEDIA_TYPE_FLV, "flv"); + g_object_set (widget, "margin-left", 3, "margin-right", 3, NULL); + g_object_set (widget, "margin-top", 2, "margin-bottom", 2, NULL); + gtk_grid_attach (grid, widget, 1, 1, 1, 1); + + gtk_widget_show (mwform->self); +} + +void ugtk_media_website_form_set (struct UgtkMediaWebsiteForm* mwform, UgtkSetting* setting) +{ + gtk_combo_box_set_active ((GtkComboBox*) mwform->match_mode, setting->media.match_mode); + gtk_combo_box_set_active ((GtkComboBox*) mwform->quality, setting->media.quality); + gtk_combo_box_set_active ((GtkComboBox*) mwform->type, setting->media.type); +} + +void ugtk_media_website_form_get (struct UgtkMediaWebsiteForm* mwform, UgtkSetting* setting) +{ + setting->media.match_mode = gtk_combo_box_get_active ((GtkComboBox*) mwform->match_mode); + setting->media.quality = gtk_combo_box_get_active ((GtkComboBox*) mwform->quality); + setting->media.type = gtk_combo_box_get_active ((GtkComboBox*) mwform->type); } diff -Nru uget-2.0.2/ui-gtk/UgtkSettingForm.h uget-2.2.2/ui-gtk/UgtkSettingForm.h --- uget-2.0.2/ui-gtk/UgtkSettingForm.h 2015-01-18 14:09:03.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSettingForm.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -59,11 +59,14 @@ // add download to Nth category GtkWidget* nth_label; GtkSpinButton* nth_spin; + + // Monitor media website address + GtkToggleButton* website; }; -void ugtk_clipboard_form_init (struct UgtkClipboardForm* csform); -void ugtk_clipboard_form_set (struct UgtkClipboardForm* csform, UgtkSetting* setting); -void ugtk_clipboard_form_get (struct UgtkClipboardForm* csform, UgtkSetting* setting); +void ugtk_clipboard_form_init (struct UgtkClipboardForm* cbform); +void ugtk_clipboard_form_set (struct UgtkClipboardForm* cbform, UgtkSetting* setting); +void ugtk_clipboard_form_get (struct UgtkClipboardForm* cbform, UgtkSetting* setting); // ---------------------------------------------------------------------------- // UgtkUserInterfaceForm @@ -79,8 +82,9 @@ GtkToggleButton* start_in_offline_mode; GtkToggleButton* start_notification; GtkToggleButton* sound_notification; - GtkToggleButton* apply_recently; + GtkToggleButton* apply_recent; GtkToggleButton* skip_existing; + GtkToggleButton* large_icon; #ifdef HAVE_APP_INDICATOR GtkToggleButton* app_indicator; #endif @@ -149,9 +153,9 @@ GtkSpinButton* index_spin; }; -void ugtk_commandline_form_init (struct UgtkCommandlineForm* csform); -void ugtk_commandline_form_set (struct UgtkCommandlineForm* csform, UgtkSetting* setting); -void ugtk_commandline_form_get (struct UgtkCommandlineForm* csform, UgtkSetting* setting); +void ugtk_commandline_form_init (struct UgtkCommandlineForm* clform); +void ugtk_commandline_form_set (struct UgtkCommandlineForm* clform, UgtkSetting* setting); +void ugtk_commandline_form_get (struct UgtkCommandlineForm* clform, UgtkSetting* setting); // ---------------------------------------------------------------------------- // UgtkPluginForm @@ -180,6 +184,21 @@ void ugtk_plugin_form_set (struct UgtkPluginForm* psform, UgtkSetting* setting); void ugtk_plugin_form_get (struct UgtkPluginForm* psform, UgtkSetting* setting); +// ---------------------------------------------------------------------------- +// UgtkMediaWebsiteForm +struct UgtkMediaWebsiteForm +{ + GtkWidget* self; + + GtkComboBoxText* match_mode; + GtkComboBoxText* quality; + GtkComboBoxText* type; +}; + +void ugtk_media_website_form_init (struct UgtkMediaWebsiteForm* mwform); +void ugtk_media_website_form_set (struct UgtkMediaWebsiteForm* mwform, UgtkSetting* setting); +void ugtk_media_website_form_get (struct UgtkMediaWebsiteForm* mwform, UgtkSetting* setting); + #ifdef __cplusplus } diff -Nru uget-2.0.2/ui-gtk/UgtkSetting.h uget-2.2.2/ui-gtk/UgtkSetting.h --- uget-2.0.2/ui-gtk/UgtkSetting.h 2015-08-18 01:17:31.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSetting.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -113,7 +113,7 @@ struct UgtkDownloadColumnSetting { // visible: boolean - int completed; + int complete; int total; int percent; int elapsed; // consuming time @@ -128,6 +128,27 @@ int added_on; int completed_on; + // width: integer + struct UgtkDownloadColumnWidth + { + int state; // state icon + int name; + int complete; + int total; + int percent; + int elapsed; // consuming time + int left; // remaining time + int speed; + int upload_speed; + int uploaded; + int ratio; + int retry; + int category; + int uri; + int added_on; + int completed_on; + } width; + struct { int type; // GtkSortType @@ -147,8 +168,9 @@ int start_in_offline_mode; int start_notification; int sound_notification; - int apply_recently; + int apply_recent; int skip_existing; + int large_icon; #ifdef HAVE_APP_INDICATOR int app_indicator; #endif @@ -161,6 +183,7 @@ int monitor; int quiet; int nth_category; + int website; } clipboard; // "BandwidthSetting" - global speed limits @@ -176,7 +199,7 @@ struct UgtkSchedulerSetting { int enable; - UgArrayInt state; // [7][24] 1 week, 7 days, 24 hours + UgArrayInt state; // [7][24] 1 week, 7 days, 24 hours } scheduler; // "CommandlineSetting" @@ -187,7 +210,7 @@ } commandline; // "PluginOrder" - int plugin_order; // UgtkPluginOrder: matching order + int plugin_order; // UgtkPluginOrder: matching order // UgetPluginAria2 option struct UgtkPluginAria2Setting { @@ -205,6 +228,13 @@ char* uri; } aria2; + // UgetPluginMedia option + struct UgtkPluginMediaSetting { + int match_mode; + int quality; + int type; + } media; + // Completion Auto-Actions struct UgtkCompletionSetting { int remember; diff -Nru uget-2.0.2/ui-gtk/UgtkSummary.c uget-2.2.2/ui-gtk/UgtkSummary.c --- uget-2.0.2/ui-gtk/UgtkSummary.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSummary.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -40,14 +40,6 @@ #include -enum UGTK_SUMMARY_COLUMN -{ - UGTK_SUMMARY_COLUMN_ICON, - UGTK_SUMMARY_COLUMN_NAME, - UGTK_SUMMARY_COLUMN_VALUE, - UGTK_SUMMARY_N_COLUMN -}; - // static functions static GtkTreeView* ugtk_summary_view_new (); static void ugtk_summary_store_realloc_next (GtkListStore* store, GtkTreeIter* iter); @@ -99,14 +91,13 @@ } iter.stamp = 0; // used by ugtk_summary_store_realloc_next() - node = node->data; - temp.common = ug_info_get (&node->info, UgetCommonInfo); + temp.common = ug_info_get (node->info, UgetCommonInfo); // Summary Name if (summary->visible.name) { - if (node->name) { + if (temp.common && temp.common->name) { name = g_strconcat (_("Name"), ":", NULL); - value = node->name; + value = temp.common->name; } else { name = g_strconcat (_("File"), ":", NULL); @@ -137,7 +128,13 @@ // Summary Category if (summary->visible.category) { name = g_strconcat (_("Category"), ":", NULL); - value = (node->parent) ? node->parent->name : NULL; + if (node->parent) { + temp.common = ug_info_get (node->parent->info, UgetCommonInfo); + value = (temp.common) ? temp.common->name : NULL; + temp.common = ug_info_get (node->info, UgetCommonInfo); + } + else + value = NULL; ugtk_summary_store_realloc_next (summary->store, &iter); gtk_list_store_set (summary->store, &iter, UGTK_SUMMARY_COLUMN_ICON , GTK_STOCK_DND_MULTIPLE, @@ -159,7 +156,7 @@ g_free (name); } // Summary Message - temp.log = ug_info_get (&node->info, UgetLogInfo); + temp.log = ug_info_get (node->info, UgetLogInfo); if (temp.log) temp.event = (UgetEvent*) temp.log->messages.head; if (summary->visible.message) { diff -Nru uget-2.0.2/ui-gtk/UgtkSummary.h uget-2.2.2/ui-gtk/UgtkSummary.h --- uget-2.0.2/ui-gtk/UgtkSummary.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkSummary.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -46,6 +46,14 @@ typedef struct UgtkSummary UgtkSummary; +enum UGTK_SUMMARY_COLUMN +{ + UGTK_SUMMARY_COLUMN_ICON, + UGTK_SUMMARY_COLUMN_NAME, + UGTK_SUMMARY_COLUMN_VALUE, + UGTK_SUMMARY_N_COLUMN +}; + struct UgtkSummary { GtkWidget* self; // (GtkScrolledWindow) container for view diff -Nru uget-2.0.2/ui-gtk/UgtkTraveler.c uget-2.2.2/ui-gtk/UgtkTraveler.c --- uget-2.0.2/ui-gtk/UgtkTraveler.c 2015-01-17 15:39:13.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkTraveler.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -65,7 +65,7 @@ // category traveler->category.self = gtk_scrolled_window_new (NULL, NULL); traveler->category.view = (GtkTreeView*) ugtk_node_view_new_for_category (); - traveler->category.model = ugtk_node_tree_new (&app->real, TRUE); + traveler->category.model = ugtk_node_tree_new (&app->sorted, TRUE); ugtk_node_tree_set_prefix (traveler->category.model, &app->mix, 1); gtk_tree_view_set_model (traveler->category.view, GTK_TREE_MODEL (traveler->category.model)); @@ -227,23 +227,14 @@ GList* list; GList* link; - g_list_free_full (traveler->reserved.list, - (GDestroyNotify) uget_node_unref); - if (traveler->reserved.node) - uget_node_unref (traveler->reserved.node); - list = ugtk_traveler_get_selected (traveler); - for (link = list; link; link = link->next) { - link->data = ((UgetNode*)link->data)->data; - uget_node_ref (link->data); - } + for (link = list; link; link = link->next) + link->data = ((UgetNode*)link->data)->base; traveler->reserved.list = list; traveler->reserved.node = traveler->download.cursor.node; - if (traveler->reserved.node) { - traveler->reserved.node = traveler->reserved.node->data; - uget_node_ref (traveler->reserved.node); - } + if (traveler->reserved.node) + traveler->reserved.node = traveler->reserved.node->base; return list; } @@ -256,9 +247,6 @@ node = traveler->reserved.node; ugtk_traveler_set_cursor (traveler, node); ugtk_traveler_set_selected (traveler, list); - if (node) - uget_node_unref (node); - g_list_free_full (list, (GDestroyNotify) uget_node_unref); traveler->reserved.list = NULL; traveler->reserved.node = NULL; } @@ -512,6 +500,9 @@ GtkTreePath* path; GtkTreeIter iter; + // clear download cursor + traveler->download.cursor.node = NULL; + traveler->state.cursor.pos_last = traveler->state.cursor.pos; gtk_tree_view_get_cursor (view, &path, NULL); if (path == NULL) { @@ -528,12 +519,6 @@ gtk_tree_path_free (path); traveler->state.cursor.node = iter.user_data; - // If user choose "All Status", show sorted download. - if (traveler->state.cursor.pos == 0 && traveler->category.cursor.pos > 0) { - iter.user_data = uget_node_nth_child (&traveler->app->sorted, - traveler->category.cursor.pos - 1); - } - // change download.model and refresh it's view gtk_tree_view_set_model (traveler->download.view, NULL); if (iter.user_data) { @@ -549,6 +534,9 @@ GtkTreePath* path; GtkTreeIter iter; + // clear download cursor + traveler->download.cursor.node = NULL; + traveler->category.cursor.pos_last = traveler->category.cursor.pos; gtk_tree_view_get_cursor (view, &path, NULL); if (path == NULL) { @@ -673,6 +661,8 @@ } uget_app_set_sorting ((UgetApp*) app, compare_funcs[nth_column], (sorttype == GTK_SORT_DESCENDING) ? TRUE : FALSE); + // Any Category/Status can't move download position if they were sorted. + ugtk_app_decide_download_sensitive (app); gtk_widget_queue_draw ((GtkWidget*) traveler->download.view); } @@ -693,7 +683,7 @@ static void on_size_column_clicked (GtkTreeViewColumn *column, UgtkTraveler* traveler) { - ugtk_tree_view_column_clicked (column, UGTK_NODE_COLUMN_SIZE, traveler); + ugtk_tree_view_column_clicked (column, UGTK_NODE_COLUMN_TOTAL, traveler); } static void on_percent_column_clicked (GtkTreeViewColumn *column, UgtkTraveler* traveler) diff -Nru uget-2.0.2/ui-gtk/UgtkTraveler.h uget-2.2.2/ui-gtk/UgtkTraveler.h --- uget-2.0.2/ui-gtk/UgtkTraveler.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkTraveler.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2012-2015 by C.H. Huang + * Copyright (C) 2012-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -60,6 +60,8 @@ UgtkNodeList* model; struct { + // pos_last used by "cursor-changed" signal handler + // if selection changed by user, pos != pos_last. int pos; int pos_last; UgetNode* node; @@ -72,6 +74,8 @@ UgtkNodeTree* model; struct { + // pos_last used by "cursor-changed" signal handler + // if selection changed by user, pos != pos_last. int pos; int pos_last; UgetNode* node; @@ -84,6 +88,8 @@ UgtkNodeTree* model; struct { + // pos_last used by "cursor-changed" signal handler + // if selection changed by user, pos != pos_last. int pos; int pos_last; UgetNode* node; diff -Nru uget-2.0.2/ui-gtk/UgtkTrayIcon.c uget-2.2.2/ui-gtk/UgtkTrayIcon.c --- uget-2.0.2/ui-gtk/UgtkTrayIcon.c 2015-09-10 02:26:03.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkTrayIcon.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -112,9 +112,9 @@ gtk_menu_shell_append ((GtkMenuShell*)menu, menu_item); trayicon->menu.skip_existing = menu_item; - menu_item = gtk_check_menu_item_new_with_mnemonic (_("Apply recently download settings")); + menu_item = gtk_check_menu_item_new_with_mnemonic (_("Apply recent download settings")); gtk_menu_shell_append ((GtkMenuShell*)menu, menu_item); - trayicon->menu.apply_recently = menu_item; + trayicon->menu.apply_recent = menu_item; gtk_menu_shell_append ((GtkMenuShell*)menu, gtk_separator_menu_item_new() ); @@ -157,7 +157,7 @@ trayicon->menu.self = menu; // decide tray icon - file_name = g_build_filename (DATADIR, "icons", + file_name = g_build_filename (UG_DATADIR, "icons", "hicolor", "16x16", "apps", "uget-icon.png", NULL); if (g_file_test (file_name, G_FILE_TEST_IS_REGULAR)) @@ -188,29 +188,29 @@ gchar* string; char* string_down_speed; char* string_up_speed; - guint current_status; + guint current_state; // change tray icon if (trayicon->error_occurred) { string = UGTK_TRAY_ICON_ERROR_NAME; - current_status = 2; + current_state = UGTK_TRAY_ICON_STATE_ERROR; } else if (n_active > 0) { string = UGTK_TRAY_ICON_ACTIVE_NAME; - current_status = 1; + current_state = UGTK_TRAY_ICON_STATE_RUNNING; } else { string = UGTK_TRAY_ICON_NAME; - current_status = 0; + current_state = UGTK_TRAY_ICON_STATE_NORMAL; } - if (trayicon->last_status != current_status) { - trayicon->last_status = current_status; + if (trayicon->state != current_state) { + trayicon->state = current_state; #ifdef HAVE_APP_INDICATOR if (trayicon->indicator) { trayicon->error_occurred = FALSE; if (app_indicator_get_status (trayicon->indicator) != APP_INDICATOR_STATUS_PASSIVE) { - if (current_status == 0) { + if (current_state == UGTK_TRAY_ICON_STATE_NORMAL) { app_indicator_set_status (trayicon->indicator, APP_INDICATOR_STATUS_ACTIVE); } @@ -234,8 +234,9 @@ string = g_strdup_printf ( UGTK_APP_NAME " " PACKAGE_VERSION "\n" "%u %s" "\n" - "D: %s" "\n" - "U: %s", + "\xE2\x86\x93 %s" // "↓" + " , " + "\xE2\x86\x91 %s", // "↑" n_active, _("tasks"), string_down_speed, string_up_speed); @@ -323,6 +324,7 @@ // clear error status if (app->trayicon.error_occurred) { app->trayicon.error_occurred = FALSE; + app->trayicon.state = UGTK_TRAY_ICON_STATE_NORMAL; gtk_status_icon_set_from_icon_name (status_icon, UGTK_TRAY_ICON_NAME); } } @@ -405,10 +407,10 @@ g_signal_emit_by_name (app->menubar.edit.skip_existing, "activate"); } -static void on_apply_recently (GtkWidget* widget, UgtkApp* app) +static void on_apply_recent (GtkWidget* widget, UgtkApp* app) { if (app->trayicon.menu.emission) - g_signal_emit_by_name (app->menubar.edit.apply_recently, "activate"); + g_signal_emit_by_name (app->menubar.edit.apply_recent, "activate"); } static void on_config_settings (GtkWidget* widget, UgtkApp* app) @@ -482,8 +484,8 @@ G_CALLBACK (on_commandline_quiet), app); g_signal_connect (trayicon->menu.skip_existing, "activate", G_CALLBACK (on_skip_existing), app); - g_signal_connect (trayicon->menu.apply_recently, "activate", - G_CALLBACK (on_apply_recently), app); + g_signal_connect (trayicon->menu.apply_recent, "activate", + G_CALLBACK (on_apply_recent), app); g_signal_connect (trayicon->menu.settings, "activate", G_CALLBACK (on_config_settings), app); diff -Nru uget-2.0.2/ui-gtk/UgtkTrayIcon.h uget-2.2.2/ui-gtk/UgtkTrayIcon.h --- uget-2.0.2/ui-gtk/UgtkTrayIcon.h 2015-03-25 09:15:42.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkTrayIcon.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -53,6 +53,13 @@ // -------------------------------- // Tray Icon +enum UgtkTrayIconState +{ + UGTK_TRAY_ICON_STATE_NORMAL, + UGTK_TRAY_ICON_STATE_RUNNING, + UGTK_TRAY_ICON_STATE_ERROR, +}; + struct UgtkTrayIcon { #ifdef HAVE_APP_INDICATOR @@ -62,7 +69,7 @@ GtkStatusIcon* self; gboolean visible; gboolean error_occurred; - guint last_status; + guint state; // UgtkTrayIconState struct UgtkTrayIconMenu { @@ -78,7 +85,7 @@ GtkWidget* clipboard_quiet; GtkWidget* commandline_quiet; GtkWidget* skip_existing; - GtkWidget* apply_recently; + GtkWidget* apply_recent; GtkWidget* settings; GtkWidget* about; diff -Nru uget-2.0.2/ui-gtk/UgtkUtil.c uget-2.2.2/ui-gtk/UgtkUtil.c --- uget-2.0.2/ui-gtk/UgtkUtil.c 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkUtil.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -41,6 +41,7 @@ #if defined _WIN32 || defined _WIN64 #include +#include // ShellExecuteW() #endif #if defined _WIN32 || defined _WIN64 diff -Nru uget-2.0.2/ui-gtk/UgtkUtil.h uget-2.2.2/ui-gtk/UgtkUtil.h --- uget-2.0.2/ui-gtk/UgtkUtil.h 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/ui-gtk/UgtkUtil.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk-1to2/main.c uget-2.2.2/ui-gtk-1to2/main.c --- uget-2.0.2/ui-gtk-1to2/main.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/main.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2013-2015 by C.H. Huang + * Copyright (C) 2013-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -58,8 +58,7 @@ char* path; int n; - path = g_build_filename (g_get_user_config_dir (), - "uGet", NULL); + path = g_build_filename (g_get_user_config_dir (), "uGet", NULL); puts ("\n" "Convert uGet for GTK+ data file from 1.10.x to 2.x" "\n"); puts ("Usage:"); @@ -73,7 +72,7 @@ // starting convert register_iface (); - u1t2 = ugtk_1to2_new (); + u1t2 = ugtk_1to2_new (argv[1]); // setting n = ugtk_1to2_load_setting (u1t2); diff -Nru uget-2.0.2/ui-gtk-1to2/Makefile.am uget-2.2.2/ui-gtk-1to2/Makefile.am --- uget-2.0.2/ui-gtk-1to2/Makefile.am 2015-06-07 23:27:56.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/Makefile.am 2019-05-19 16:49:07.000000000 +0000 @@ -1,4 +1,4 @@ -AUTOMAKE_OPTIONS = subdir-objects +AUTOMAKE_OPTIONS = subdir-objects no-dependencies bin_PROGRAMS = uget-gtk-1to2 diff -Nru uget-2.0.2/ui-gtk-1to2/Makefile.in uget-2.2.2/ui-gtk-1to2/Makefile.in --- uget-2.0.2/ui-gtk-1to2/Makefile.in 2015-09-11 12:13:21.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/Makefile.in 2019-05-19 16:51:34.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,6 +16,61 @@ VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -35,12 +89,12 @@ POST_UNINSTALL = : bin_PROGRAMS = uget-gtk-1to2$(EXEEXT) subdir = ui-gtk-1to2 -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ + $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -63,19 +117,65 @@ $(top_builddir)/uglib/libuglib.a uget_gtk_1to2_LINK = $(CCLD) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f +depcomp = +am__maybe_remake_depfiles = +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(uget_gtk_1to2_SOURCES) DIST_SOURCES = $(uget_gtk_1to2_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -133,6 +233,7 @@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LFS_CFLAGS = @LFS_CFLAGS@ LFS_LDFLAGS = @LFS_LDFLAGS@ @@ -224,7 +325,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = subdir-objects +AUTOMAKE_OPTIONS = subdir-objects no-dependencies uget_gtk_1to2_CPPFLAGS = \ -DDATADIR='"$(datadir)"' \ -I$(top_srcdir)/ui-gtk \ @@ -278,14 +379,13 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ui-gtk-1to2/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu ui-gtk-1to2/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -298,14 +398,18 @@ $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -326,7 +430,8 @@ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files @@ -336,209 +441,95 @@ ../ui-gtk/$(am__dirstamp): @$(MKDIR_P) ../ui-gtk @: > ../ui-gtk/$(am__dirstamp) -../ui-gtk/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) ../ui-gtk/$(DEPDIR) - @: > ../ui-gtk/$(DEPDIR)/$(am__dirstamp) ../ui-gtk/uget_gtk_1to2-UgtkSetting.$(OBJEXT): \ - ../ui-gtk/$(am__dirstamp) ../ui-gtk/$(DEPDIR)/$(am__dirstamp) + ../ui-gtk/$(am__dirstamp) + uget-gtk-1to2$(EXEEXT): $(uget_gtk_1to2_OBJECTS) $(uget_gtk_1to2_DEPENDENCIES) $(EXTRA_uget_gtk_1to2_DEPENDENCIES) @rm -f uget-gtk-1to2$(EXEEXT) - $(uget_gtk_1to2_LINK) $(uget_gtk_1to2_OBJECTS) $(uget_gtk_1to2_LDADD) $(LIBS) + $(AM_V_CCLD)$(uget_gtk_1to2_LINK) $(uget_gtk_1to2_OBJECTS) $(uget_gtk_1to2_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) - -rm -f ../ui-gtk/uget_gtk_1to2-UgtkSetting.$(OBJEXT) + -rm -f ../ui-gtk/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@../ui-gtk/$(DEPDIR)/uget_gtk_1to2-UgtkSetting.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk_1to2-UgCategory.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk_1to2-UgData-download.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk_1to2-UgData1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk_1to2-UgDataset.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk_1to2-UgMarkup.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk_1to2-UgRegistry1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk_1to2-UgSetting.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk_1to2-Ugtk1to2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uget_gtk_1to2-main.Po@am__quote@ - .c.o: -@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + $(AM_V_CC)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` uget_gtk_1to2-UgCategory.o: UgCategory.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgCategory.o -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgCategory.Tpo -c -o uget_gtk_1to2-UgCategory.o `test -f 'UgCategory.c' || echo '$(srcdir)/'`UgCategory.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgCategory.Tpo $(DEPDIR)/uget_gtk_1to2-UgCategory.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgCategory.c' object='uget_gtk_1to2-UgCategory.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgCategory.o `test -f 'UgCategory.c' || echo '$(srcdir)/'`UgCategory.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgCategory.o `test -f 'UgCategory.c' || echo '$(srcdir)/'`UgCategory.c uget_gtk_1to2-UgCategory.obj: UgCategory.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgCategory.obj -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgCategory.Tpo -c -o uget_gtk_1to2-UgCategory.obj `if test -f 'UgCategory.c'; then $(CYGPATH_W) 'UgCategory.c'; else $(CYGPATH_W) '$(srcdir)/UgCategory.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgCategory.Tpo $(DEPDIR)/uget_gtk_1to2-UgCategory.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgCategory.c' object='uget_gtk_1to2-UgCategory.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgCategory.obj `if test -f 'UgCategory.c'; then $(CYGPATH_W) 'UgCategory.c'; else $(CYGPATH_W) '$(srcdir)/UgCategory.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgCategory.obj `if test -f 'UgCategory.c'; then $(CYGPATH_W) 'UgCategory.c'; else $(CYGPATH_W) '$(srcdir)/UgCategory.c'; fi` uget_gtk_1to2-UgData1.o: UgData1.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgData1.o -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgData1.Tpo -c -o uget_gtk_1to2-UgData1.o `test -f 'UgData1.c' || echo '$(srcdir)/'`UgData1.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgData1.Tpo $(DEPDIR)/uget_gtk_1to2-UgData1.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgData1.c' object='uget_gtk_1to2-UgData1.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgData1.o `test -f 'UgData1.c' || echo '$(srcdir)/'`UgData1.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgData1.o `test -f 'UgData1.c' || echo '$(srcdir)/'`UgData1.c uget_gtk_1to2-UgData1.obj: UgData1.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgData1.obj -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgData1.Tpo -c -o uget_gtk_1to2-UgData1.obj `if test -f 'UgData1.c'; then $(CYGPATH_W) 'UgData1.c'; else $(CYGPATH_W) '$(srcdir)/UgData1.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgData1.Tpo $(DEPDIR)/uget_gtk_1to2-UgData1.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgData1.c' object='uget_gtk_1to2-UgData1.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgData1.obj `if test -f 'UgData1.c'; then $(CYGPATH_W) 'UgData1.c'; else $(CYGPATH_W) '$(srcdir)/UgData1.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgData1.obj `if test -f 'UgData1.c'; then $(CYGPATH_W) 'UgData1.c'; else $(CYGPATH_W) '$(srcdir)/UgData1.c'; fi` uget_gtk_1to2-UgData-download.o: UgData-download.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgData-download.o -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgData-download.Tpo -c -o uget_gtk_1to2-UgData-download.o `test -f 'UgData-download.c' || echo '$(srcdir)/'`UgData-download.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgData-download.Tpo $(DEPDIR)/uget_gtk_1to2-UgData-download.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgData-download.c' object='uget_gtk_1to2-UgData-download.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgData-download.o `test -f 'UgData-download.c' || echo '$(srcdir)/'`UgData-download.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgData-download.o `test -f 'UgData-download.c' || echo '$(srcdir)/'`UgData-download.c uget_gtk_1to2-UgData-download.obj: UgData-download.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgData-download.obj -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgData-download.Tpo -c -o uget_gtk_1to2-UgData-download.obj `if test -f 'UgData-download.c'; then $(CYGPATH_W) 'UgData-download.c'; else $(CYGPATH_W) '$(srcdir)/UgData-download.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgData-download.Tpo $(DEPDIR)/uget_gtk_1to2-UgData-download.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgData-download.c' object='uget_gtk_1to2-UgData-download.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgData-download.obj `if test -f 'UgData-download.c'; then $(CYGPATH_W) 'UgData-download.c'; else $(CYGPATH_W) '$(srcdir)/UgData-download.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgData-download.obj `if test -f 'UgData-download.c'; then $(CYGPATH_W) 'UgData-download.c'; else $(CYGPATH_W) '$(srcdir)/UgData-download.c'; fi` uget_gtk_1to2-UgDataset.o: UgDataset.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgDataset.o -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgDataset.Tpo -c -o uget_gtk_1to2-UgDataset.o `test -f 'UgDataset.c' || echo '$(srcdir)/'`UgDataset.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgDataset.Tpo $(DEPDIR)/uget_gtk_1to2-UgDataset.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgDataset.c' object='uget_gtk_1to2-UgDataset.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgDataset.o `test -f 'UgDataset.c' || echo '$(srcdir)/'`UgDataset.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgDataset.o `test -f 'UgDataset.c' || echo '$(srcdir)/'`UgDataset.c uget_gtk_1to2-UgDataset.obj: UgDataset.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgDataset.obj -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgDataset.Tpo -c -o uget_gtk_1to2-UgDataset.obj `if test -f 'UgDataset.c'; then $(CYGPATH_W) 'UgDataset.c'; else $(CYGPATH_W) '$(srcdir)/UgDataset.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgDataset.Tpo $(DEPDIR)/uget_gtk_1to2-UgDataset.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgDataset.c' object='uget_gtk_1to2-UgDataset.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgDataset.obj `if test -f 'UgDataset.c'; then $(CYGPATH_W) 'UgDataset.c'; else $(CYGPATH_W) '$(srcdir)/UgDataset.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgDataset.obj `if test -f 'UgDataset.c'; then $(CYGPATH_W) 'UgDataset.c'; else $(CYGPATH_W) '$(srcdir)/UgDataset.c'; fi` uget_gtk_1to2-UgMarkup.o: UgMarkup.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgMarkup.o -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgMarkup.Tpo -c -o uget_gtk_1to2-UgMarkup.o `test -f 'UgMarkup.c' || echo '$(srcdir)/'`UgMarkup.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgMarkup.Tpo $(DEPDIR)/uget_gtk_1to2-UgMarkup.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgMarkup.c' object='uget_gtk_1to2-UgMarkup.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgMarkup.o `test -f 'UgMarkup.c' || echo '$(srcdir)/'`UgMarkup.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgMarkup.o `test -f 'UgMarkup.c' || echo '$(srcdir)/'`UgMarkup.c uget_gtk_1to2-UgMarkup.obj: UgMarkup.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgMarkup.obj -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgMarkup.Tpo -c -o uget_gtk_1to2-UgMarkup.obj `if test -f 'UgMarkup.c'; then $(CYGPATH_W) 'UgMarkup.c'; else $(CYGPATH_W) '$(srcdir)/UgMarkup.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgMarkup.Tpo $(DEPDIR)/uget_gtk_1to2-UgMarkup.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgMarkup.c' object='uget_gtk_1to2-UgMarkup.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgMarkup.obj `if test -f 'UgMarkup.c'; then $(CYGPATH_W) 'UgMarkup.c'; else $(CYGPATH_W) '$(srcdir)/UgMarkup.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgMarkup.obj `if test -f 'UgMarkup.c'; then $(CYGPATH_W) 'UgMarkup.c'; else $(CYGPATH_W) '$(srcdir)/UgMarkup.c'; fi` uget_gtk_1to2-UgRegistry1.o: UgRegistry1.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgRegistry1.o -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgRegistry1.Tpo -c -o uget_gtk_1to2-UgRegistry1.o `test -f 'UgRegistry1.c' || echo '$(srcdir)/'`UgRegistry1.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgRegistry1.Tpo $(DEPDIR)/uget_gtk_1to2-UgRegistry1.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgRegistry1.c' object='uget_gtk_1to2-UgRegistry1.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgRegistry1.o `test -f 'UgRegistry1.c' || echo '$(srcdir)/'`UgRegistry1.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgRegistry1.o `test -f 'UgRegistry1.c' || echo '$(srcdir)/'`UgRegistry1.c uget_gtk_1to2-UgRegistry1.obj: UgRegistry1.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgRegistry1.obj -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgRegistry1.Tpo -c -o uget_gtk_1to2-UgRegistry1.obj `if test -f 'UgRegistry1.c'; then $(CYGPATH_W) 'UgRegistry1.c'; else $(CYGPATH_W) '$(srcdir)/UgRegistry1.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgRegistry1.Tpo $(DEPDIR)/uget_gtk_1to2-UgRegistry1.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgRegistry1.c' object='uget_gtk_1to2-UgRegistry1.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgRegistry1.obj `if test -f 'UgRegistry1.c'; then $(CYGPATH_W) 'UgRegistry1.c'; else $(CYGPATH_W) '$(srcdir)/UgRegistry1.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgRegistry1.obj `if test -f 'UgRegistry1.c'; then $(CYGPATH_W) 'UgRegistry1.c'; else $(CYGPATH_W) '$(srcdir)/UgRegistry1.c'; fi` uget_gtk_1to2-UgSetting.o: UgSetting.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgSetting.o -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgSetting.Tpo -c -o uget_gtk_1to2-UgSetting.o `test -f 'UgSetting.c' || echo '$(srcdir)/'`UgSetting.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgSetting.Tpo $(DEPDIR)/uget_gtk_1to2-UgSetting.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgSetting.c' object='uget_gtk_1to2-UgSetting.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgSetting.o `test -f 'UgSetting.c' || echo '$(srcdir)/'`UgSetting.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgSetting.o `test -f 'UgSetting.c' || echo '$(srcdir)/'`UgSetting.c uget_gtk_1to2-UgSetting.obj: UgSetting.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-UgSetting.obj -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-UgSetting.Tpo -c -o uget_gtk_1to2-UgSetting.obj `if test -f 'UgSetting.c'; then $(CYGPATH_W) 'UgSetting.c'; else $(CYGPATH_W) '$(srcdir)/UgSetting.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-UgSetting.Tpo $(DEPDIR)/uget_gtk_1to2-UgSetting.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='UgSetting.c' object='uget_gtk_1to2-UgSetting.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgSetting.obj `if test -f 'UgSetting.c'; then $(CYGPATH_W) 'UgSetting.c'; else $(CYGPATH_W) '$(srcdir)/UgSetting.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-UgSetting.obj `if test -f 'UgSetting.c'; then $(CYGPATH_W) 'UgSetting.c'; else $(CYGPATH_W) '$(srcdir)/UgSetting.c'; fi` uget_gtk_1to2-Ugtk1to2.o: Ugtk1to2.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-Ugtk1to2.o -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-Ugtk1to2.Tpo -c -o uget_gtk_1to2-Ugtk1to2.o `test -f 'Ugtk1to2.c' || echo '$(srcdir)/'`Ugtk1to2.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-Ugtk1to2.Tpo $(DEPDIR)/uget_gtk_1to2-Ugtk1to2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='Ugtk1to2.c' object='uget_gtk_1to2-Ugtk1to2.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-Ugtk1to2.o `test -f 'Ugtk1to2.c' || echo '$(srcdir)/'`Ugtk1to2.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-Ugtk1to2.o `test -f 'Ugtk1to2.c' || echo '$(srcdir)/'`Ugtk1to2.c uget_gtk_1to2-Ugtk1to2.obj: Ugtk1to2.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-Ugtk1to2.obj -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-Ugtk1to2.Tpo -c -o uget_gtk_1to2-Ugtk1to2.obj `if test -f 'Ugtk1to2.c'; then $(CYGPATH_W) 'Ugtk1to2.c'; else $(CYGPATH_W) '$(srcdir)/Ugtk1to2.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-Ugtk1to2.Tpo $(DEPDIR)/uget_gtk_1to2-Ugtk1to2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='Ugtk1to2.c' object='uget_gtk_1to2-Ugtk1to2.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-Ugtk1to2.obj `if test -f 'Ugtk1to2.c'; then $(CYGPATH_W) 'Ugtk1to2.c'; else $(CYGPATH_W) '$(srcdir)/Ugtk1to2.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-Ugtk1to2.obj `if test -f 'Ugtk1to2.c'; then $(CYGPATH_W) 'Ugtk1to2.c'; else $(CYGPATH_W) '$(srcdir)/Ugtk1to2.c'; fi` ../ui-gtk/uget_gtk_1to2-UgtkSetting.o: ../ui-gtk/UgtkSetting.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT ../ui-gtk/uget_gtk_1to2-UgtkSetting.o -MD -MP -MF ../ui-gtk/$(DEPDIR)/uget_gtk_1to2-UgtkSetting.Tpo -c -o ../ui-gtk/uget_gtk_1to2-UgtkSetting.o `test -f '../ui-gtk/UgtkSetting.c' || echo '$(srcdir)/'`../ui-gtk/UgtkSetting.c -@am__fastdepCC_TRUE@ $(am__mv) ../ui-gtk/$(DEPDIR)/uget_gtk_1to2-UgtkSetting.Tpo ../ui-gtk/$(DEPDIR)/uget_gtk_1to2-UgtkSetting.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../ui-gtk/UgtkSetting.c' object='../ui-gtk/uget_gtk_1to2-UgtkSetting.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o ../ui-gtk/uget_gtk_1to2-UgtkSetting.o `test -f '../ui-gtk/UgtkSetting.c' || echo '$(srcdir)/'`../ui-gtk/UgtkSetting.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o ../ui-gtk/uget_gtk_1to2-UgtkSetting.o `test -f '../ui-gtk/UgtkSetting.c' || echo '$(srcdir)/'`../ui-gtk/UgtkSetting.c ../ui-gtk/uget_gtk_1to2-UgtkSetting.obj: ../ui-gtk/UgtkSetting.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT ../ui-gtk/uget_gtk_1to2-UgtkSetting.obj -MD -MP -MF ../ui-gtk/$(DEPDIR)/uget_gtk_1to2-UgtkSetting.Tpo -c -o ../ui-gtk/uget_gtk_1to2-UgtkSetting.obj `if test -f '../ui-gtk/UgtkSetting.c'; then $(CYGPATH_W) '../ui-gtk/UgtkSetting.c'; else $(CYGPATH_W) '$(srcdir)/../ui-gtk/UgtkSetting.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) ../ui-gtk/$(DEPDIR)/uget_gtk_1to2-UgtkSetting.Tpo ../ui-gtk/$(DEPDIR)/uget_gtk_1to2-UgtkSetting.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../ui-gtk/UgtkSetting.c' object='../ui-gtk/uget_gtk_1to2-UgtkSetting.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o ../ui-gtk/uget_gtk_1to2-UgtkSetting.obj `if test -f '../ui-gtk/UgtkSetting.c'; then $(CYGPATH_W) '../ui-gtk/UgtkSetting.c'; else $(CYGPATH_W) '$(srcdir)/../ui-gtk/UgtkSetting.c'; fi` + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o ../ui-gtk/uget_gtk_1to2-UgtkSetting.obj `if test -f '../ui-gtk/UgtkSetting.c'; then $(CYGPATH_W) '../ui-gtk/UgtkSetting.c'; else $(CYGPATH_W) '$(srcdir)/../ui-gtk/UgtkSetting.c'; fi` uget_gtk_1to2-main.o: main.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-main.o -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-main.Tpo -c -o uget_gtk_1to2-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-main.Tpo $(DEPDIR)/uget_gtk_1to2-main.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='uget_gtk_1to2-main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c uget_gtk_1to2-main.obj: main.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -MT uget_gtk_1to2-main.obj -MD -MP -MF $(DEPDIR)/uget_gtk_1to2-main.Tpo -c -o uget_gtk_1to2-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/uget_gtk_1to2-main.Tpo $(DEPDIR)/uget_gtk_1to2-main.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='uget_gtk_1to2-main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uget_gtk_1to2_CPPFLAGS) $(CPPFLAGS) $(uget_gtk_1to2_CFLAGS) $(CFLAGS) -c -o uget_gtk_1to2-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -550,15 +541,11 @@ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -567,11 +554,29 @@ here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -634,7 +639,6 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -rm -f ../ui-gtk/$(DEPDIR)/$(am__dirstamp) -rm -f ../ui-gtk/$(am__dirstamp) maintainer-clean-generic: @@ -645,7 +649,6 @@ clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am - -rm -rf ../ui-gtk/$(DEPDIR) ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -691,7 +694,6 @@ installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ../ui-gtk/$(DEPDIR) ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -711,18 +713,21 @@ .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic ctags distclean distclean-compile \ - distclean-generic distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-binPROGRAMS \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-binPROGRAMS +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ + distclean distclean-compile distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-binPROGRAMS install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS + +.PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru uget-2.0.2/ui-gtk-1to2/UgCategory.c uget-2.2.2/ui-gtk-1to2/UgCategory.c --- uget-2.0.2/ui-gtk-1to2/UgCategory.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgCategory.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -67,7 +67,7 @@ (UgInitFunc) ug_category_init, (UgFinalizeFunc) ug_category_finalize, - (UgAssignFunc) NULL, + (UgAssign1Func) NULL, }; // extern const UgData1Interface* ug_category_iface_pointer = &ug_category_iface; @@ -368,7 +368,7 @@ (UgInitFunc) NULL, (UgFinalizeFunc) ug_relation_final, - (UgAssignFunc) NULL, + (UgAssign1Func) NULL, }; // extern const UgData1Interface* ug_relation_iface_pointer = &ug_relation_iface; diff -Nru uget-2.0.2/ui-gtk-1to2/UgCategory.h uget-2.2.2/ui-gtk-1to2/UgCategory.h --- uget-2.0.2/ui-gtk-1to2/UgCategory.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgCategory.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk-1to2/UgData1.c uget-2.2.2/ui-gtk-1to2/UgData1.c --- uget-2.0.2/ui-gtk-1to2/UgData1.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgData1.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -112,7 +112,7 @@ gpointer ug_data1_copy (gpointer data) { const UgData1Interface* iface; - UgAssignFunc assign; + UgAssign1Func assign; gpointer new_data; if (data) { @@ -132,7 +132,7 @@ //void ug_data1_assign (UgData* dest, UgData* src) void ug_data1_assign (gpointer data, gpointer src) { - UgAssignFunc assign; + UgAssign1Func assign; if (data) { assign = ((UgData1*)data)->iface->assign; diff -Nru uget-2.0.2/ui-gtk-1to2/UgData1.h uget-2.2.2/ui-gtk-1to2/UgData1.h --- uget-2.0.2/ui-gtk-1to2/UgData1.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgData1.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -45,16 +45,16 @@ #endif typedef struct UgDataEntry UgDataEntry; -typedef struct UgData1Interface UgData1Interface; +typedef struct UgData1Interface UgData1Interface; typedef struct UgData1 UgData1; typedef struct UgDatalist UgDatalist; -typedef enum UgType UgType; +typedef enum UgType1 UgType1; // UgData1Interface typedef void (*UgInitFunc) (void* instance); typedef void (*UgFinalizeFunc) (void* instance); -typedef void (*UgAssignFunc) (void* instance, void* src_instance); +typedef void (*UgAssign1Func) (void* instance, void* src_instance); typedef void (*UgParseFunc) (void* instance, void* user_data); typedef void (*UgWriteFunc) (void* instance, void* user_data); // UgParseMarkup : how to parse data in markup. @@ -64,7 +64,7 @@ // notify callback typedef void (*UgNotifyFunc) (void* user_data); -enum UgType +enum UgType1 { UG_TYPE_NONE, UG_TYPE_STRING, @@ -110,7 +110,7 @@ { char* name; // tag name int offset; - UgType type; + UgType1 type; const void* parser; // How to parse data. const void* writer; // How to write data. @@ -130,7 +130,7 @@ UgInitFunc init; UgFinalizeFunc finalize; - UgAssignFunc assign; // overwrite dest by src + UgAssign1Func assign; // overwrite dest by src }; void ug_data1_interface_register (const UgData1Interface* iface); diff -Nru uget-2.0.2/ui-gtk-1to2/UgData-download.c uget-2.2.2/ui-gtk-1to2/UgData-download.c --- uget-2.0.2/ui-gtk-1to2/UgData-download.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgData-download.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -77,7 +77,7 @@ (UgInitFunc) ug_common_init, (UgFinalizeFunc) ug_common_final, - (UgAssignFunc) NULL, + (UgAssign1Func) NULL, }; @@ -132,7 +132,7 @@ (UgInitFunc) NULL, (UgFinalizeFunc) ug_proxy_final, - (UgAssignFunc) NULL, + (UgAssign1Func) NULL, }; @@ -173,7 +173,7 @@ (UgInitFunc) NULL, (UgFinalizeFunc) NULL, - (UgAssignFunc) NULL, + (UgAssign1Func) NULL, }; @@ -206,7 +206,7 @@ (UgInitFunc) ug_http_init, (UgFinalizeFunc) ug_http_final, - (UgAssignFunc) NULL, + (UgAssign1Func) NULL, }; @@ -249,7 +249,7 @@ (UgInitFunc) NULL, (UgFinalizeFunc) ug_ftp_final, - (UgAssignFunc) NULL, + (UgAssign1Func) NULL, }; @@ -276,7 +276,7 @@ (UgInitFunc) NULL, (UgFinalizeFunc) NULL, - (UgAssignFunc) NULL, + (UgAssign1Func) NULL, }; diff -Nru uget-2.0.2/ui-gtk-1to2/UgData-download.h uget-2.2.2/ui-gtk-1to2/UgData-download.h --- uget-2.0.2/ui-gtk-1to2/UgData-download.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgData-download.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk-1to2/UgDataset.c uget-2.2.2/ui-gtk-1to2/UgDataset.c --- uget-2.0.2/ui-gtk-1to2/UgDataset.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgDataset.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -66,7 +66,7 @@ (UgInitFunc) ug_dataset_init, (UgFinalizeFunc) ug_dataset_finalize, - (UgAssignFunc) ug_dataset_assign, + (UgAssign1Func) ug_dataset_assign, }; diff -Nru uget-2.0.2/ui-gtk-1to2/UgDataset.h uget-2.2.2/ui-gtk-1to2/UgDataset.h --- uget-2.0.2/ui-gtk-1to2/UgDataset.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgDataset.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk-1to2/UgMarkup.c uget-2.2.2/ui-gtk-1to2/UgMarkup.c --- uget-2.0.2/ui-gtk-1to2/UgMarkup.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgMarkup.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk-1to2/UgMarkup.h uget-2.2.2/ui-gtk-1to2/UgMarkup.h --- uget-2.0.2/ui-gtk-1to2/UgMarkup.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgMarkup.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk-1to2/UgRegistry1.c uget-2.2.2/ui-gtk-1to2/UgRegistry1.c --- uget-2.0.2/ui-gtk-1to2/UgRegistry1.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgRegistry1.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk-1to2/UgRegistry1.h uget-2.2.2/ui-gtk-1to2/UgRegistry1.h --- uget-2.0.2/ui-gtk-1to2/UgRegistry1.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgRegistry1.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk-1to2/UgSetting.c uget-2.2.2/ui-gtk-1to2/UgSetting.c --- uget-2.0.2/ui-gtk-1to2/UgSetting.c 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgSetting.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk-1to2/UgSetting.h uget-2.2.2/ui-gtk-1to2/UgSetting.h --- uget-2.0.2/ui-gtk-1to2/UgSetting.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/UgSetting.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2005-2015 by C.H. Huang + * Copyright (C) 2005-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or diff -Nru uget-2.0.2/ui-gtk-1to2/Ugtk1to2.c uget-2.2.2/ui-gtk-1to2/Ugtk1to2.c --- uget-2.0.2/ui-gtk-1to2/Ugtk1to2.c 2015-03-10 01:20:59.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/Ugtk1to2.c 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2013-2015 by C.H. Huang + * Copyright (C) 2013-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -79,7 +79,7 @@ setting->summary.uri = setting1->summary.url; setting->summary.message = setting1->summary.message; // DownloadColumn - setting->download_column.completed = setting1->download_column.completed; + setting->download_column.complete = setting1->download_column.completed; setting->download_column.total = setting1->download_column.total; setting->download_column.percent = setting1->download_column.percent; setting->download_column.elapsed = setting1->download_column.elapsed; @@ -113,7 +113,7 @@ setting->ui.start_in_offline_mode = setting1->ui.start_in_offline_mode; setting->ui.start_notification = setting1->ui.start_notification; setting->ui.sound_notification = setting1->ui.sound_notification; - setting->ui.apply_recently = setting1->ui.apply_recently; + setting->ui.apply_recent = setting1->ui.apply_recently; #ifdef HAVE_APP_INDICATOR setting->ui.app_indicator = TRUE; #endif @@ -194,6 +194,7 @@ union { UgetProgress* progress; + UgetRelation* relation; UgetCommon* common; UgetProxy* proxy; UgetHttp* http; @@ -202,28 +203,29 @@ old.relation = ug_dataset_get (dataset, UgRelationInfo, 0); if (old.relation) { + new.relation = ug_info_realloc (node->info, UgetRelationInfo); if (old.relation->hints & UG_HINT_PAUSED) - node->state |= UGET_STATE_PAUSED; + new.relation->group |= UGET_GROUP_PAUSED; if (old.relation->hints & UG_HINT_ERROR) - node->state |= UGET_STATE_ERROR; + new.relation->group |= UGET_GROUP_ERROR; if (old.relation->hints & UG_HINT_COMPLETED) - node->state |= UGET_STATE_COMPLETED; + new.relation->group |= UGET_GROUP_COMPLETED; if (old.relation->hints & UG_HINT_FINISHED) - node->state |= UGET_STATE_FINISHED; + new.relation->group |= UGET_GROUP_FINISHED; else if (old.relation->hints & UG_HINT_RECYCLED) - node->state |= UGET_STATE_RECYCLED; + new.relation->group |= UGET_GROUP_RECYCLED; else - node->state |= UGET_STATE_QUEUING; + new.relation->group |= UGET_GROUP_QUEUING; } old.common = ug_dataset_get (dataset, UgCommonInfo, 0); if (old.common) { - node->name = old.common->name; + new.common = ug_info_realloc (node->info, UgetCommonInfo); + new.common->name = old.common->name; old.common->name = NULL; - if (node->name == NULL && old.common->file) - node->name = ug_strdup (old.common->file); - new.common = ug_info_realloc (&node->info, UgetCommonInfo); + if (new.common->name == NULL && old.common->file) + new.common->name = ug_strdup (old.common->file); new.common->uri = old.common->url; old.common->url = NULL; new.common->mirrors = old.common->mirrors; @@ -249,7 +251,7 @@ old.proxy = ug_dataset_get (dataset, UgProxyInfo, 0); if (old.proxy) { - new.proxy = ug_info_realloc (&node->info, UgetProxyInfo); + new.proxy = ug_info_realloc (node->info, UgetProxyInfo); new.proxy->host = old.proxy->host; old.proxy->host = NULL; new.proxy->port = old.proxy->port; @@ -262,7 +264,7 @@ old.http = ug_dataset_get (dataset, UgHttpInfo, 0); if (old.http) { - new.http = ug_info_realloc (&node->info, UgetHttpInfo); + new.http = ug_info_realloc (node->info, UgetHttpInfo); new.http->user = old.http->user; old.http->user = NULL; new.http->password = old.http->password; @@ -285,7 +287,7 @@ old.ftp = ug_dataset_get (dataset, UgFtpInfo, 0); if (old.ftp) { - new.ftp = ug_info_realloc (&node->info, UgetFtpInfo); + new.ftp = ug_info_realloc (node->info, UgetFtpInfo); new.ftp->user = old.ftp->user; old.ftp->user = NULL; new.ftp->password = old.ftp->password; @@ -295,15 +297,15 @@ old.progress = ug_dataset_get (dataset, UgProgressInfo, 0); if (old.progress) { - new.progress = ug_info_realloc (&node->info, UgetProgressInfo); + new.progress = ug_info_realloc (node->info, UgetProgressInfo); new.progress->complete = old.progress->complete; new.progress->total = old.progress->total; new.progress->complete = old.progress->complete; new.progress->percent = old.progress->percent; new.progress->uploaded = old.progress->uploaded; new.progress->ratio = old.progress->ratio; - new.progress->consume_time = old.progress->consume_time; - new.progress->remain_time = old.progress->remain_time; + new.progress->elapsed = old.progress->consume_time; + new.progress->left = old.progress->remain_time; } } @@ -312,16 +314,17 @@ GList* link; UgetNode* node; UgetNode* dnode; + UgetCommon* common; UgetCategory* category; node = uget_node_new (NULL); uget_node_set_by_dataset (node, category1->defaults); - category = ug_info_realloc (&node->info, UgetCategoryInfo); + category = ug_info_realloc (node->info, UgetCategoryInfo); category->active_limit = category1->active_limit; category->finished_limit = category1->finished_limit; category->recycled_limit = category1->recycled_limit; - node->type = UGET_NODE_CATEGORY; - node->name = category1->name; + common = ug_info_realloc(node->info, UgetCommonInfo); + common->name = category1->name; category1->name = NULL; // other *(char**)ug_array_alloc (&category->schemes, 1) = ug_strdup ("http"); @@ -333,20 +336,20 @@ // for (link = category1->indices; link; link = link->next) { dnode = uget_node_new (NULL); - dnode->type = UGET_NODE_DOWNLOAD; uget_node_set_by_dataset (dnode, (UgDataset*) link->data); uget_node_append (node, dnode); } return node; } -Ugtk1to2* ugtk_1to2_new (void) +Ugtk1to2* ugtk_1to2_new (const char* config_path) { Ugtk1to2* u1t2; u1t2 = g_malloc0 (sizeof (Ugtk1to2)); ug_setting_init (&u1t2->setting1); uget_node_init (&u1t2->real, NULL); + u1t2->config_path = g_strdup (config_path); return u1t2; } @@ -361,8 +364,8 @@ int result; // load setting - path = g_build_filename (g_get_user_config_dir (), - UGTK_APP_DIR, UGTK_APP_SETTING_FILE1, NULL); + path = g_build_filename (u1t2->config_path, + UGTK_APP_SETTING_FILE1, NULL); result = ug_setting_load (&u1t2->setting1, path); g_free (path); if (result == TRUE) @@ -376,8 +379,8 @@ int result; // save setting - path = g_build_filename (g_get_user_config_dir (), - UGTK_APP_DIR, UGTK_APP_SETTING_FILE, NULL); + path = g_build_filename (u1t2->config_path, + UGTK_APP_SETTING_FILE, NULL); result = ugtk_setting_save (&u1t2->setting, path); g_free (path); return result; @@ -392,13 +395,13 @@ gchar* file; // load all download from file - file = g_build_filename (g_get_user_config_dir (), - UGTK_APP_DIR, UGTK_APP_DOWNLOAD_FILE, NULL); + file = g_build_filename (u1t2->config_path, + UGTK_APP_DOWNLOAD_FILE, NULL); download_list = ug_download_list_load (file); g_free (file); // load all categories - file = g_build_filename (g_get_user_config_dir (), - UGTK_APP_DIR, UGTK_APP_CATEGORY_FILE, NULL); + file = g_build_filename (u1t2->config_path, + UGTK_APP_CATEGORY_FILE, NULL); category_list = ug_category_list_load (file); g_free (file); // link and add tasks to categories @@ -426,8 +429,8 @@ UgetNode* cnode; UgJsonFile* jfile; - path_base = g_build_filename (g_get_user_config_dir (), - UGTK_APP_DIR, "category", NULL); + path_base = g_build_filename (u1t2->config_path, + "category", NULL); ug_create_dir_all (path_base, -1); jfile = ug_json_file_new (4096); diff -Nru uget-2.0.2/ui-gtk-1to2/Ugtk1to2.h uget-2.2.2/ui-gtk-1to2/Ugtk1to2.h --- uget-2.0.2/ui-gtk-1to2/Ugtk1to2.h 2015-01-17 14:28:58.000000000 +0000 +++ uget-2.2.2/ui-gtk-1to2/Ugtk1to2.h 2019-05-19 16:49:07.000000000 +0000 @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2013-2015 by C.H. Huang + * Copyright (C) 2013-2019 by C.H. Huang * plushuang.tw@gmail.com * * This library is free software; you can redistribute it and/or @@ -54,9 +54,10 @@ UgtkSetting setting; UgetNode real; + char* config_path; }; -Ugtk1to2* ugtk_1to2_new (void); +Ugtk1to2* ugtk_1to2_new (const char* config_path); void ugtk_1to2_free (Ugtk1to2* u1t2); // return TRUE/FALSE diff -Nru uget-2.0.2/Windows/CodeBlocks/mingw-config.txt uget-2.2.2/Windows/CodeBlocks/mingw-config.txt --- uget-2.0.2/Windows/CodeBlocks/mingw-config.txt 2013-08-26 00:04:50.000000000 +0000 +++ uget-2.2.2/Windows/CodeBlocks/mingw-config.txt 2019-05-19 16:49:05.000000000 +0000 @@ -1,10 +1,10 @@ --- include dir --- -..\..\uglib -D:\devpack\gtk2\include\glib-2.0 -D:\devpack\gtk2\lib\glib-2.0\include +../../uglib +D:/msys64/mingw32/include/glib-2.0 +D:/msys64/mingw32/lib/glib-2.0/include --- lib dir --- -D:\devpack\gtk2\lib +D:/msys64/mingw32/lib Debug Release diff -Nru uget-2.0.2/Windows/CodeBlocks/test-info.cbp uget-2.2.2/Windows/CodeBlocks/test-info.cbp --- uget-2.0.2/Windows/CodeBlocks/test-info.cbp 2014-03-09 13:24:15.000000000 +0000 +++ uget-2.2.2/Windows/CodeBlocks/test-info.cbp 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ - - - - - - diff -Nru uget-2.0.2/Windows/CodeBlocks/test-json.cbp uget-2.2.2/Windows/CodeBlocks/test-json.cbp --- uget-2.0.2/Windows/CodeBlocks/test-json.cbp 2014-03-09 13:24:15.000000000 +0000 +++ uget-2.2.2/Windows/CodeBlocks/test-json.cbp 2019-05-19 16:49:05.000000000 +0000 @@ -35,14 +35,14 @@ - - - + + + - + - +