Hello community,

here is the log from the commit of package lokalize for openSUSE:Factory 
checked in at 2016-05-29 03:09:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lokalize (Old)
 and      /work/SRC/openSUSE:Factory/.lokalize.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "lokalize"

Changes:
--------
--- /work/SRC/openSUSE:Factory/lokalize/lokalize.changes        2016-03-29 
10:37:52.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.lokalize.new/lokalize.changes   2016-05-29 
03:09:35.000000000 +0200
@@ -1,0 +2,24 @@
+Sat May  7 10:43:12 UTC 2016 - tittiatc...@gmail.com
+
+- Update to KDE Applications 16.04.1
+   * KDE Applications 16.04.1
+   * https://www.kde.org/announcements/announce-applications-16.04.1.php
+
+
+-------------------------------------------------------------------
+Sun Apr 17 06:19:10 UTC 2016 - tittiatc...@gmail.com
+
+- Update to KDE Applications 16.04.0
+   * KDE Applications 16.04.0
+   * https://www.kde.org/announcements/announce-applications-16.04.0.php
+
+
+-------------------------------------------------------------------
+Mon Apr 11 06:54:20 UTC 2016 - tittiatc...@gmail.com
+
+- Update to KDE Applications 16.03.90
+   * KDE Applications 16.04.0 RC
+   * https://www.kde.org/announcements/announce-applications-16.04-rc.php
+
+
+-------------------------------------------------------------------

Old:
----
  lokalize-15.12.3.tar.xz

New:
----
  lokalize-16.04.1.tar.xz

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

Other differences:
------------------
++++++ lokalize.spec ++++++
--- /var/tmp/diff_new_pack.N3pZps/_old  2016-05-29 03:09:36.000000000 +0200
+++ /var/tmp/diff_new_pack.N3pZps/_new  2016-05-29 03:09:36.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           lokalize
-Version:        15.12.3
+Version:        16.04.1
 Release:        0
 Summary:        KDE Translation Editor
 License:        GPL-2.0+

++++++ lokalize-15.12.3.tar.xz -> lokalize-16.04.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/CMakeLists.txt 
new/lokalize-16.04.1/CMakeLists.txt
--- old/lokalize-15.12.3/CMakeLists.txt 2016-02-22 01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/CMakeLists.txt 2016-05-02 03:01:19.000000000 +0200
@@ -10,13 +10,13 @@
 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
 include(KDEInstallDirs)
 include(KDECMakeSettings)
-include(KDECompilerSettings)
+include(KDECompilerSettings NO_POLICY_SCOPE)
 
 find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED Core DBus Widgets Script 
Sql)
 
 find_package(KF5 REQUIRED I18n KIO XmlGui Notifications Config CoreAddons 
DocTools Kross Sonnet DBusAddons Crash)
 
-add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS)
+add_definitions(-DQT_USE_QSTRINGBUILDER)
 
 find_package(HUNSPELL)
 set_package_properties(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/cmake/FindHUNSPELL.cmake 
new/lokalize-16.04.1/cmake/FindHUNSPELL.cmake
--- old/lokalize-15.12.3/cmake/FindHUNSPELL.cmake       2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/cmake/FindHUNSPELL.cmake       2016-05-02 
03:01:19.000000000 +0200
@@ -14,7 +14,7 @@
 
 FIND_PATH(HUNSPELL_INCLUDE_DIR hunspell/hunspell.hxx )
 
-FIND_LIBRARY(HUNSPELL_LIBRARIES NAMES hunspell-1.3 hunspell-1.2)
+FIND_LIBRARY(HUNSPELL_LIBRARIES NAMES hunspell-2.0 hunspell-1.5 hunspell-1.4 
hunspell-1.3 hunspell-1.2)
 
 # handle the QUIETLY and REQUIRED arguments and set HUNSPELL_FOUND to TRUE if 
 # all listed variables are TRUE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/lokalize.appdata.xml 
new/lokalize-16.04.1/lokalize.appdata.xml
--- old/lokalize-15.12.3/lokalize.appdata.xml   2016-02-22 01:42:06.000000000 
+0100
+++ new/lokalize-16.04.1/lokalize.appdata.xml   2016-05-02 03:01:19.000000000 
+0200
@@ -12,7 +12,6 @@
   <name xml:lang="de">Lokalize</name>
   <name xml:lang="en-GB">Lokalize</name>
   <name xml:lang="es">Lokalize</name>
-  <name xml:lang="et">Lokalize</name>
   <name xml:lang="fi">Lokalize</name>
   <name xml:lang="fr">Lokalize</name>
   <name xml:lang="gl">Lokalize</name>
@@ -43,7 +42,6 @@
   <summary xml:lang="de">Computergestütztes Übersetzungssystem</summary>
   <summary xml:lang="en-GB">Computer-aided translation system</summary>
   <summary xml:lang="es">Sistema de traducción asistido por 
computador</summary>
-  <summary xml:lang="et">Tõlkemäluga tõlkimisrakendus</summary>
   <summary xml:lang="fi">Tietokoneavusteinen käännösjärjestelmä</summary>
   <summary xml:lang="fr">Outil de traduction assistée par ordinateur</summary>
   <summary xml:lang="gl">Sistema de tradución asistida por 
computador.</summary>
@@ -69,12 +67,11 @@
   <description>
     <p>Lokalize is the localization tool for KDE and other open source 
software. It is also a general computer-aided translation system (CAT) with 
which you can translate OpenDocument files (*.odt). Translate-Toolkit is used 
internally to extract text for translation from .odt to .xliff files and to 
merge translation back into .odt file.</p>
     <p xml:lang="ast">Lokalize ye la ferramienta de llocalización pa KDE y 
otru software de códigu llibre. Ye tamién un sistema de traducción asistíu per 
ordenador (CAT) col que pues traducir ficheros OpenDocument (*.odt). 
Internamente úsase Translate-Toolkit pa estrayer el testu pa la traducción de 
ficheros </p>
-    <p xml:lang="ca">El Lokalize és l'eina de traducció pel KDE i altre 
programari de codi lliure. També és un sistema de traducció assistit per 
ordinador (CAT) general que amb el que es poden traduir fitxers OpenDocument 
(*.odt). Internament s'utilitza el Translate-Toolkit per extreure text per la 
traducció des de fitxers .odt a .xliff i per tornar a fusionar la traducció al 
fitxer .odt.</p>
-    <p xml:lang="ca-valencia">El Lokalize és l'eina de traducció pel KDE i 
altre programari de codi lliure. També és un sistema de traducció assistit per 
ordinador (CAT) general que amb el que es poden traduir fitxers OpenDocument 
(*.odt). Internament s'utilitza el Translate-Toolkit per extreure text per la 
traducció des de fitxers .odt a .xliff i per tornar a fusionar la traducció al 
fitxer .odt.</p>
+    <p xml:lang="ca">El Lokalize és l'eina de traducció pel KDE i altre 
programari de codi lliure. També és un sistema de traducció assistit per 
ordinador (CAT) general que amb el que es poden traduir fitxers OpenDocument 
(*.odt). Internament s'utilitza el Translate-Toolkit per extreure text per a la 
traducció des de fitxers .odt a .xliff i per tornar a fusionar la traducció al 
fitxer .odt.</p>
+    <p xml:lang="ca-valencia">El Lokalize és l'eina de traducció pel KDE i 
altre programari de codi lliure. També és un sistema de traducció assistit per 
ordinador (CAT) general que amb el que es poden traduir fitxers OpenDocument 
(*.odt). Internament s'utilitza el Translate-Toolkit per extreure text per a la 
traducció des de fitxers .odt a .xliff i per tornar a fusionar la traducció al 
fitxer .odt.</p>
     <p xml:lang="de">Lokalize ist ein Lokalisierungs-Programm für KDE und 
andere quelloffene Software. Es ist außerdem ein  rechnergestütztes 
Übersetzungssystem (CAT), mit dem Sie auch OpenDocument-Dateien (odt) 
übersetzen können. Intern wird „Translate-Toolkit“ zum Extrahieren von Text für 
die Übersetzung aus „odt“- in „xliff“-Dateien und für das Einfügen der 
Übersetzung zurück in „odt“-Dateien verwendet.</p>
     <p xml:lang="en-GB">Lokalize is the localisation tool for KDE and other 
open source software. It is also a general computer-aided translation system 
(CAT) with which you can translate OpenDocument files (*.odt). 
Translate-Toolkit is used internally to extract text for translation from .odt 
to .xliff files and to merge translation back into .odt file.</p>
     <p xml:lang="es">Lokalize es la herramienta de traducción para KDE y para 
otros proyectos de software de código abierto. También es un sistema de 
traducción asistido por computador (CAT) de uso general con el que puede 
traducir archivos OpenDocument (*.odt). «Translate-Toolkit» se usa internamente 
para extraer el texto para la traducción de archivos .odt en .xliff y para 
volver a fusionar de nuevo las traducciones en los archivos .odt.</p>
-    <p xml:lang="et">Lokalize on KDE ja muu avatud lähtekoodiga tarkvara 
tõlkimisrakendus. Samuti on see üldisemas tähenduses tõlkemäluga süsteem (CAT), 
mille abil saab tõlkida OpenDocument-faile (*.odt). Teksti eraldamiseks 
tõlkimise tarbeks .odt-failist .xliff-faili ja tõlke tagasiliitmiseks 
.odt-faili kasutatakse sisemiselt programmi Translate-Toolkit.</p>
     <p xml:lang="fi">Lokalize on lokalisointityökalu KDE:lle ja muille avoimen 
koodin ohjelmille. Se on myös yleiskäyttöinen tietokoneavusteinen 
käännösjärjestelmä (CAT), jolla voi kääntää OpenDocument-tiedostoja (*.odt). 
Lokalize käyttää Translate Toolkitia poimimaan käännettävän tekstin 
.odt-tiedostosta .xliff-tiedostoihin ja yhdistämään käännöksen takaisin 
.odt-tiedostoon.</p>
     <p xml:lang="fr">Lokalize est un outil de localisation pour KDE et 
d'autres outils open source. Il s'agit également d'un système d'aide à la 
traduction assisté par ordinateur pour les fichiers au format OpenDocument 
(*.odt). Translate-Toolkit est utilisé en interne pour extraire le texte à 
traduire depuis le fichier .odt vers un fichier au format .xliff puis fusionner 
en retour les traductions dans le fichier .odt.</p>
     <p xml:lang="gl">Lokalize é a ferramenta de localización de KDE e doutros 
programas libres. Tamén é un sistema xeral de tradución asistida por computador 
(CAT polas súas siglas en inglés) que lle permite traducir ficheiros en formato 
OpenDocument (.odt). Internamente usa Translate-Toolkit para extraer o texto a 
traducir de ficheiros «.odt» e «.xliff» e para integrar as traducións de volta 
no ficheiro «.odt».</p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/scripts/find-gui-text.sh 
new/lokalize-16.04.1/scripts/find-gui-text.sh
--- old/lokalize-15.12.3/scripts/find-gui-text.sh       2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/scripts/find-gui-text.sh       2016-05-02 
03:01:19.000000000 +0200
@@ -14,6 +14,7 @@
 done
 
 for LOKALIZE_INSTANCE in $LOKALIZE_INSTANCES; do \
+    qdbus $LOKALIZE_INSTANCE /ThisIsWhatYouWant/FileSearch/0 
org.kde.Lokalize.FileSearch.findGuiTextPackage "$TEXT" "$PACKAGE"; \
     qdbus $LOKALIZE_INSTANCE /ThisIsWhatYouWant 
org.kde.Lokalize.MainWindow.showTranslationMemory; \
     qdbus $LOKALIZE_INSTANCE /ThisIsWhatYouWant/TranslationMemory/0 
org.kde.Lokalize.TranslationMemory.findGuiTextPackage "$TEXT" "$PACKAGE"; \
 done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/scripts/msgfmt.py 
new/lokalize-16.04.1/scripts/msgfmt.py
--- old/lokalize-15.12.3/scripts/msgfmt.py      1970-01-01 01:00:00.000000000 
+0100
+++ new/lokalize-16.04.1/scripts/msgfmt.py      2016-05-02 03:01:19.000000000 
+0200
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+import os,sys
+import Editor
+import Project
+
+def doCompile():
+    if not Editor.isValid() or Editor.currentFile=='': return
+    lang=Project.targetLangCode()
+
+    (path, pofilename)=os.path.split(Editor.currentFile())
+    (package, ext)=os.path.splitext(pofilename)
+    if os.system('touch ~/.local/share/locale/%s/LC_MESSAGES' % lang)!=0:
+        os.system('mkdir ~/.local/share')
+        os.system('mkdir ~/.local/share/locale')
+        os.system('mkdir ~/.local/share/locale/%s'  % lang)
+        os.system('mkdir ~/.local/share/locale/%s/LC_MESSAGES'  % lang)
+
+    os.system('msgfmt -o ~/.local/share/locale/%s/LC_MESSAGES/%s.mo %s' % 
(lang, package, Editor.currentFile()))
+
+doCompile()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/scripts/msgfmt.rc 
new/lokalize-16.04.1/scripts/msgfmt.rc
--- old/lokalize-15.12.3/scripts/msgfmt.rc      1970-01-01 01:00:00.000000000 
+0100
+++ new/lokalize-16.04.1/scripts/msgfmt.rc      2016-05-02 03:01:19.000000000 
+0200
@@ -0,0 +1,6 @@
+<!DOCTYPE KrossScripting SYSTEM "kpartgui.dtd">
+<KrossScripting>
+  <collection comment="Tools" name="tools" text="Tools" >
+    <script icon="text-x-python" comment="Compile .po and make it available to 
applications" name="msgfmt" file="msgfmt.py" interpreter="python" text="Compile 
.po" />
+  </collection>
+</KrossScripting>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/scripts/xliff2odf-standalone.py 
new/lokalize-16.04.1/scripts/xliff2odf-standalone.py
--- old/lokalize-15.12.3/scripts/xliff2odf-standalone.py        2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/scripts/xliff2odf-standalone.py        2016-05-02 
03:01:19.000000000 +0200
@@ -20,13 +20,13 @@
 
     try: ctx = establish_connection()
     except:
-        os.system('soffice "-accept=socket,host=localhost,port=2002;urp;"')
+        os.system('soffice "--accept=socket,host=localhost,port=2002;urp;"')
         for c in range(30):
             time.sleep(1) #sleeps rule )))
             try:ctx = establish_connection()
             except: continue
             break
-    print "file://"+odfpathname
+    print ("file://"+odfpathname)
     
     desktop = ctx.ServiceManager.createInstanceWithContext( 
"com.sun.star.frame.Desktop",ctx)
     model = desktop.loadComponentFromURL( "file://"+odfpathname,"_default", 0, 
() )
@@ -40,11 +40,11 @@
     cursor = model.Text.createTextCursor()
     cursor.gotoStart(False)
     try:
-        print entryid
+        print (entryid)
         #office:document-content[0]/office:body[0]/office:text[0]/text:h[0]
         
standardstart='office:document-content[0]/office:body[0]/office:text[0]/'
         if entryid.startswith(standardstart): 
entryid=entryid[len(standardstart):]
-        else: print 'non-standard start: %s' % entryid
+        else: print ('non-standard start: %s' % entryid)
 
         numre=re.compile('\\[([0-9]*)\\]')
         elemre=re.compile(':([^\\[]*)\\[')
@@ -70,7 +70,7 @@
         c.gotoRange(cursor,False)
 
     except:
-        print 'error determining pos'
+        print ('error determining pos')
         #return ctx
 
     ctx.ServiceManager
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/scripts/xliffmerge.py 
new/lokalize-16.04.1/scripts/xliffmerge.py
--- old/lokalize-15.12.3/scripts/xliffmerge.py  2016-02-22 01:42:06.000000000 
+0100
+++ new/lokalize-16.04.1/scripts/xliffmerge.py  2016-05-02 03:01:19.000000000 
+0200
@@ -6,8 +6,8 @@
 #TODO: mark as 'needs adaptation' when only punctuation is changed
 #check id's change after document update
 
-from PyQt4.QtCore import *
-from PyQt4.QtXml import *
+from PyQt5.QtCore import *
+from PyQt5.QtXml import *
 
 import itertools
 import math
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/catalog/catalog.cpp 
new/lokalize-16.04.1/src/catalog/catalog.cpp
--- old/lokalize-15.12.3/src/catalog/catalog.cpp        2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/catalog/catalog.cpp        2016-05-02 
03:01:19.000000000 +0200
@@ -123,10 +123,10 @@
     QTimer* t=&(d._autoSaveTimer);
     t->setInterval(2*60*1000);
     t->setSingleShot(false);
-    connect(t,   SIGNAL(timeout()),        this,SLOT(doAutoSave()));
+    connect(t, &QTimer::timeout, this, &Catalog::doAutoSave);
     connect(this,SIGNAL(signalFileSaved()),   t,SLOT(start()));
     connect(this,SIGNAL(signalFileLoaded()),  t,SLOT(start()));
-    connect(this,SIGNAL(indexChanged(int)),this,SLOT(setAutoSaveDirty()));
+    connect(this, &Catalog::indexChanged, this, &Catalog::setAutoSaveDirty);
 #endif
     
connect(Project::local(),SIGNAL(configChanged()),this,SLOT(projectConfigChanged()));
 }
@@ -658,7 +658,7 @@
 
 
     QString localPath=QFileInfo(localFilePath).absolutePath();
-    if (!QFileInfo(localPath).exists())
+    if (!QFileInfo::exists(localPath))
         if (!QDir::root().mkpath(localPath))
             return false;
     QFile file(localFilePath);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/common/stemming.cpp 
new/lokalize-16.04.1/src/common/stemming.cpp
--- old/lokalize-15.12.3/src/common/stemming.cpp        2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/common/stemming.cpp        2016-05-02 
03:01:19.000000000 +0200
@@ -61,14 +61,14 @@
     QString dictPath = QStringLiteral("C:/Program Files (x86)/LibreOffice 
5/share/extensions/dict-") % langCode.leftRef(2) % '/';
 #else
     QString dictPath = QStringLiteral("/usr/share/hunspell/");
-    if (!QFileInfo(dictPath).exists())
+    if (!QFileInfo::exists(dictPath))
         dictPath = QStringLiteral("/usr/share/myspell/");
 #endif
 
     QString dic = dictPath % langCode % QLatin1String(".dic");
-    if (!QFileInfo(dic).exists())
+    if (!QFileInfo::exists(dic))
         dic = dictPath % enhanceLangCode(langCode) % QLatin1String(".dic");
-    if (QFileInfo(dic).exists())
+    if (QFileInfo::exists(dic))
     {
         speller = new Hunspell(QString(dictPath % langCode % 
".aff").toLatin1().constData(), dic.toLatin1().constData());
         codec = QTextCodec::codecForName(speller->get_dic_encoding());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/editortab.cpp 
new/lokalize-16.04.1/src/editortab.cpp
--- old/lokalize-15.12.3/src/editortab.cpp      2016-02-22 01:42:06.000000000 
+0100
+++ new/lokalize-16.04.1/src/editortab.cpp      2016-05-02 03:01:19.000000000 
+0200
@@ -124,14 +124,14 @@
 
     connect(m_view, SIGNAL(signalChanged(uint)), this, SLOT(msgStrChanged())); 
msgStrChanged();
     
connect(SettingsController::instance(),SIGNAL(generalSettingsChanged()),m_view, 
SLOT(settingsChanged()));
-    
connect(m_view->tabBar(),SIGNAL(currentChanged(int)),this,SLOT(switchForm(int)));
+    
connect(m_view->tabBar(),&QTabBar::currentChanged,this,&EditorTab::switchForm);
 
     connect(m_view, 
SIGNAL(gotoEntryRequested(DocPosition)),this,SLOT(gotoEntry(DocPosition)));
     connect(m_view, SIGNAL(tmLookupRequested(DocPosition::Part,QString)), 
this, SLOT(lookupSelectionInTranslationMemory()));
 
     connect(this, SIGNAL(fileOpened()), this, 
SLOT(indexWordsForCompletion()),Qt::QueuedConnection);
 
-    connect 
(m_catalog,SIGNAL(signalFileAutoSaveFailed(QString)),this,SLOT(fileAutoSaveFailedWarning(QString)));
+    connect 
(m_catalog,&Catalog::signalFileAutoSaveFailed,this,&EditorTab::fileAutoSaveFailedWarning);
 
 
     //defer some work to make window appear earlier (~200 msec on my Core Duo)
@@ -145,6 +145,9 @@
 
 EditorTab::~EditorTab()
 {
+    
disconnect(m_catalog,&Catalog::signalNumberOfFuzziesChanged,this,&EditorTab::numberOfFuzziesChanged);
+    
disconnect(m_catalog,&Catalog::signalNumberOfEmptyChanged,this,&EditorTab::numberOfUntranslatedChanged);
+
     if (!m_catalog->isEmpty())
     {
         emit fileAboutToBeClosed();
@@ -166,8 +169,8 @@
     statusBarItems.insert(ID_STATUS_UNTRANS,i18nc("@info:status message 
entries","Untranslated: %1",0));
     statusBarItems.insert(ID_STATUS_ISFUZZY,QString());
 
-    
connect(m_catalog,SIGNAL(signalNumberOfFuzziesChanged()),this,SLOT(numberOfFuzziesChanged()));
-    
connect(m_catalog,SIGNAL(signalNumberOfEmptyChanged()),this,SLOT(numberOfUntranslatedChanged()));
+    
connect(m_catalog,&Catalog::signalNumberOfFuzziesChanged,this,&EditorTab::numberOfFuzziesChanged);
+    
connect(m_catalog,&Catalog::signalNumberOfEmptyChanged,this,&EditorTab::numberOfUntranslatedChanged);
 }
 
 #ifndef NOKDE
@@ -278,9 +281,8 @@
     actionCollection()->addAction( 
QStringLiteral("showcatalogtreeview_action"), 
m_transUnitsView->toggleViewAction() );
     connect 
(this,SIGNAL(signalNewEntryDisplayed(DocPosition)),m_transUnitsView,SLOT(slotNewEntryDisplayed(DocPosition)));
     connect 
(m_transUnitsView,SIGNAL(gotoEntry(DocPosition,int)),this,SLOT(gotoEntry(DocPosition,int)));
-    connect (m_transUnitsView,SIGNAL(escaped()),this,SLOT(setProperFocus()));
-    connect (m_syncView,SIGNAL(mergeCatalogPointerChanged(MergeCatalog*)),
-             m_transUnitsView, SLOT(setMergeCatalogPointer(MergeCatalog*)));
+    connect 
(m_transUnitsView,&CatalogView::escaped,this,&EditorTab::setProperFocus);
+    connect (m_syncView,&MergeView::mergeCatalogPointerChanged, 
m_transUnitsView, &CatalogView::setMergeCatalogPointer);
 
     m_notesView = new MsgCtxtView(this,m_catalog);
     addDockWidget(Qt::LeftDockWidgetArea, m_notesView);
@@ -288,7 +290,7 @@
     connect(m_catalog,SIGNAL(signalFileLoaded()),m_notesView,SLOT(cleanup()));
     
connect(m_notesView,SIGNAL(srcFileOpenRequested(QString,int)),this,SLOT(dispatchSrcFileOpenRequest(QString,int)));
     connect(m_view, SIGNAL(signalChanged(uint)), m_notesView, 
SLOT(removeErrorNotes()));
-    connect(m_notesView,SIGNAL(escaped()),this,SLOT(setProperFocus()));
+    connect(m_notesView,&MsgCtxtView::escaped,this,&EditorTab::setProperFocus);
 
     
action=edit->addAction(QStringLiteral("edit_addnote"),m_notesView,SLOT(addNoteUI()));
     //action->setShortcut(Qt::CTRL+glist[i]);
@@ -370,7 +372,7 @@
     GlossaryNS::GlossaryView* _glossaryView = new 
GlossaryNS::GlossaryView(this,m_catalog,gactions);
     addDockWidget(Qt::BottomDockWidgetArea, _glossaryView);
     glossary->addAction( QStringLiteral("showglossaryview_action"), 
_glossaryView->toggleViewAction() );
-    connect 
(this,SIGNAL(signalNewEntryDisplayed(DocPosition)),_glossaryView,SLOT(slotNewEntryDisplayed(DocPosition)));
+    connect 
(this,&EditorTab::signalNewEntryDisplayed,_glossaryView,&GlossaryNS::GlossaryView::slotNewEntryDisplayed);
     connect 
(_glossaryView,SIGNAL(termInsertRequested(QString)),m_view,SLOT(insertTerm(QString)));
 
     gaction = 
glossary->addAction(QStringLiteral("glossary_define"),this,SLOT(defineNewTerm()));
@@ -382,7 +384,7 @@
     BinUnitsView* binUnitsView=new BinUnitsView(m_catalog,this);
     addDockWidget(Qt::BottomDockWidgetArea, binUnitsView);
     edit->addAction( QStringLiteral("showbinunitsview_action"), 
binUnitsView->toggleViewAction() );
-    
connect(m_view,SIGNAL(binaryUnitSelectRequested(QString)),binUnitsView,SLOT(selectUnit(QString)));
+    
connect(m_view,&EditorView::binaryUnitSelectRequested,binUnitsView,&BinUnitsView::selectUnit);
 
 
 //#ifdef WEBQUERY_ENABLE
@@ -493,7 +495,7 @@
     action->setCheckable(true);
     connect(action, SIGNAL(triggered()), m_view,SLOT(toggleApprovement()));
     connect(m_view, 
SIGNAL(signalApprovedEntryDisplayed(bool)),this,SIGNAL(signalApprovedEntryDisplayed(bool)));
-    connect(this, 
SIGNAL(signalApprovedEntryDisplayed(bool)),action,SLOT(setChecked(bool)));
+    connect(this, 
&EditorTab::signalApprovedEntryDisplayed,action,&QAction::setChecked);
     connect(this, 
SIGNAL(signalApprovedEntryDisplayed(bool)),this,SLOT(msgStrChanged()),Qt::QueuedConnection);
 
     m_approveAction=action;
@@ -568,25 +570,25 @@
     actionCategory=nav;
     action=nav->addAction(KStandardAction::Next,this, SLOT(gotoNext()));
     action->setText(i18nc("@action:inmenu entry","&Next"));
-    connect( this, 
SIGNAL(signalLastDisplayed(bool)),action,SLOT(setDisabled(bool)));
+    connect( this, &EditorTab::signalLastDisplayed, action, 
&QAction::setDisabled);
     
connect(m_view->viewPort(),SIGNAL(gotoNextRequested()),this,SLOT(gotoNext()));
 
     action=nav->addAction(KStandardAction::Prior,this, SLOT(gotoPrev()));
     action->setText(i18nc("@action:inmenu entry","&Previous"));
-    connect( this, SIGNAL(signalFirstDisplayed(bool)), action , 
SLOT(setDisabled(bool)) );
+    connect( this, &EditorTab::signalFirstDisplayed, action, 
&QAction::setDisabled);
     
connect(m_view->viewPort(),SIGNAL(gotoPrevRequested()),this,SLOT(gotoPrev()));
 
     action=nav->addAction(KStandardAction::FirstPage,this, SLOT(gotoFirst()));
     
connect(m_view->viewPort(),SIGNAL(gotoFirstRequested()),this,SLOT(gotoFirst()));
     action->setText(i18nc("@action:inmenu","&First Entry"));
     action->setShortcut(QKeySequence(Qt::CTRL+Qt::ALT+Qt::Key_Home));
-    connect( this, SIGNAL(signalFirstDisplayed(bool)), action , 
SLOT(setDisabled(bool)) );
+    connect( this, &EditorTab::signalFirstDisplayed, action, 
&QAction::setDisabled);
 
     action=nav->addAction(KStandardAction::LastPage,this, SLOT(gotoLast()));
     
connect(m_view->viewPort(),SIGNAL(gotoLastRequested()),this,SLOT(gotoLast()));
     action->setText(i18nc("@action:inmenu","&Last Entry"));
     action->setShortcut(QKeySequence(Qt::CTRL+Qt::ALT+Qt::Key_End));
-    connect( this, 
SIGNAL(signalLastDisplayed(bool)),action,SLOT(setDisabled(bool)));
+    connect( this, 
&EditorTab::signalLastDisplayed,action,&QAction::setDisabled);
 
     action=nav->addAction(KStandardAction::GotoPage,this, SLOT(gotoEntry()));
     ac->setDefaultShortcut(action, QKeySequence(Qt::CTRL+Qt::Key_G));
@@ -595,32 +597,32 @@
     ADD_ACTION_SHORTCUT_ICON("go_prev_fuzzy",i18nc("@action:inmenu\n'not 
ready' means 'fuzzy' in gettext terminology","Previous non-empty but not 
ready"),Qt::CTRL+Qt::Key_PageUp,"prevfuzzy")
     connect( action, SIGNAL(triggered(bool)), this, SLOT(gotoPrevFuzzy()) );
     connect( m_view->viewPort(), SIGNAL(gotoPrevFuzzyRequested()), this, 
SLOT(gotoPrevFuzzy()) );
-    connect( this, 
SIGNAL(signalPriorFuzzyAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( this, 
&EditorTab::signalPriorFuzzyAvailable,action,&QAction::setEnabled);
 
     ADD_ACTION_SHORTCUT_ICON("go_next_fuzzy",i18nc("@action:inmenu\n'not 
ready' means 'fuzzy' in gettext terminology","Next non-empty but not 
ready"),Qt::CTRL+Qt::Key_PageDown,"nextfuzzy")
     connect( action, SIGNAL(triggered(bool)), this, SLOT(gotoNextFuzzy()) );
     connect( m_view->viewPort(), SIGNAL(gotoNextFuzzyRequested()), this, 
SLOT(gotoNextFuzzy()) );
-    connect( this, 
SIGNAL(signalNextFuzzyAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( this, 
&EditorTab::signalNextFuzzyAvailable,action,&QAction::setEnabled);
 
     
ADD_ACTION_SHORTCUT_ICON("go_prev_untrans",i18nc("@action:inmenu","Previous 
untranslated"),Qt::ALT+Qt::Key_PageUp,"prevuntranslated")
     connect( action, SIGNAL(triggered(bool)), this, 
SLOT(gotoPrevUntranslated()));
     connect( m_view->viewPort(), SIGNAL(gotoPrevUntranslatedRequested()), 
this, SLOT(gotoPrevUntranslated()) );
-    connect( this, 
SIGNAL(signalPriorUntranslatedAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( this, 
&EditorTab::signalPriorUntranslatedAvailable,action,&QAction::setEnabled);
 
     ADD_ACTION_SHORTCUT_ICON("go_next_untrans",i18nc("@action:inmenu","Next 
untranslated"),Qt::ALT+Qt::Key_PageDown,"nextuntranslated")
     connect( action, SIGNAL(triggered(bool)), this, 
SLOT(gotoNextUntranslated()));
     connect( m_view->viewPort(), SIGNAL(gotoNextUntranslatedRequested()), 
this, SLOT(gotoNextUntranslated()) );
-    connect( this, 
SIGNAL(signalNextUntranslatedAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( this, 
&EditorTab::signalNextUntranslatedAvailable,action,&QAction::setEnabled);
 
     ADD_ACTION_SHORTCUT_ICON("go_prev_fuzzyUntr",i18nc("@action:inmenu\n'not 
ready' means 'fuzzy' in gettext terminology","Previous not 
ready"),Qt::CTRL+Qt::SHIFT/*ALT*/+Qt::Key_PageUp,"prevfuzzyuntrans")
     connect( action, SIGNAL(triggered(bool)), this, SLOT(gotoPrevFuzzyUntr()) 
);
     connect( m_view->viewPort(), SIGNAL(gotoPrevFuzzyUntrRequested()), this, 
SLOT(gotoPrevFuzzyUntr()) );
-    connect( this, 
SIGNAL(signalPriorFuzzyOrUntrAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( this, 
&EditorTab::signalPriorFuzzyOrUntrAvailable,action,&QAction::setEnabled);
 
     ADD_ACTION_SHORTCUT_ICON("go_next_fuzzyUntr",i18nc("@action:inmenu\n'not 
ready' means 'fuzzy' in gettext terminology","Next not 
ready"),Qt::CTRL+Qt::SHIFT+Qt::Key_PageDown,"nextfuzzyuntrans")
     connect( action, SIGNAL(triggered(bool)), this, SLOT(gotoNextFuzzyUntr()) 
);
     connect( m_view->viewPort(), SIGNAL(gotoNextFuzzyUntrRequested()), this, 
SLOT(gotoNextFuzzyUntr()) );
-    connect( this, 
SIGNAL(signalNextFuzzyOrUntrAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( this, 
&EditorTab::signalNextFuzzyOrUntrAvailable,action,&QAction::setEnabled);
 
     
action=nav->addAction(QStringLiteral("go_focus_earch_line"),m_transUnitsView, 
SLOT(setFocus()));
     ac->setDefaultShortcut(action, QKeySequence(Qt::CTRL+Qt::Key_L));
@@ -633,15 +635,15 @@
     action->setText(i18nc("@option:check","Bookmark message"));
     action->setCheckable(true);
     //connect(action, 
SIGNAL(triggered(bool)),m_view,SLOT(toggleBookmark(bool)));
-    connect( this, 
SIGNAL(signalBookmarkDisplayed(bool)),action,SLOT(setChecked(bool)) );
+    connect( this, 
&EditorTab::signalBookmarkDisplayed,action,&QAction::setChecked);
 
     
action=nav->addAction(QStringLiteral("bookmark_prior"),this,SLOT(gotoPrevBookmark()));
     action->setText(i18nc("@action:inmenu","Previous bookmark"));
-    connect( this, 
SIGNAL(signalPriorBookmarkAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( this, 
&EditorTab::signalPriorBookmarkAvailable,action,&QAction::setEnabled);
 
     
action=nav->addAction(QStringLiteral("bookmark_next"),this,SLOT(gotoNextBookmark()));
     action->setText(i18nc("@action:inmenu","Next bookmark"));
-    connect( this, 
SIGNAL(signalNextBookmarkAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( this, 
&EditorTab::signalNextBookmarkAvailable,action,&QAction::setEnabled);
 
 //Tools
     edit->addAction(KStandardAction::Spelling,this,SLOT(spellcheck()));
@@ -670,7 +672,7 @@
     action->setWhatsThis(action->statusTip());
     ac->setDefaultShortcut(action, QKeySequence(Qt::ALT+Qt::Key_Up));
 
-    connect( m_syncView, 
SIGNAL(signalPriorChangedAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( m_syncView, 
&MergeView::signalPriorChangedAvailable,action,&QAction::setEnabled);
     m_syncView->addAction(action);
 
     action = 
sync1->addAction(QStringLiteral("merge_next"),m_syncView,SLOT(gotoNextChanged()));
@@ -679,20 +681,20 @@
     action->setToolTip(action->statusTip());
     action->setWhatsThis(action->statusTip());
     ac->setDefaultShortcut(action, QKeySequence(Qt::ALT+Qt::Key_Down));
-    connect( m_syncView, 
SIGNAL(signalNextChangedAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( m_syncView, 
&MergeView::signalNextChangedAvailable,action,&QAction::setEnabled);
     m_syncView->addAction(action);
 
     action = 
sync1->addAction(QStringLiteral("merge_nextapproved"),m_syncView,SLOT(gotoNextChangedApproved()));
     action->setText(i18nc("@action:inmenu","Next different approved"));
     ac->setDefaultShortcut(action, 
QKeySequence(Qt::ALT+Qt::META+Qt::Key_Down));
-    connect( m_syncView, 
SIGNAL(signalNextChangedAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( m_syncView, 
&MergeView::signalNextChangedAvailable,action,&QAction::setEnabled);
     m_syncView->addAction(action);
 
     action = 
sync1->addAction(QStringLiteral("merge_accept"),m_syncView,SLOT(mergeAccept()));
     action->setText(i18nc("@action:inmenu","Copy from merging source"));
     action->setEnabled(false);
     ac->setDefaultShortcut(action, QKeySequence(Qt::ALT+Qt::Key_Return));
-    connect( m_syncView, 
SIGNAL(signalEntryWithMergeDisplayed(bool)),action,SLOT(setEnabled(bool)));
+    connect( m_syncView, 
&MergeView::signalEntryWithMergeDisplayed,action,&QAction::setEnabled);
     m_syncView->addAction(action);
 
     action = 
sync1->addAction(QStringLiteral("merge_acceptnew"),m_syncView,SLOT(mergeAcceptAllForEmpty()));
@@ -701,13 +703,13 @@
     action->setToolTip(action->statusTip());
     action->setWhatsThis(action->statusTip());
     ac->setDefaultShortcut(action, QKeySequence(Qt::CTRL+Qt::ALT+Qt::Key_A));
-    connect( m_syncView, 
SIGNAL(mergeCatalogAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( m_syncView, 
&MergeView::mergeCatalogAvailable,action,&QAction::setEnabled);
     m_syncView->addAction(action);
     //action->setShortcut(Qt::ALT+Qt::Key_E);
 
     action = 
sync1->addAction(QStringLiteral("merge_back"),m_syncView,SLOT(mergeBack()));
     action->setText(i18nc("@action:inmenu","Copy to merging source"));
-    connect( m_syncView, 
SIGNAL(mergeCatalogAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( m_syncView, 
&MergeView::mergeCatalogAvailable,action,&QAction::setEnabled);
     ac->setDefaultShortcut(action, 
QKeySequence(Qt::CTRL+Qt::ALT+Qt::Key_Return));
     m_syncView->addAction(action);
 
@@ -725,7 +727,7 @@
     action->setStatusTip(i18nc("@info:status","Previous entry which is 
translated differently in the file being merged, including empty translations 
in merge source"));
     action->setToolTip(action->statusTip());
     action->setWhatsThis(action->statusTip());
-    connect( m_syncViewSecondary, 
SIGNAL(signalPriorChangedAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( m_syncView, 
&MergeView::signalPriorChangedAvailable,action,&QAction::setEnabled);
     m_syncViewSecondary->addAction(action);
 
     action = 
sync2->addAction(QStringLiteral("mergesecondary_next"),m_syncViewSecondary,SLOT(gotoNextChanged()));
@@ -733,12 +735,12 @@
     action->setStatusTip(i18nc("@info:status","Next entry which is translated 
differently in the file being merged, including empty translations in merge 
source"));
     action->setToolTip(action->statusTip());
     action->setWhatsThis(action->statusTip());
-    connect( m_syncViewSecondary, 
SIGNAL(signalNextChangedAvailable(bool)),action,SLOT(setEnabled(bool)) );
+    connect( m_syncView, 
&MergeView::signalNextChangedAvailable,action,&QAction::setEnabled);
     m_syncViewSecondary->addAction(action);
 
     action = 
sync2->addAction(QStringLiteral("mergesecondary_accept"),m_syncViewSecondary,SLOT(mergeAccept()));
     action->setText(i18nc("@action:inmenu","Copy from merging source"));
-    connect( m_syncViewSecondary, 
SIGNAL(signalEntryWithMergeDisplayed(bool)),action,SLOT(setEnabled(bool)));
+    connect( m_syncView, 
&MergeView::signalEntryWithMergeDisplayed,action,&QAction::setEnabled);
     m_syncViewSecondary->addAction(action);
 
     action = 
sync2->addAction(QStringLiteral("mergesecondary_acceptnew"),m_syncViewSecondary,SLOT(mergeAcceptAllForEmpty()));
@@ -1463,11 +1465,18 @@
         mergeOpen(mergeFilePath);
 }
 
-void EditorTab::dispatchSrcFileOpenRequest(const QString& srcPath, int line)
+static void openLxrSearch(const QString& srcFileRelPath)
+{
+    
QDesktopServices::openUrl(QUrl(QStringLiteral("https://lxr.kde.org/search?_filestring=";)
+                                   + 
QString::fromLatin1(QUrl::toPercentEncoding(srcFileRelPath))));
+}
+
+
+void EditorTab::dispatchSrcFileOpenRequest(const QString& srcFileRelPath, int 
line)
 {
     // Try project scripts first.
     m_srcFileOpenRequestAccepted = false;
-    emit srcFileOpenRequested(srcPath, line);
+    emit srcFileOpenRequested(srcFileRelPath, line);
     if (m_srcFileOpenRequestAccepted)
         return;
 
@@ -1475,12 +1484,88 @@
     // path exists relative to the current translation file path.
     QDir relativePath(currentFilePath());
     relativePath.cdUp();
-    QString srcAbsolutePath(relativePath.absoluteFilePath(srcPath));
+    QString srcAbsolutePath(relativePath.absoluteFilePath(srcFileRelPath));
     if (QFile::exists(srcAbsolutePath)) {
         QDesktopServices::openUrl(QUrl::fromLocalFile(srcAbsolutePath));
         return;
     }
 
+    QString dir = Project::instance()->local()->sourceDir();
+    if (dir.isEmpty())
+    {
+        switch 
(KMessageBox::questionYesNoCancel(SettingsController::instance()->mainWindowPtr(),
+                                       i18nc("@info","Would you like to search 
for the source file locally or via lxr.kde.org?"),i18nc("@title:window","Source 
file lookup"),
+                                             KGuiItem(i18n("Locally")), 
KGuiItem("lxr.kde.org")
+                                            ))
+        {
+            case KMessageBox::Yes: break;
+            case KMessageBox::No: openLxrSearch(srcFileRelPath);
+            case KMessageBox::Cancel:
+            default:
+                return;
+        }
+    }
+
+    //hard fallback
+    if (dir.isEmpty())
+    {
+        dir = QFileDialog::getExistingDirectory(this, i18n("Select project's 
base folder for source file lookup"), QDir::homePath());
+        if (dir.length())
+            Project::instance()->local()->setSourceDir(dir);
+    }
+    if (dir.length())
+    {
+        auto doOpen = [srcFileRelPath]()
+        {
+            auto sourceFilePaths = Project::instance()->sourceFilePaths();
+            bool found = false;
+            QByteArray fn = 
srcFileRelPath.midRef(srcFileRelPath.lastIndexOf('/')+1).toUtf8();
+            auto it=sourceFilePaths.constFind(fn);
+            while (it!=sourceFilePaths.constEnd() && it.key() == fn)
+            {
+                const QString absFilePath = 
QString::fromUtf8(it.value()+'/'+fn);
+                if (!absFilePath.endsWith(srcFileRelPath) || 
!QFileInfo::exists(absFilePath) ) //for the case when link contained also 
folders
+                {
+                    it++;
+                    continue;
+                }
+                found = true;
+                QDesktopServices::openUrl(QUrl::fromLocalFile(absFilePath));
+                it++;
+            }
+            if (!found)
+            {
+                switch 
(KMessageBox::warningYesNoCancel(SettingsController::instance()->mainWindowPtr(),
+                                                i18nc("@info","Could not find 
source file in the folder specified.\n"
+                                                      "Do you want to change 
source files folder?"),i18nc("@title:window","Source file lookup"),
+                                                      KStandardGuiItem::yes(), 
KStandardGuiItem::no(), KGuiItem(i18n("lxr.kde.org"))))
+                {
+                    case KMessageBox::Cancel:
+                        Project::instance()->local()->setSourceDir(QString());
+                        Project::instance()->resetSourceFilePaths();
+                        openLxrSearch(srcFileRelPath);
+                    case KMessageBox::No:
+                        return;
+                    default: ; //fall through to dir selection
+                }
+
+                QString dir = QFileDialog::getExistingDirectory(0, 
i18n("Select project's base folder for source file lookup"), 
Project::instance()->local()->sourceDir());
+                if (dir.length())
+                {
+                    Project::instance()->local()->setSourceDir(dir);
+                    Project::instance()->resetSourceFilePaths();
+                }
+
+            }
+        };
+        if (!Project::instance()->sourceFilePaths().isEmpty())
+            doOpen();
+        else
+            connect(Project::instance(), &Project::sourceFilePathsAreReady, 
doOpen);
+        return;
+    }
+
+
     // Otherwise, let the user know how to create a project script to handle
     // opening source file paths that are not relative to translation files.
     KMessageBox::information(this, i18nc("@info",
@@ -1552,9 +1637,14 @@
             QStringList unoArgs(QStringLiteral("-c")); 
unoArgs.append(QStringLiteral("import uno"));
             if (QProcess::execute(python, unoArgs)!=0)
             {
-                
KMessageBox::information(SettingsController::instance()->mainWindowPtr(),
+                python=QStringLiteral("python3");
+                QStringList unoArgs(QStringLiteral("-c")); 
unoArgs.append(QStringLiteral("import uno"));
+                if (QProcess::execute(python, unoArgs)!=0)
+                {
+                    
KMessageBox::information(SettingsController::instance()->mainWindowPtr(),
                                          i18n("Install python-uno package for 
additional functionality."));
-                return;
+                    return;
+                }
             }
 
             QStringList reloaderArgs(reloaderScript);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/filesearch/filesearchtab.cpp 
new/lokalize-16.04.1/src/filesearch/filesearchtab.cpp
--- old/lokalize-15.12.3/src/filesearch/filesearchtab.cpp       2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/filesearch/filesearchtab.cpp       2016-05-02 
03:01:19.000000000 +0200
@@ -941,6 +941,14 @@
 
     return FILESEARCH_PATH + QString::number(m_dbusId);
 }
+
+bool FileSearchTab::findGuiTextPackage(QString text, QString package)
+{
+    setSourceQuery(text);
+    performSearch();
+
+    return true;
+}
 //END DBus interface
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/filesearch/filesearchtab.h 
new/lokalize-16.04.1/src/filesearch/filesearchtab.h
--- old/lokalize-15.12.3/src/filesearch/filesearchtab.h 2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/filesearch/filesearchtab.h 2016-05-02 
03:01:19.000000000 +0200
@@ -79,6 +79,10 @@
     Q_SCRIPTABLE void addFilesToSearch(const QStringList&);
     Q_SCRIPTABLE void setSourceQuery(const QString&);
     Q_SCRIPTABLE void setTargetQuery(const QString&);
+#ifndef NOKDE
+    Q_SCRIPTABLE bool findGuiText(QString text){return 
findGuiTextPackage(text,QString());}
+    Q_SCRIPTABLE bool findGuiTextPackage(QString text, QString package);
+#endif
     void fileSearchNext();
     void stopSearch();
     void massReplace(const QRegExp &what, const QString& with);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lokalize-15.12.3/src/filesearch/org.kde.lokalize.FileSearch.xml 
new/lokalize-16.04.1/src/filesearch/org.kde.lokalize.FileSearch.xml
--- old/lokalize-15.12.3/src/filesearch/org.kde.lokalize.FileSearch.xml 
2016-02-22 01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/filesearch/org.kde.lokalize.FileSearch.xml 
2016-05-02 03:01:19.000000000 +0200
@@ -6,5 +6,20 @@
     <method name="addFilesToSearch">
       <arg type="as" direction="in"/>
     </method>
+    <method name="setSourceQuery">
+      <arg type="s" direction="in"/>
+    </method>
+    <method name="setTargetQuery">
+      <arg type="s" direction="in"/>
+    </method>
+    <method name="findGuiText">
+      <arg type="b" direction="out"/>
+      <arg name="text" type="s" direction="in"/>
+    </method>
+    <method name="findGuiTextPackage">
+      <arg type="b" direction="out"/>
+      <arg name="text" type="s" direction="in"/>
+      <arg name="package" type="s" direction="in"/>
+    </method>
   </interface>
 </node>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/lokalize.notifyrc 
new/lokalize-16.04.1/src/lokalize.notifyrc
--- old/lokalize-15.12.3/src/lokalize.notifyrc  2016-02-22 01:42:06.000000000 
+0100
+++ new/lokalize-16.04.1/src/lokalize.notifyrc  2016-05-02 03:01:19.000000000 
+0200
@@ -232,3 +232,28 @@
 Name[zh_CN]=未找到 Qt SQL 模块
 Name[zh_TW]=找不到 Qt Sql 模組
 Action=Popup
+
+[Event/SourceFileScan]
+Name=Scanning folders with source files...
+Name[ast]=Escaniando carpetes con ficheros fonte...
+Name[ca]=S'estan explorant les carpetes amb els fitxers de codi font...
+Name[ca@valencia]=S'estan explorant les carpetes amb els fitxers de codi 
font...
+Name[de]=Ordner mit Quelldateien wird durchsucht ...
+Name[en_GB]=Scanning folders with source files...
+Name[es]=Explorando carpetas con archivos de código fuente...
+Name[fi]=Etsitään lähdekoodikansiosta…
+Name[gl]=Examinando os cartafoles con ficheiros fonte…
+Name[nl]=Mappen scannen met bronbestanden...
+Name[pl]=Przeszukiwanie katalogów z plikami źródłowymi...
+Name[pt]=A sondar as pastas com os ficheiros de origem...
+Name[pt_BR]=Analisando as pastas com os arquivos de origem...
+Name[sk]=Prehľadávam priečinky so zdrojovými súbormi...
+Name[sl]=Preiskovanje map z izvornimi datotekami ...
+Name[sr]=Скенирам фасцикле изворних фајлова...
+Name[sr@ijekavian]=Скенирам фасцикле изворних фајлова...
+Name[sr@ijekavianlatin]=Skeniram fascikle izvornih fajlova...
+Name[sr@latin]=Skeniram fascikle izvornih fajlova...
+Name[sv]=Söker igenom kataloger med källfiler...
+Name[uk]=Шукаємо початкові файли у теках…
+Name[x-test]=xxScanning folders with source files...xx
+Action=Popup
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/lokalizemainwindow.cpp 
new/lokalize-16.04.1/src/lokalizemainwindow.cpp
--- old/lokalize-15.12.3/src/lokalizemainwindow.cpp     2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/lokalizemainwindow.cpp     2016-05-02 
03:01:19.000000000 +0200
@@ -81,12 +81,10 @@
     m_mdiArea->setViewMode(QMdiArea::TabbedView);
     m_mdiArea->setActivationOrder(QMdiArea::ActivationHistoryOrder);
     m_mdiArea->setDocumentMode(true);
-#if QT_VERSION >= 0x040800
     m_mdiArea->setTabsMovable(true);
-#endif
 
     setCentralWidget(m_mdiArea);
-    connect(m_mdiArea, 
SIGNAL(subWindowActivated(QMdiSubWindow*)),this,SLOT(slotSubWindowActivated(QMdiSubWindow*)));
+    connect(m_mdiArea, 
&QMdiArea::subWindowActivated,this,&LokalizeMainWindow::slotSubWindowActivated);
     setupActions();
 
     //prevent relayout of dockwidgets
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/main.cpp 
new/lokalize-16.04.1/src/main.cpp
--- old/lokalize-15.12.3/src/main.cpp   2016-02-22 01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/main.cpp   2016-05-02 03:01:19.000000000 +0200
@@ -152,7 +152,7 @@
         Q_FOREACH (const QString& filePath, parser.positionalArguments())
             if (filePath.endsWith(QLatin1String(".lokalize")))
                 projectFilePath = filePath;
-            else if (QFile::exists(filePath))
+            else if (QFileInfo::exists(filePath))
                 urls.append(filePath);
 
         if (projectFilePath.length())
@@ -185,7 +185,7 @@
     {
         for (int j=0; j<parser.positionalArguments().count(); j++)
         {
-            if (!QFile::exists(parser.positionalArguments().at(j))) continue;
+            if (!QFileInfo::exists(parser.positionalArguments().at(j))) 
continue;
             strncpy(sentPath, 
parser.positionalArguments().at(j).toUtf8().constData(), 255);
             MyCDS.dwData = FILEPATHMESSAGE;
             MyCDS.cbData = sizeof( sentPath );  // size of data
@@ -211,7 +211,7 @@
 #endif
     SettingsController::instance()->ensureProjectIsLoaded();
     for (int j=0; j<parser.positionalArguments().count(); j++)
-        if (QFile::exists(parser.positionalArguments().at(j))) 
Project::instance()->fileOpen(parser.positionalArguments().at(j));
+        if (QFileInfo::exists(parser.positionalArguments().at(j))) 
Project::instance()->fileOpen(parser.positionalArguments().at(j));
     if (!parser.positionalArguments().count())
     {
         WelcomeTab* welcome=new WelcomeTab(0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/msgctxtview.cpp 
new/lokalize-16.04.1/src/msgctxtview.cpp
--- old/lokalize-15.12.3/src/msgctxtview.cpp    2016-02-22 01:42:06.000000000 
+0100
+++ new/lokalize-16.04.1/src/msgctxtview.cpp    2016-05-02 03:01:19.000000000 
+0200
@@ -64,7 +64,7 @@
 
     m_browser->viewport()->setBackgroundRole(QPalette::Background);
     m_browser->setOpenLinks(false);
-    
connect(m_browser,SIGNAL(anchorClicked(QUrl)),this,SLOT(anchorClicked(QUrl)));
+    
connect(m_browser,&QTextBrowser::anchorClicked,this,&MsgCtxtView::anchorClicked);
 }
 
 MsgCtxtView::~MsgCtxtView()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/project/project.cpp 
new/lokalize-16.04.1/src/project/project.cpp
--- old/lokalize-15.12.3/src/project/project.cpp        2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/project/project.cpp        2016-05-02 
03:01:19.000000000 +0200
@@ -37,6 +37,7 @@
 
 #include <klocalizedstring.h>
 #include <kmessagebox.h>
+#include <knotification.h>
 
 #include <QLocale>
 #include <QTimer>
@@ -50,6 +51,10 @@
 #include "projectmodel.h"
 #include "webquerycontroller.h"
 
+#include <kio/global.h>
+#include <kjob.h>
+#include <kjobtrackerinterface.h>
+
 #include <kross/core/action.h>
 #include <kross/core/actioncollection.h>
 #include <kross/core/manager.h>
@@ -163,7 +168,7 @@
 
 #ifndef NOKDE
     setSharedConfig(KSharedConfig::openConfig(newProjectPath, 
KConfig::NoGlobals));
-    if (!QFile::exists(newProjectPath)) Project::instance()->setDefaults();
+    if (!QFileInfo::exists(newProjectPath)) Project::instance()->setDefaults();
     ProjectBase::load();
 #else
 #endif
@@ -195,6 +200,8 @@
     //QTimer::singleShot(0,this,SLOT(populateGlossary()));
     populateGlossary();//we cant postpone it because project load can be 
called from define new term function
 
+    m_sourceFilePaths.clear();
+
     if (newProjectPath.isEmpty())
         return;
 
@@ -239,11 +246,11 @@
 void Project::populateDirModel()
 {
 #ifndef NOKDE
-    if (KDE_ISUNLIKELY( m_path.isEmpty() || !QFile::exists(poDir()) ))
+    if (KDE_ISUNLIKELY( m_path.isEmpty() || !QFileInfo::exists(poDir()) ))
         return;
 
     QUrl potUrl;
-    if (QFile::exists(potDir()))
+    if (QFileInfo::exists(potDir()))
         potUrl=QUrl::fromLocalFile(potDir());
     model()->setUrl(QUrl::fromLocalFile(poDir()), potUrl);
 #endif
@@ -347,7 +354,115 @@
 
 
 
+static void fillFilePathsRecursive(const QDir& dir, QMultiMap<QByteArray, 
QByteArray>& sourceFilePaths)
+{
+    QStringList 
subDirs(dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot|QDir::Readable));
+    int i=subDirs.size();
+    while(--i>=0)
+        
fillFilePathsRecursive(QDir(dir.filePath(subDirs.at(i))),sourceFilePaths);
+
+    static QStringList filters = QStringList(QStringLiteral("*.cpp"))
+                                           <<QStringLiteral("*.c")
+                                           <<QStringLiteral("*.cc")
+                                           <<QStringLiteral("*.mm")
+                                           <<QStringLiteral("*.ui")
+                                           <<QStringLiteral("*rc");
+    QStringList files(dir.entryList(filters, 
QDir::Files|QDir::NoDotAndDotDot|QDir::Readable));
+    i=files.size();
+
+    QByteArray absDirPath=dir.absolutePath().toUtf8(); absDirPath.squeeze();
+    while(--i>=0)
+    {
+        //qDebug()<<files.at(i)<<absDirPath;
+        QByteArray fn=files.at(i).toUtf8(); fn.squeeze();
+        auto it=sourceFilePaths.constFind(fn);
+        if (it!=sourceFilePaths.constEnd())
+            sourceFilePaths.insert(it.key(), absDirPath); //avoid having 
identical qbytearray objects to save memory
+        else
+            sourceFilePaths.insert(fn, absDirPath);
+    }
+}
+
+
+#ifndef NOKDE
+class SourceFilesSearchJob: public KJob
+{
+public:
+    SourceFilesSearchJob(const QString& folderName, QObject* parent=0);
+    void start();
+    void finish(){emitResult(); emit 
Project::instance()->sourceFilePathsAreReady();}
+protected:
+    bool doKill();
+
+private:
+    QString m_folderName;
+};
+
+SourceFilesSearchJob::SourceFilesSearchJob(const QString& folderName, QObject* 
parent)
+    : KJob(parent)
+    , m_folderName(folderName)
+{
+    setCapabilities(KJob::Killable);
+}
+
+bool SourceFilesSearchJob::doKill()
+{
+    //TODO
+    return true;
+}
 
+class FillSourceFilePathsJob: public QRunnable
+{
+public:
+    explicit FillSourceFilePathsJob(const QDir& dir, SourceFilesSearchJob* 
j):startingDir(dir),kj(j){}
+
+protected:
+    void run()
+    {
+        QMultiMap<QByteArray, QByteArray> sourceFilePaths;
+        fillFilePathsRecursive(startingDir, sourceFilePaths);
+        Project::instance()->m_sourceFilePaths = sourceFilePaths;
+        QTimer::singleShot(0, kj, &SourceFilesSearchJob::finish);
+    }
+public:
+    QDir startingDir;
+    SourceFilesSearchJob* kj;
+};
+
+
+void SourceFilesSearchJob::start()
+{
+    QThreadPool::globalInstance()->start(new 
FillSourceFilePathsJob(QDir(m_folderName), this));
+    emit description(this,
+                i18n("Scanning folders with source files"),
+                qMakePair(i18n("Editor"), m_folderName));
+}
+#endif
+
+const QMultiMap<QByteArray, QByteArray>& Project::sourceFilePaths()
+{
+    if (m_sourceFilePaths.isEmpty())
+    {
+        QDir dir(local()->sourceDir());
+        if (dir.exists())
+        {
+#ifndef NOKDE
+            SourceFilesSearchJob* metaJob = new 
SourceFilesSearchJob(local()->sourceDir());
+            KIO::getJobTracker()->registerJob(metaJob);
+            metaJob->start();
+
+            //KNotification* notification=new KNotification("SourceFileScan", 
0);
+            //notification->setText( i18nc("@info","Please wait while %1 is 
being scanned for source files.", local()->sourceDir()) );
+            //notification->sendEvent();
+#else
+            QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+            fillFilePathsRecursive(dir, m_sourceFilePaths);
+            QApplication::restoreOverrideCursor();
+#endif
+        }
+    }
+    return m_sourceFilePaths;
+}
 
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/project/project.h 
new/lokalize-16.04.1/src/project/project.h
--- old/lokalize-15.12.3/src/project/project.h  2016-02-22 01:42:06.000000000 
+0100
+++ new/lokalize-16.04.1/src/project/project.h  2016-05-02 03:01:19.000000000 
+0200
@@ -121,6 +121,13 @@
     static Project* instance();
     static ProjectLocal* local(){return instance()->m_localConfig;}
 
+    const QMultiMap<QByteArray, QByteArray>& sourceFilePaths();
+    void resetSourceFilePaths(){m_sourceFilePaths.clear();}
+
+    friend class FillSourceFilePathsJob;
+signals:
+    void sourceFilePathsAreReady();
+
 private:
     QString m_path;
     QString m_desirablePath;
@@ -130,6 +137,8 @@
     GlossaryNS::GlossaryWindow* m_glossaryWindow;
     TM::TMManagerWin* m_tmManagerWindow;
 
+    QMultiMap<QByteArray, QByteArray> m_sourceFilePaths;
+
     //cache
     QString m_projectDir;
  };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/project/projectlocal.kcfg 
new/lokalize-16.04.1/src/project/projectlocal.kcfg
--- old/lokalize-15.12.3/src/project/projectlocal.kcfg  2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/project/projectlocal.kcfg  2016-05-02 
03:01:19.000000000 +0200
@@ -4,6 +4,9 @@
       xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
                           http://www.kde.org/standards/kcfg/1.0/kcfg.xsd"; >
   <kcfgfile arg="true"/>
+  <group name="General">
+    <entry name="SourceDir"  type="String"></entry>
+  </group>
   <group name="Personal">
     <entry name="Role" type="Enum">
       <choices name="PersonRole">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/project/projectmodel.cpp 
new/lokalize-16.04.1/src/project/projectmodel.cpp
--- old/lokalize-15.12.3/src/project/projectmodel.cpp   2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/project/projectmodel.cpp   2016-05-02 
03:01:19.000000000 +0200
@@ -75,28 +75,22 @@
     m_potModel.dirLister()->setAutoErrorHandlingEnabled(false, NULL);
     m_potModel.dirLister()->setNameFilter(QStringLiteral("*.pot"));
 
-    connect(&m_poModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
-            this, SLOT(po_dataChanged(QModelIndex,QModelIndex)));
+    connect(&m_poModel, &KDirModel::dataChanged, this, 
&ProjectModel::po_dataChanged);
 
-    connect(&m_poModel, SIGNAL(rowsInserted(QModelIndex,int,int)),
-            this, SLOT(po_rowsInserted(QModelIndex,int,int)));
+    connect(&m_poModel, &KDirModel::rowsInserted, this, 
&ProjectModel::po_rowsInserted);
 
-    connect(&m_poModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),
-            this, SLOT(po_rowsRemoved(QModelIndex,int,int)));
+    connect(&m_poModel, &KDirModel::rowsRemoved, this, 
&ProjectModel::po_rowsRemoved);
 
-    connect(&m_potModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
-            this, SLOT(pot_dataChanged(QModelIndex,QModelIndex)));
+    connect(&m_potModel, &KDirModel::dataChanged, this, 
&ProjectModel::pot_dataChanged);
 
-    connect(&m_potModel, SIGNAL(rowsInserted(QModelIndex,int,int)),
-            this, SLOT(pot_rowsInserted(QModelIndex,int,int)));
+    connect(&m_potModel, &KDirModel::rowsInserted, this, 
&ProjectModel::pot_rowsInserted);
 
-    connect(&m_potModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),
-            this, SLOT(pot_rowsRemoved(QModelIndex,int,int)));
+    connect(&m_potModel, &KDirModel::rowsRemoved, this, 
&ProjectModel::pot_rowsRemoved);
 
     m_delayedReloadTimer->setSingleShot(true);
     m_doneTimer->setSingleShot(true);
-    connect(m_doneTimer, SIGNAL(timeout()), this, SLOT(updateTotalsChanged()));
-    connect(m_delayedReloadTimer, SIGNAL(timeout()), this, SLOT(reload()));
+    connect(m_doneTimer, &QTimer::timeout, this, 
&ProjectModel::updateTotalsChanged);
+    connect(m_delayedReloadTimer, &QTimer::timeout, this, 
&ProjectModel::reload);
 
     setUrl(QUrl(), QUrl());
 }
@@ -1053,9 +1047,7 @@
         files.append(itemForIndex(index(row, 0, item)));
 
     m_activeJob = new UpdateStatsJob(files, this);
-    connect(
-        m_activeJob,SIGNAL(done(UpdateStatsJob*)),
-        this,SLOT(finishMetadataUpdate(UpdateStatsJob*)));
+    connect(m_activeJob, &UpdateStatsJob::done, this, 
&ProjectModel::finishMetadataUpdate);
 
     m_threadPool->start(m_activeJob);
 }
@@ -1105,8 +1097,7 @@
     files.append(itemForIndex(index));
 
     UpdateStatsJob* j = new UpdateStatsJob(files);
-    connect(j,SIGNAL(done(UpdateStatsJob*)),
-        this,SLOT(finishSingleMetadataUpdate(UpdateStatsJob*)));
+    connect(j, &UpdateStatsJob::done, this, 
&ProjectModel::finishSingleMetadataUpdate);
 
     m_threadPool->start(j);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/project/projecttab.cpp 
new/lokalize-16.04.1/src/project/projecttab.cpp
--- old/lokalize-15.12.3/src/project/projecttab.cpp     2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/project/projecttab.cpp     2016-05-02 
03:01:19.000000000 +0200
@@ -246,7 +246,7 @@
     menu->addAction(i18nc("@action:inmenu","Add to translation 
memory"),this,SLOT(scanFilesToTM()));
 
     menu->addAction(i18nc("@action:inmenu","Search in 
files"),this,SLOT(searchInFiles()));
-    if (QFileInfo(Project::instance()->templatesRoot()).exists())
+    if (QDir(Project::instance()->templatesRoot()).exists())
         menu->addAction(i18nc("@action:inmenu","Search in files (including 
templates)"),this,SLOT(searchInFilesInclTempl()));
 
 //     else if 
(Project::instance()->model()->hasChildren(/*m_proxyModel->mapToSource(*/(m_browser->currentIndex()))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/syntaxhighlighter.cpp 
new/lokalize-16.04.1/src/syntaxhighlighter.cpp
--- old/lokalize-15.12.3/src/syntaxhighlighter.cpp      2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/syntaxhighlighter.cpp      2016-05-02 
03:01:19.000000000 +0200
@@ -108,7 +108,7 @@
 
 void SyntaxHighlighter::settingsChanged()
 {
-    QRegExp re(QStringLiteral(" +$|^ +|.?")%QChar(0x0000AD)%(".?")); //soft 
hyphen
+    QRegExp re(" +$|^ +|.?"%QChar(0x0000AD)%".?"); //soft hyphen
     if (Settings::highlightSpaces() && highlightingRules.last().pattern!=re)
     {
         HighlightingRule rule;
@@ -117,14 +117,18 @@
 #ifndef NOKDE
         KColorScheme colorScheme(QPalette::Normal);
         //nbsp
-        
rule.format.setBackground(colorScheme.background(KColorScheme::AlternateBackground));
+        
//rule.format.setBackground(colorScheme.background(KColorScheme::NegativeBackground));
+        
rule.format.setBackground(colorScheme.foreground(KColorScheme::InactiveText));
 #else
         rule.format.setBackground(QApplication::palette().alternateBase());
 #endif
-        rule.pattern = QRegExp(QChar(0x00a0U));
+        rule.format.setFontLetterSpacing(200);
+
+        rule.pattern = QRegExp(QChar(0x00a0U), Qt::CaseSensitive, 
QRegExp::FixedString);
         highlightingRules.append(rule);
 
         //usual spaces at the end
+        rule.format.setFontLetterSpacing(100);
 #ifndef NOKDE
         
rule.format.setBackground(colorScheme.background(KColorScheme::ActiveBackground));
 #else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/tm/jobs.cpp 
new/lokalize-16.04.1/src/tm/jobs.cpp
--- old/lokalize-15.12.3/src/tm/jobs.cpp        2016-02-22 01:42:06.000000000 
+0100
+++ new/lokalize-16.04.1/src/tm/jobs.cpp        2016-05-02 03:01:19.000000000 
+0200
@@ -1238,7 +1238,7 @@
         return false;
     bool seen85=false;
     int limit=200;
-    QMap<uint,qlonglong>::const_iterator clit=concordanceLevelToIds.constEnd();
+    auto clit=concordanceLevelToIds.constEnd();
     if (concordanceLevelToIds.size()) --clit;
     if (concordanceLevelToIds.size()) while (--limit>=0)
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/tm/tmtab.cpp 
new/lokalize-16.04.1/src/tm/tmtab.cpp
--- old/lokalize-15.12.3/src/tm/tmtab.cpp       2016-02-22 01:42:06.000000000 
+0100
+++ new/lokalize-16.04.1/src/tm/tmtab.cpp       2016-05-02 03:01:19.000000000 
+0200
@@ -780,7 +780,6 @@
 
 bool TMTab::findGuiTextPackage(QString text, QString package)
 {
-    
//std::cout<<package.toLatin1().constData()<<text.toLatin1().constData()<<std::endl;
     qWarning()<<package<<text;
     QLineEdit* const 
source_target_query[]={ui_queryOptions->queryTarget,ui_queryOptions->querySource};
     static const DocPosition::Part 
source_target[]={DocPosition::Target,DocPosition::Source};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lokalize-15.12.3/src/tm/tmview.cpp 
new/lokalize-16.04.1/src/tm/tmview.cpp
--- old/lokalize-15.12.3/src/tm/tmview.cpp      2016-02-22 01:42:06.000000000 
+0100
+++ new/lokalize-16.04.1/src/tm/tmview.cpp      2016-05-02 03:01:19.000000000 
+0200
@@ -703,7 +703,7 @@
     DiffInfo d=getDiffInfo(diff);
 
     bool 
sameMarkup=Project::instance()->markup()==entry.markupExpr&&!entry.markupExpr.isEmpty();
-    bool tryMarkup=entry.target.tags.size() && sameMarkup;
+    bool tryMarkup=!entry.target.tags.size() && sameMarkup;
     //search for changed markup
     if (tryMarkup)
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lokalize-15.12.3/src/tools/widgettextcaptureconfig.cpp 
new/lokalize-16.04.1/src/tools/widgettextcaptureconfig.cpp
--- old/lokalize-15.12.3/src/tools/widgettextcaptureconfig.cpp  2016-02-22 
01:42:06.000000000 +0100
+++ new/lokalize-16.04.1/src/tools/widgettextcaptureconfig.cpp  2016-05-02 
03:01:19.000000000 +0200
@@ -61,7 +61,7 @@
     if (ui->clipboard->isChecked())
         cg.writeEntry("CopyWidgetTextCommand", QString());
     else if (ui->search->isChecked())
-        cg.writeEntry("CopyWidgetTextCommand", "/bin/sh `kde4-config --path 
data --locate lokalize/scripts/find-gui-text.sh` \"%1\" \"%2\"");
+        cg.writeEntry("CopyWidgetTextCommand", "/bin/sh 
/usr/share/lokalize/scripts/find-gui-text.sh \"%1\" \"%2\"");
 
     konfig.sync();
 }


Reply via email to