mirror of
https://github.com/qbittorrent/qBittorrent
synced 2024-11-03 00:09:23 +01:00
- FEATURE: Added zip support in search plugins manager (can put .py & .png inside)
This commit is contained in:
parent
d86335a58e
commit
69fa916e26
4
INSTALL
4
INSTALL
@ -29,6 +29,10 @@ Dependencies:
|
||||
- python >= 2.3 (needed by search engine)
|
||||
|
||||
- libmagick++ (advised, not required)
|
||||
* Needed for favicons support (RSS / Search plugins)
|
||||
|
||||
- libzzip (advised, not required)
|
||||
* Needed for zip support (Search plugins)
|
||||
|
||||
NOTE FOR NON-KDE USERS:
|
||||
- qt4-qtconfig package is advised when using other systems than KDE.
|
||||
|
3
TODO
3
TODO
@ -76,7 +76,7 @@ LANGUAGES UPDATED:
|
||||
- Slovak *BETA6*
|
||||
- Ukrainian *BETA6*
|
||||
- Chinese (simplified) *BETA4*
|
||||
- Hungarian *BETA4*
|
||||
- Hungarian *BETA6*
|
||||
- Italian *BETA6*
|
||||
- Polish *BETA6*
|
||||
- Portuguese *BETA5*
|
||||
@ -94,6 +94,7 @@ beta6->beta7 changelog:
|
||||
- FEATURE: Made search engine plugin install more reliable
|
||||
- FEATURE: Allow to drag'n drop plugin to list for install/update
|
||||
- FEATURE: Added some search plugins to http://plugins.qbittorrent.org
|
||||
- FEATURE: Added zip support in search plugins manager (can put .py & .png inside)
|
||||
- BUGFIX: Updated man page / README / INSTALL
|
||||
- BUGFIX: Paused torrents could be displayed as connected for a sec after checking
|
||||
- BUGFIX: 'Unknown' is now displayed in search results columns where value is -1
|
||||
|
98
configure
vendored
98
configure
vendored
@ -27,6 +27,9 @@ Dependency options:
|
||||
--disable-libmagick Disable use of libmagick
|
||||
--with-libmagick-inc=[path] Path to libmagick++ include files
|
||||
--with-libmagick-lib=[path] Path to libmagick++ library files
|
||||
--disable-libzzip Disable use of libzzip
|
||||
--with-libzzip-inc=[path] Path to libzzip++ include files
|
||||
--with-libzzip-lib=[path] Path to libzzip++ library files
|
||||
|
||||
EOT
|
||||
}
|
||||
@ -188,6 +191,21 @@ while [ $# -gt 0 ]; do
|
||||
shift
|
||||
;;
|
||||
|
||||
--disable-libzzip)
|
||||
QC_DISABLE_libzzip="Y"
|
||||
shift
|
||||
;;
|
||||
|
||||
--with-libzzip-inc=*)
|
||||
QC_WITH_LIBZZIP_INC=$optarg
|
||||
shift
|
||||
;;
|
||||
|
||||
--with-libzzip-lib=*)
|
||||
QC_WITH_LIBZZIP_LIB=$optarg
|
||||
shift
|
||||
;;
|
||||
|
||||
--verbose)
|
||||
QC_VERBOSE="Y"
|
||||
shift
|
||||
@ -218,6 +236,9 @@ echo QC_WITH_LIBCOMMONCPP2_LIB=$QC_WITH_LIBCOMMONCPP2_LIB
|
||||
echo QC_DISABLE_libmagick=$QC_DISABLE_libmagick
|
||||
echo QC_WITH_LIBMAGICK_INC=$QC_WITH_LIBMAGICK_INC
|
||||
echo QC_WITH_LIBMAGICK_LIB=$QC_WITH_LIBMAGICK_LIB
|
||||
echo QC_DISABLE_libzzip=$QC_DISABLE_libzzip
|
||||
echo QC_WITH_LIBZZIP_INC=$QC_WITH_LIBZZIP_INC
|
||||
echo QC_WITH_LIBZZIP_LIB=$QC_WITH_LIBZZIP_LIB
|
||||
echo
|
||||
fi
|
||||
|
||||
@ -618,11 +639,82 @@ public:
|
||||
magickConfig.waitForStarted();
|
||||
magickConfig.waitForFinished();
|
||||
QByteArray result = magickConfig.readAll();
|
||||
result = result.replace("\n", "");
|
||||
conf->addLib(result.data());
|
||||
conf->addDefine("HAVE_MAGICK");
|
||||
return true;
|
||||
}
|
||||
};
|
||||
#line 1 "libzzip.qcm"
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: libzzip
|
||||
arg: with-libzzip-inc=[path], Path to libzzip++ include files
|
||||
arg: with-libzzip-lib=[path], Path to libzzip++ library files
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
#include <QProcess>
|
||||
class qc_libzzip : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_libzzip(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "Zzip library (libzzip)"; }
|
||||
QString shortname() const { return "libzzip"; }
|
||||
QString checkString() const {
|
||||
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
|
||||
return "";
|
||||
return ConfObj::checkString();
|
||||
}
|
||||
bool exec(){
|
||||
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
|
||||
return false;
|
||||
QString s;
|
||||
s = conf->getenv("QC_WITH_LIBZZIP_INC");
|
||||
if(!s.isEmpty()) {
|
||||
if(!conf->checkHeader(s, "zzip/zzip.h")) {
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
QStringList sl;
|
||||
sl << "/usr/include";
|
||||
sl << "/usr/local/include";
|
||||
bool found = false;
|
||||
foreach(s, sl){
|
||||
if(conf->checkHeader(s, "zzip/zzip.h")){
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!found)
|
||||
return false;
|
||||
}
|
||||
conf->addIncludePath(s);
|
||||
|
||||
s = conf->getenv("QC_WITH_LIBZZIP_LIB");
|
||||
if(!s.isEmpty()) {
|
||||
if(!QFile::exists(s+QString("libzzip.so"))){
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
QStringList sl;
|
||||
sl << "/usr/lib/";
|
||||
sl << "/usr/local/lib/";
|
||||
bool found = false;
|
||||
foreach(s, sl){
|
||||
if(QFile::exists(s+QString("libzzip.so"))){
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!found)
|
||||
return false;
|
||||
}
|
||||
conf->addLib(QString("-L") + s);
|
||||
conf->addLib("-lzzip");
|
||||
conf->addDefine("HAVE_ZZIP");
|
||||
return true;
|
||||
}
|
||||
};
|
||||
#line 1 "python.qcm"
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
@ -661,6 +753,9 @@ cat >$1/modules_new.cpp <<EOT
|
||||
o = new qc_libmagick(conf);
|
||||
o->required = false;
|
||||
o->disabled = false;
|
||||
o = new qc_libzzip(conf);
|
||||
o->required = false;
|
||||
o->disabled = false;
|
||||
o = new qc_python(conf);
|
||||
o->required = true;
|
||||
o->disabled = false;
|
||||
@ -1618,6 +1713,9 @@ export QC_WITH_LIBCOMMONCPP2_LIB
|
||||
export QC_DISABLE_libmagick
|
||||
export QC_WITH_LIBMAGICK_INC
|
||||
export QC_WITH_LIBMAGICK_LIB
|
||||
export QC_DISABLE_libzzip
|
||||
export QC_WITH_LIBZZIP_INC
|
||||
export QC_WITH_LIBZZIP_LIB
|
||||
export QC_VERBOSE
|
||||
rm -rf .qconftemp
|
||||
(
|
||||
|
@ -16,6 +16,7 @@
|
||||
<required/>
|
||||
</dep>
|
||||
<dep type='libmagick'/>
|
||||
<dep type='libzzip'/>
|
||||
<dep type='python'>
|
||||
<required/>
|
||||
</dep>
|
||||
|
@ -69,6 +69,7 @@ public:
|
||||
magickConfig.waitForStarted();
|
||||
magickConfig.waitForFinished();
|
||||
QByteArray result = magickConfig.readAll();
|
||||
result = result.replace("\n", "");
|
||||
conf->addLib(result.data());
|
||||
conf->addDefine("HAVE_MAGICK");
|
||||
return true;
|
||||
|
69
qcm/libzzip.qcm
Normal file
69
qcm/libzzip.qcm
Normal file
@ -0,0 +1,69 @@
|
||||
/*
|
||||
-----BEGIN QCMOD-----
|
||||
name: libzzip
|
||||
arg: with-libzzip-inc=[path], Path to libzzip++ include files
|
||||
arg: with-libzzip-lib=[path], Path to libzzip++ library files
|
||||
-----END QCMOD-----
|
||||
*/
|
||||
#include <QProcess>
|
||||
class qc_libzzip : public ConfObj
|
||||
{
|
||||
public:
|
||||
qc_libzzip(Conf *c) : ConfObj(c) {}
|
||||
QString name() const { return "Zzip library (libzzip)"; }
|
||||
QString shortname() const { return "libzzip"; }
|
||||
QString checkString() const {
|
||||
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
|
||||
return "";
|
||||
return ConfObj::checkString();
|
||||
}
|
||||
bool exec(){
|
||||
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
|
||||
return false;
|
||||
QString s;
|
||||
s = conf->getenv("QC_WITH_LIBZZIP_INC");
|
||||
if(!s.isEmpty()) {
|
||||
if(!conf->checkHeader(s, "zzip/zzip.h")) {
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
QStringList sl;
|
||||
sl << "/usr/include";
|
||||
sl << "/usr/local/include";
|
||||
bool found = false;
|
||||
foreach(s, sl){
|
||||
if(conf->checkHeader(s, "zzip/zzip.h")){
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!found)
|
||||
return false;
|
||||
}
|
||||
conf->addIncludePath(s);
|
||||
|
||||
s = conf->getenv("QC_WITH_LIBZZIP_LIB");
|
||||
if(!s.isEmpty()) {
|
||||
if(!QFile::exists(s+QString("libzzip.so"))){
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
QStringList sl;
|
||||
sl << "/usr/lib/";
|
||||
sl << "/usr/local/lib/";
|
||||
bool found = false;
|
||||
foreach(s, sl){
|
||||
if(QFile::exists(s+QString("libzzip.so"))){
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!found)
|
||||
return false;
|
||||
}
|
||||
conf->addLib(QString("-L") + s);
|
||||
conf->addLib("-lzzip");
|
||||
conf->addDefine("HAVE_ZZIP");
|
||||
return true;
|
||||
}
|
||||
};
|
@ -35,6 +35,10 @@
|
||||
using namespace Magick;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ZZIP
|
||||
#include <zzip/zzip.h>
|
||||
#endif
|
||||
|
||||
#define ENGINE_NAME 0
|
||||
#define ENGINE_URL 1
|
||||
#define ENGINE_STATE 2
|
||||
@ -79,8 +83,16 @@ void engineSelectDlg::dropEvent(QDropEvent *event) {
|
||||
downloader->downloadUrl(file);
|
||||
continue;
|
||||
}
|
||||
if(file.endsWith(".py"))
|
||||
installPlugin(file);
|
||||
if(file.endsWith(".py")) {
|
||||
QString plugin_name = file.split(QDir::separator()).last();
|
||||
plugin_name.replace(".py", "");
|
||||
installPlugin(file, plugin_name);
|
||||
}
|
||||
#ifdef HAVE_ZZIP
|
||||
if(file.endsWith(".zip")) {
|
||||
installZipPlugin(file);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -291,7 +303,6 @@ void engineSelectDlg::loadSupportedSearchEngines(bool first) {
|
||||
QString nameUrlCouple(e);
|
||||
QStringList line = nameUrlCouple.split('|');
|
||||
if(line.size() != 2) continue;
|
||||
// Download favicon
|
||||
QString enabledTxt;
|
||||
if(installed_engines.value(id, true)) {
|
||||
enabledTxt = tr("True");
|
||||
@ -327,17 +338,132 @@ QList<QTreeWidgetItem*> engineSelectDlg::findItemsWithUrl(QString url){
|
||||
return res;
|
||||
}
|
||||
|
||||
QTreeWidgetItem* engineSelectDlg::findItemWithID(QString id){
|
||||
QList<QTreeWidgetItem*> res;
|
||||
for(int i=0; i<pluginsTree->topLevelItemCount(); ++i) {
|
||||
QTreeWidgetItem *item = pluginsTree->topLevelItem(i);
|
||||
if(id == item->text(ENGINE_ID))
|
||||
return item;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool engineSelectDlg::isUpdateNeeded(QString plugin_name, float new_version) const {
|
||||
float old_version = misc::getPluginVersion(misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py");
|
||||
qDebug("IsUpdate needed? tobeinstalled: %.2f, alreadyinstalled: %.2f", new_version, old_version);
|
||||
return (new_version > old_version);
|
||||
}
|
||||
|
||||
void engineSelectDlg::installPlugin(QString path) {
|
||||
if(!path.endsWith(".py")) return;
|
||||
#ifdef HAVE_ZZIP
|
||||
void engineSelectDlg::installZipPlugin(QString path) {
|
||||
QStringList plugins;
|
||||
QStringList favicons;
|
||||
ZZIP_DIR* dir = zzip_dir_open(path.toUtf8().data(), 0);
|
||||
if(!dir) {
|
||||
QMessageBox::warning(this, tr("Search plugin install")+" -- "+tr("qBittorrent"), tr("Search engine plugin archive could not be read."));
|
||||
return;
|
||||
}
|
||||
ZZIP_DIRENT dirent;
|
||||
while(zzip_dir_read(dir, &dirent)) {
|
||||
/* show info for first file */
|
||||
QString name(dirent.d_name);
|
||||
if(name.endsWith(".py")) {
|
||||
plugins << name;
|
||||
} else {
|
||||
if(name.endsWith(".png")) {
|
||||
favicons << name;
|
||||
}
|
||||
}
|
||||
}
|
||||
QString plugin;
|
||||
std::cout << dirent.d_name << std::endl;
|
||||
ZZIP_FILE* fp = zzip_file_open(dir, dirent.d_name, 0);
|
||||
if (fp) {
|
||||
char buf[10];
|
||||
zzip_ssize_t len = zzip_file_read(fp, buf, 10);
|
||||
if (len) {
|
||||
/* show head of README */
|
||||
std::cout << buf;
|
||||
}
|
||||
zzip_file_close(fp);
|
||||
std::cout << std::endl;
|
||||
}
|
||||
foreach(plugin, plugins) {
|
||||
QString plugin_name = plugin.split(QDir::separator()).last();
|
||||
plugin_name.chop(3); // Remove .py extension
|
||||
qDebug("Detected plugin %s in archive", plugin_name.toUtf8().data());
|
||||
ZZIP_FILE* fp = zzip_file_open(dir, plugin.toUtf8().data(), 0);
|
||||
if(fp) {
|
||||
QTemporaryFile *tmpfile = new QTemporaryFile();
|
||||
QString tmpPath;
|
||||
// Write file
|
||||
if(tmpfile->open()) {
|
||||
tmpPath = tmpfile->fileName();
|
||||
char buf[255];
|
||||
zzip_ssize_t len = zzip_file_read(fp, buf, 255);
|
||||
while(len) {
|
||||
tmpfile->write(buf, len);
|
||||
len = zzip_file_read(fp, buf, 255);
|
||||
}
|
||||
zzip_file_close(fp);
|
||||
tmpfile->close();
|
||||
} else {
|
||||
qDebug("Could not open tmp file");
|
||||
QMessageBox::warning(this, tr("Search plugin install")+" -- "+tr("qBittorrent"), tr("%1 search engine plugin could not be installed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
|
||||
delete tmpfile;
|
||||
continue;
|
||||
}
|
||||
// Install plugin
|
||||
installPlugin(tmpPath, plugin_name);
|
||||
qDebug("installPlugin() finished");
|
||||
delete tmpfile;
|
||||
qDebug("Deleted tmpfile");
|
||||
} else {
|
||||
qDebug("Cannot read file in archive");
|
||||
QMessageBox::warning(this, tr("Search plugin install")+" -- "+tr("qBittorrent"), tr("%1 search engine plugin could not be installed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
|
||||
}
|
||||
}
|
||||
QString favicon;
|
||||
foreach(favicon, favicons) {
|
||||
qDebug("Detected favicon %s in archive", favicon.toUtf8().data());
|
||||
// Ok we have a favicon here
|
||||
QString plugin_name = favicon.split(QDir::separator()).last();
|
||||
plugin_name.chop(4); // Remove .png extension
|
||||
if(!QFile::exists(misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py"))
|
||||
continue;
|
||||
// Check if we already have a favicon for this plugin
|
||||
QString iconPath = misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+plugin_name+".png";
|
||||
if(QFile::exists(iconPath)) continue;
|
||||
ZZIP_FILE* fp = zzip_file_open(dir, favicon.toUtf8().data(), 0);
|
||||
if(fp) {
|
||||
QFile dest_icon(iconPath);
|
||||
// Write icon
|
||||
if(dest_icon.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
||||
char buf[255];
|
||||
zzip_ssize_t len = zzip_file_read(fp, buf, 255);
|
||||
while(len) {
|
||||
dest_icon.write(buf, len);
|
||||
len = zzip_file_read(fp, buf, 255);
|
||||
}
|
||||
zzip_file_close(fp);
|
||||
dest_icon.close();
|
||||
// Update icon in list
|
||||
QTreeWidgetItem *item = findItemWithID(plugin_name);
|
||||
Q_ASSERT(item);
|
||||
item->setData(ENGINE_NAME, Qt::DecorationRole, QVariant(QIcon(iconPath)));
|
||||
}
|
||||
}
|
||||
}
|
||||
zzip_dir_close(dir);
|
||||
}
|
||||
#endif
|
||||
|
||||
void engineSelectDlg::installPlugin(QString path, QString plugin_name) {
|
||||
qDebug("Asked to install plugin at %s", path.toUtf8().data());
|
||||
float new_version = misc::getPluginVersion(path);
|
||||
QString plugin_name = path.split(QDir::separator()).last();
|
||||
plugin_name.replace(".py", "");
|
||||
qDebug("Version to be installed: %.2f", new_version);
|
||||
if(!isUpdateNeeded(plugin_name, new_version)) {
|
||||
qDebug("Apparently update it not needed, we have a more recent version");
|
||||
QMessageBox::information(this, tr("Search plugin install")+" -- "+tr("qBittorrent"), tr("A more recent version of %1 search engine plugin is already installed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
|
||||
return;
|
||||
}
|
||||
@ -387,10 +513,25 @@ void engineSelectDlg::installPlugin(QString path) {
|
||||
void engineSelectDlg::on_installButton_clicked() {
|
||||
QStringList pathsList = QFileDialog::getOpenFileNames(0,
|
||||
tr("Select search plugins"), QDir::homePath(),
|
||||
#ifdef HAVE_ZZIP
|
||||
tr("qBittorrent search plugins")+QString::fromUtf8(" (*.py *.zip)"));
|
||||
#else
|
||||
tr("qBittorrent search plugins")+QString::fromUtf8(" (*.py)"));
|
||||
#endif
|
||||
QString path;
|
||||
foreach(path, pathsList) {
|
||||
installPlugin(path);
|
||||
if(path.endsWith(".py")) {
|
||||
QString plugin_name = path.split(QDir::separator()).last();
|
||||
plugin_name.replace(".py", "");
|
||||
installPlugin(path, plugin_name);
|
||||
}
|
||||
#ifdef HAVE_ZZIP
|
||||
else {
|
||||
if(path.endsWith(".zip")) {
|
||||
installZipPlugin(path);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -476,39 +617,32 @@ void engineSelectDlg::processDownloadedFile(QString url, QString filePath) {
|
||||
if(!parseVersionsFile(filePath, "http://www.dchris.eu/search_engine/")) {
|
||||
qDebug("Primary update server failed, try secondary");
|
||||
downloader->downloadUrl("http://hydr0g3n.free.fr/search_engine/versions.txt");
|
||||
return;
|
||||
}
|
||||
QFile::remove(filePath);
|
||||
return;
|
||||
}
|
||||
if(url == "http://hydr0g3n.free.fr/search_engine/versions.txt") {
|
||||
if(!parseVersionsFile(filePath, "http://hydr0g3n.free.fr/search_engine/")) {
|
||||
QMessageBox::warning(this, tr("Search plugin update")+" -- "+tr("qBittorrent"), tr("Sorry, update server is temporarily unavailable."));
|
||||
}
|
||||
QFile::remove(filePath);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(url.endsWith(".pyqBT") || url.endsWith(".py")) {
|
||||
// a plugin update has been downloaded
|
||||
QString plugin_name = url.split('/').last();
|
||||
plugin_name.replace(".pyqBT", "");
|
||||
plugin_name.replace(".py", "");
|
||||
QString dest_path = misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py";
|
||||
bool new_plugin = false;
|
||||
if(QFile::exists(dest_path)) {
|
||||
// Delete the old plugin
|
||||
QFile::remove(dest_path);
|
||||
} else {
|
||||
// This is a new plugin
|
||||
new_plugin = true;
|
||||
}
|
||||
// Copy the new plugin
|
||||
QFile::copy(filePath, dest_path);
|
||||
if(new_plugin) {
|
||||
// if it is new, refresh the list of plugins
|
||||
loadSupportedSearchEngines();
|
||||
QMessageBox::information(this, tr("Search plugin install")+" -- "+tr("qBittorrent"), tr("%1 search engine plugin was successfully installed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
|
||||
} else {
|
||||
QMessageBox::information(this, tr("Search plugin update")+" -- "+tr("qBittorrent"), tr("%1 search plugin was successfully updated.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
|
||||
plugin_name.replace(".pyqBT", "");
|
||||
installPlugin(filePath, plugin_name);
|
||||
QFile::remove(filePath);
|
||||
return;
|
||||
}
|
||||
#ifdef HAVE_ZZIP
|
||||
if(url.endsWith(".zip")) {
|
||||
installZipPlugin(filePath);
|
||||
QFile::remove(filePath);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void engineSelectDlg::handleDownloadFailure(QString url, QString reason) {
|
||||
@ -531,6 +665,13 @@ void engineSelectDlg::handleDownloadFailure(QString url, QString reason) {
|
||||
QString plugin_name = url.split('/').last();
|
||||
plugin_name.replace(".pyqBT", "");
|
||||
plugin_name.replace(".py", "");
|
||||
QMessageBox::warning(this, tr("Search plugin update")+" -- "+tr("qBittorrent"), tr("Sorry, %1 search plugin update failed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
|
||||
QMessageBox::warning(this, tr("Search plugin update")+" -- "+tr("qBittorrent"), tr("Sorry, %1 search plugin install failed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
|
||||
}
|
||||
#ifdef HAVE_ZZIP
|
||||
if(url.endsWith(".zip")) {
|
||||
QString plugin_name = url.split('/').last();
|
||||
plugin_name.replace(".zip", "");
|
||||
QMessageBox::warning(this, tr("Search plugin update")+" -- "+tr("qBittorrent"), tr("Sorry, %1 search plugin install failed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ class engineSelectDlg : public QDialog, public Ui::engineSelect{
|
||||
engineSelectDlg(QWidget *parent);
|
||||
~engineSelectDlg();
|
||||
QList<QTreeWidgetItem*> findItemsWithUrl(QString url);
|
||||
QTreeWidgetItem* findItemWithID(QString id);
|
||||
|
||||
protected:
|
||||
bool parseVersionsFile(QString versions_file, QString updateServer);
|
||||
@ -64,7 +65,10 @@ class engineSelectDlg : public QDialog, public Ui::engineSelect{
|
||||
void on_installButton_clicked();
|
||||
void dropEvent(QDropEvent *event);
|
||||
void dragEnterEvent(QDragEnterEvent *event);
|
||||
void installPlugin(QString plugin_path);
|
||||
void installPlugin(QString plugin_path, QString plugin_name);
|
||||
#ifdef HAVE_ZZIP
|
||||
void installZipPlugin(QString path);
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS><TS version="1.1" language="en">
|
||||
<defaultcodec></defaultcodec>
|
||||
<context>
|
||||
<name>AboutDlg</name>
|
||||
<message>
|
||||
@ -585,115 +586,115 @@ Copyright © 2006 by Christophe Dumez<br>
|
||||
<location filename="../downloadingTorrents.cpp" line="55"/>
|
||||
<source>Name</source>
|
||||
<comment>i.e: file name</comment>
|
||||
<translation type="unfinished">Név</translation>
|
||||
<translation>Név</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="56"/>
|
||||
<source>Size</source>
|
||||
<comment>i.e: file size</comment>
|
||||
<translation type="unfinished">Méret</translation>
|
||||
<translation>Méret</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="57"/>
|
||||
<source>Progress</source>
|
||||
<comment>i.e: % downloaded</comment>
|
||||
<translation type="unfinished">Folyamat</translation>
|
||||
<translation>Folyamat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="58"/>
|
||||
<source>DL Speed</source>
|
||||
<comment>i.e: Download speed</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>DL Speed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="59"/>
|
||||
<source>UP Speed</source>
|
||||
<comment>i.e: Upload speed</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>UP Speed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="60"/>
|
||||
<source>Seeds/Leechs</source>
|
||||
<comment>i.e: full/partial sources</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Seeds/Leechs</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="61"/>
|
||||
<source>Ratio</source>
|
||||
<translation type="unfinished">Arány</translation>
|
||||
<translation>Arány</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="62"/>
|
||||
<source>ETA</source>
|
||||
<comment>i.e: Estimated Time of Arrival / Time left</comment>
|
||||
<translation type="unfinished">Idő</translation>
|
||||
<translation>Idő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="98"/>
|
||||
<source>qBittorrent %1 started.</source>
|
||||
<comment>e.g: qBittorrent v0.x started.</comment>
|
||||
<translation type="unfinished">qBittorrent %1 elindítva.</translation>
|
||||
<translation>qBittorrent %1 elindítva.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="99"/>
|
||||
<source>Be careful, sharing copyrighted material without permission is against the law.</source>
|
||||
<translation type="unfinished">Csak óvatosan a megosztással. Nehogy megsértsd a szerzői jogokat!.</translation>
|
||||
<translation>Csak óvatosan a megosztással. Nehogy megsértsd a szerzői jogokat!.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="123"/>
|
||||
<source><font color='red'>%1</font> <i>was blocked</i></source>
|
||||
<comment>x.y.z.w was blocked</comment>
|
||||
<translation type="unfinished"><font color='red'>%1</font> <i>blokkolva</i></translation>
|
||||
<translation><font color='red'>%1</font> <i>blokkolva</i></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="197"/>
|
||||
<source>Fast resume data was rejected for torrent %1, checking again...</source>
|
||||
<translation type="unfinished">Hibás ellenőrző adat ennél a torrentnél: %1, újraellenőrzés...</translation>
|
||||
<translation>Hibás ellenőrző adat ennél a torrentnél: %1, újraellenőrzés...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="201"/>
|
||||
<source>Url seed lookup failed for url: %1, message: %2</source>
|
||||
<translation type="unfinished">Url forrás meghatározása sikertelen: %1, hibaüzenet: %2</translation>
|
||||
<translation>Url forrás meghatározása sikertelen: %1, hibaüzenet: %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="633"/>
|
||||
<source>'%1' added to download list.</source>
|
||||
<comment>'/home/y/xxx.torrent' was added to download list.</comment>
|
||||
<translation type="unfinished">'%1' felvéve a letöltési listára.</translation>
|
||||
<translation>'%1' felvéve a letöltési listára.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="635"/>
|
||||
<source>'%1' resumed. (fast resume)</source>
|
||||
<comment>'/home/y/xxx.torrent' was resumed. (fast resume)</comment>
|
||||
<translation type="unfinished">'%1' visszaállítva. (folytatás)</translation>
|
||||
<translation>'%1' visszaállítva. (folytatás)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="643"/>
|
||||
<source>'%1' is already in download list.</source>
|
||||
<comment>e.g: 'xxx.avi' is already in download list.</comment>
|
||||
<translation type="unfinished">'%1' már letöltés alatt.</translation>
|
||||
<translation>'%1' már letöltés alatt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="647"/>
|
||||
<source>Unable to decode torrent file: '%1'</source>
|
||||
<comment>e.g: Unable to decode torrent file: '/home/y/xxx.torrent'</comment>
|
||||
<translation type="unfinished">Megfejthetetlen torrent: '%1'</translation>
|
||||
<translation>Megfejthetetlen torrent: '%1'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="648"/>
|
||||
<source>This file is either corrupted or this isn't a torrent.</source>
|
||||
<translation type="unfinished">Ez a fájl sérült, vagy nem is torrent.</translation>
|
||||
<translation>Ez a fájl sérült, vagy nem is torrent.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="662"/>
|
||||
<source>Couldn't listen on any of the given ports.</source>
|
||||
<translation type="unfinished">A megadott porok zártak.</translation>
|
||||
<translation>A megadott porok zártak.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../downloadingTorrents.cpp" line="686"/>
|
||||
<source>Downloading '%1', please wait...</source>
|
||||
<comment>e.g: Downloading 'xxx.torrent', please wait...</comment>
|
||||
<translation type="unfinished">Letöltés alatt: '%1', kis türelmet...</translation>
|
||||
<translation>Letöltés alatt: '%1', kis türelmet...</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1241,13 +1242,13 @@ Mégis leállítod a qBittorrentet?</translation>
|
||||
<location filename="../GUI.cpp" line="290"/>
|
||||
<source>Alt+3</source>
|
||||
<comment>shortcut to switch to third tab</comment>
|
||||
<translation type="unfinished">Alt+3</translation>
|
||||
<translation>Alt+3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../GUI.cpp" line="292"/>
|
||||
<source>Ctrl+F</source>
|
||||
<comment>shortcut to switch to search tab</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ctrl+F</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1597,7 +1598,7 @@ Mégis leállítod a qBittorrentet?</translation>
|
||||
<message>
|
||||
<location filename="../rss_imp.cpp" line="155"/>
|
||||
<source>This rss feed is already in the list.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ez a hírcsatorna már felvéve.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1619,7 +1620,7 @@ Mégis leállítod a qBittorrentet?</translation>
|
||||
<message>
|
||||
<location filename="../rss.h" line="261"/>
|
||||
<source>Never</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Soha</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1773,7 +1774,7 @@ Changelog:
|
||||
<message>
|
||||
<location filename="../searchEngine.cpp" line="433"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished">Ismeretlen</translation>
|
||||
<translation>Ismeretlen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1968,7 +1969,7 @@ Changelog:
|
||||
<message>
|
||||
<location filename="../createtorrent.ui" line="93"/>
|
||||
<source>Input file or directory:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Forrás fájl vagy könyvtár:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -2052,7 +2053,7 @@ Changelog:
|
||||
<message>
|
||||
<location filename="../createtorrent_imp.cpp" line="75"/>
|
||||
<source>Select a file to add to the torrent</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Válassz fájlt(okat) a torrenthez</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -2098,82 +2099,82 @@ Changelog:
|
||||
<message>
|
||||
<location filename="../download.ui" line="13"/>
|
||||
<source>Search</source>
|
||||
<translation type="unfinished">Keresés</translation>
|
||||
<translation>Keresés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="48"/>
|
||||
<source>Total DL Speed:</source>
|
||||
<translation type="unfinished">Bejövő sebesség:</translation>
|
||||
<translation>Bejövő sebesség:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="181"/>
|
||||
<source>KiB/s</source>
|
||||
<translation type="unfinished">KByte/s</translation>
|
||||
<translation>KByte/s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="106"/>
|
||||
<source>Session ratio: </source>
|
||||
<translation type="unfinished">Megosztási arány: </translation>
|
||||
<translation>Megosztási arány: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="152"/>
|
||||
<source>Total UP Speed:</source>
|
||||
<translation type="unfinished">Kimenő sebesség:</translation>
|
||||
<translation>Kimenő sebesség:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="246"/>
|
||||
<source>Log</source>
|
||||
<translation type="unfinished">Napló</translation>
|
||||
<translation>Napló</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="280"/>
|
||||
<source>IP filter</source>
|
||||
<translation type="unfinished">IP szűrő</translation>
|
||||
<translation>IP szűrő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="306"/>
|
||||
<source>Start</source>
|
||||
<translation type="unfinished">Indítás</translation>
|
||||
<translation>Indítás</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="311"/>
|
||||
<source>Pause</source>
|
||||
<translation type="unfinished">Szünet</translation>
|
||||
<translation>Szünet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="316"/>
|
||||
<source>Delete</source>
|
||||
<translation type="unfinished">Törlés</translation>
|
||||
<translation>Törlés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="321"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished">Törlés</translation>
|
||||
<translation>Törlés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="326"/>
|
||||
<source>Preview file</source>
|
||||
<translation type="unfinished">Minta fájl</translation>
|
||||
<translation>Minta fájl</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="331"/>
|
||||
<source>Set upload limit</source>
|
||||
<translation type="unfinished">Feltöltési korlát megadása</translation>
|
||||
<translation>Feltöltési korlát megadása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="336"/>
|
||||
<source>Set download limit</source>
|
||||
<translation type="unfinished">Letöltési korlát megadása</translation>
|
||||
<translation>Letöltési korlát megadása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="341"/>
|
||||
<source>Delete Permanently</source>
|
||||
<translation type="unfinished">Végleges törlés</translation>
|
||||
<translation>Végleges törlés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../download.ui" line="346"/>
|
||||
<source>Torrent Properties</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Torrent tulajdonságai</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -2181,62 +2182,62 @@ Changelog:
|
||||
<message>
|
||||
<location filename="../engineSelect.ui" line="16"/>
|
||||
<source>Search plugins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Kereső modulok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelect.ui" line="29"/>
|
||||
<source>Installed search engines:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Telepített keresők:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelect.ui" line="49"/>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished">Név</translation>
|
||||
<translation>Név</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelect.ui" line="54"/>
|
||||
<source>Url</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Url</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelect.ui" line="59"/>
|
||||
<source>Enabled</source>
|
||||
<translation type="unfinished">Engedélyez</translation>
|
||||
<translation>Státusz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelect.ui" line="72"/>
|
||||
<source>You can get new search engine plugins here: <a href="http:plugins.qbittorrent.org">http://plugins.qbittorrent.org</a></source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Újabb kereső modulok elérhetőek itt : <a href="http:plugins.qbittorrent.org">http://plugins.qbittorrent.org</a></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelect.ui" line="81"/>
|
||||
<source>Install a new one</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Új telepítése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelect.ui" line="88"/>
|
||||
<source>Check for updates</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Frissítések ellenőrzése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelect.ui" line="95"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Bezárás</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelect.ui" line="104"/>
|
||||
<source>Enable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Enged</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelect.ui" line="109"/>
|
||||
<source>Disable</source>
|
||||
<translation type="unfinished">Letiltva</translation>
|
||||
<translation>Tilt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelect.ui" line="114"/>
|
||||
<source>Uninstall</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Eltávolít</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -2244,111 +2245,113 @@ Changelog:
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="287"/>
|
||||
<source>True</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Engedve</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="289"/>
|
||||
<source>False</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Tiltva</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="196"/>
|
||||
<source>Uninstall warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Figyelemeztetés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="196"/>
|
||||
<source>Some plugins could not be uninstalled because they are included in qBittorrent.
|
||||
Only the ones you added yourself can be uninstalled.
|
||||
However, those plugins were disabled.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Néhány modult nem lehet eltávolítani, mivel a program részei.
|
||||
Csak azokat lehet, amiket saját kezüleg telepítettél.
|
||||
Viszont azok a modulok kikapcsolhatóak.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="198"/>
|
||||
<source>Uninstall success</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sikeresen eltávolítva</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="378"/>
|
||||
<source>Select search plugins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Modul kiválasztása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="379"/>
|
||||
<source>qBittorrent search plugins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>qBittorrent kereső modulok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="497"/>
|
||||
<source>Search plugin install</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Kerső telepítése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="524"/>
|
||||
<source>qBittorrent</source>
|
||||
<translation type="unfinished">qBittorrent</translation>
|
||||
<translation>qBittorrent</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="330"/>
|
||||
<source>A more recent version of %1 search engine plugin is already installed.</source>
|
||||
<comment>%1 is the name of the search engine</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>A %1 kereső modul egy újabb verziója már telepítve van.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="524"/>
|
||||
<source>Search plugin update</source>
|
||||
<translation type="unfinished">Kereső modul frissítése</translation>
|
||||
<translation>Kereső modul frissítése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="516"/>
|
||||
<source>Sorry, update server is temporarily unavailable.</source>
|
||||
<translation type="unfinished">A kiszolgálő jelenleg nem elérhető. Bocs.</translation>
|
||||
<translation>A kiszolgálő jelenleg nem elérhető. Bocs.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="524"/>
|
||||
<source>Sorry, %1 search plugin update failed.</source>
|
||||
<comment>%1 is the name of the search engine</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Bocs, nem sikerült frissíteni: %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="426"/>
|
||||
<source>All your plugins are already up to date.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>A legújabb kereső modulokat használod.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="352"/>
|
||||
<source>%1 search engine plugin could not be updated, keeping old version.</source>
|
||||
<comment>%1 is the name of the search engine</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>%1 keresőt nem lehet frissíteni, előző verzió megtartva.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="357"/>
|
||||
<source>%1 search engine plugin could not be installed.</source>
|
||||
<comment>%1 is the name of the search engine</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>%1 kereső modul telepítése sikertelen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="198"/>
|
||||
<source>All selected plugins were uninstalled successfully</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Kereső modul(ok) sikeresen eltávolítva</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="368"/>
|
||||
<source>%1 search engine plugin was successfully updated.</source>
|
||||
<comment>%1 is the name of the search engine</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>%1 kereső modul sikeresen frissítve.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="497"/>
|
||||
<source>%1 search engine plugin was successfully installed.</source>
|
||||
<comment>%1 is the name of the search engine</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>%1 kereső modul sikeresen telepítve.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../engineSelectDlg.cpp" line="499"/>
|
||||
<source>%1 search plugin was successfully updated.</source>
|
||||
<comment>%1 is the name of the search engine</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>%1 kereső modul sikeresen frissítve.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -2855,7 +2858,7 @@ However, those plugins were disabled.</source>
|
||||
<message>
|
||||
<location filename="../search.ui" line="99"/>
|
||||
<source>Search engines...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Keresők...</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
Loading…
Reference in New Issue
Block a user