]> gitweb.hamatoma.de Git - reqt/commitdiff
refind: refactoring, German texts
authorhama <hama@siduction.net>
Sat, 20 Feb 2016 17:55:37 +0000 (18:55 +0100)
committerhama <hama@siduction.net>
Sat, 20 Feb 2016 17:55:37 +0000 (18:55 +0100)
* text improvements: tooltips, short cuts...
* using base class ReGuiApplication: multi language support
* removing base class ReObserver: not used

14 files changed:
appl/refind/aboutdialog.ui
appl/refind/dialogoptions.ui
appl/refind/filefinder.cpp
appl/refind/filefinder.hpp
appl/refind/main.cpp
appl/refind/mainwindow.cpp
appl/refind/mainwindow.hpp
appl/refind/mainwindow.ui
appl/refind/refind.de.qm [new file with mode: 0644]
appl/refind/refind.de.ts [new file with mode: 0644]
appl/refind/refind.pro
appl/refind/refind_de.ts [deleted file]
gui/ReGuiApplication.cpp
gui/ReStateStorage.cpp

index 50d1dd86115a0c81a18c181c3cfcbc713d1617c6..905fe047340e4573b644aac1a8f248f583a0dad5 100644 (file)
@@ -7,93 +7,81 @@
     <x>0</x>
     <y>0</y>
     <width>423</width>
-    <height>289</height>
+    <height>305</height>
    </rect>
   </property>
   <property name="windowTitle">
-   <string>Dialog</string>
+   <string>About the Program</string>
   </property>
   <property name="modal">
    <bool>true</bool>
   </property>
-  <widget class="QTextEdit" name="textEdit">
-   <property name="geometry">
-    <rect>
-     <x>20</x>
-     <y>20</y>
-     <width>381</width>
-     <height>221</height>
-    </rect>
-   </property>
-   <property name="readOnly">
-    <bool>true</bool>
-   </property>
-   <property name="html">
-    <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QTextEdit" name="textEdit">
+     <property name="readOnly">
+      <bool>true</bool>
+     </property>
+     <property name="html">
+      <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
 &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
 p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;ReFind&lt;/span&gt; for searching files in a directory tree.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This is a program of the project&lt;/p&gt;
-&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Re&lt;/span&gt;al &lt;span style=&quot; font-weight:600;&quot;&gt;Pub&lt;/span&gt;lic &lt;span style=&quot; font-weight:600;&quot;&gt;Lib&lt;/span&gt;rary (RePubLib)&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Sources are public domain and available under&lt;/p&gt;
-&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://github.com/republib&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/republib&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Implemented in QT (C++) 5.x&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Icons: Mark James, &lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-   </property>
-   <property name="acceptRichText">
-    <bool>false</bool>
-   </property>
-   <property name="textInteractionFlags">
-    <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
-   </property>
-  </widget>
-  <widget class="QWidget" name="">
-   <property name="geometry">
-    <rect>
-     <x>20</x>
-     <y>250</y>
-     <width>381</width>
-     <height>29</height>
-    </rect>
-   </property>
-   <layout class="QHBoxLayout" name="horizontalLayout">
-    <item>
-     <widget class="QLabel" name="label">
-      <property name="text">
-       <string>Version:</string>
-      </property>
-     </widget>
-    </item>
-    <item>
-     <widget class="QLabel" name="labelVersion">
-      <property name="text">
-       <string>2015.05.00</string>
-      </property>
-     </widget>
-    </item>
-    <item>
-     <spacer name="horizontalSpacer">
-      <property name="orientation">
-       <enum>Qt::Horizontal</enum>
-      </property>
-      <property name="sizeHint" stdset="0">
-       <size>
-        <width>40</width>
-        <height>20</height>
-       </size>
-      </property>
-     </spacer>
-    </item>
-    <item>
-     <widget class="QPushButton" name="pushButtonOK">
-      <property name="text">
-       <string>&amp;OK</string>
-      </property>
-     </widget>
-    </item>
-   </layout>
-  </widget>
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Droid Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:600;&quot;&gt;ReFind&lt;/span&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; for searching files in a directory tree.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;This is a program of the project&lt;/span&gt;&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:600;&quot;&gt;Re&lt;/span&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;al &lt;/span&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:600;&quot;&gt;Pub&lt;/span&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;lic &lt;/span&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:600;&quot;&gt;Lib&lt;/span&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;rary (RePubLib)&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Sources are public domain and available under&lt;/span&gt;&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://github.com/republib&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/republib&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Implemented in QT (C++) 5.x&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt;Icons: Mark James, &lt;/span&gt;&lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+     <property name="acceptRichText">
+      <bool>false</bool>
+     </property>
+     <property name="textInteractionFlags">
+      <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QLabel" name="label">
+       <property name="text">
+        <string>Version:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="labelVersion">
+       <property name="text">
+        <string notr="true">2015.05.00</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="pushButtonOK">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
  </widget>
  <resources/>
  <connections>
index 55660461016e8772abb61c12bbc48b4783f61684..e5688f8ab67b294ede71ad09913b571507c3a8c0 100644 (file)
@@ -11,7 +11,7 @@
    </rect>
   </property>
   <property name="windowTitle">
-   <string>Dialog</string>
+   <string>Options</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_2">
    <item>
          </attribute>
          <row>
           <property name="text">
-           <string>Neue Zeile</string>
+           <string notr="true">Editor</string>
           </property>
          </row>
          <row>
           <property name="text">
-           <string>edit</string>
+           <string notr="true">Shell</string>
           </property>
          </row>
          <column>
          </item>
          <item row="0" column="2">
           <property name="text">
-           <string>/usr/bin/kate</string>
+           <string notr="true">/usr/bin/kate</string>
           </property>
          </item>
          <item row="0" column="3">
           <property name="text">
-           <string>${full}</string>
+           <string notr="true">${full}</string>
           </property>
          </item>
          <item row="0" column="4">
          </item>
          <item row="1" column="2">
           <property name="text">
-           <string>/usr/bin/bash</string>
+           <string notr="true">/usr/bin/bash</string>
           </property>
          </item>
          <item row="1" column="3">
           <property name="text">
-           <string/>
+           <string notr="true"/>
           </property>
          </item>
         </widget>
                </size>
               </property>
               <property name="text">
-               <string>...</string>
+               <string notr="true">...</string>
               </property>
               <property name="icon">
-               <iconset resource="../reditor/editor.qrc">
+               <iconset resource="refind.qrc">
                 <normaloff>:/main/icons/layout_add.png</normaloff>:/main/icons/layout_add.png</iconset>
               </property>
              </widget>
    </item>
   </layout>
  </widget>
- <resources/>
+ <resources>
+  <include location="refind.qrc"/>
+ </resources>
  <connections>
   <connection>
    <sender>buttonBox</sender>
index f051932ca764d36117ed5ec6b98bdcdcda80deee..ed1e2ad416c2c7225293bb3ceab566975bf3624d 100644 (file)
@@ -203,21 +203,21 @@ void FileFinder::run()
  * Fills the table with the data of the filtered files of a given directory.
  */
 void FileFinder::search(){
-       clock_t start = clock();
+       qint64 start = QDateTime::currentMSecsSinceEpoch();
        setStop(false);
        m_statistics.clear();
        QString path = ReFileUtils::nativePath(m_baseDir);
        ReQStringUtils::chomp(path, OS_SEPARATOR);
        fillTable(path, 0);
-       m_statistics.m_runtimeSeconds = (double) (clock() - start)
-          / CLOCKS_PER_SEC;
+       qint64 now = QDateTime::currentMSecsSinceEpoch();
+       m_statistics.m_runtimeSeconds = (now - start) / 1000;
        QString msg;
-       msg.sprintf(
-                               I18N::s2b(QObject::tr(
-                                                         "Found: %d dir(s) and %d file(s) with %.6f MByte. Duration of the search: %.3f sec")),
-                               m_statistics.m_dirs, m_statistics.m_files,
-                               m_statistics.m_bytes / 1000000.0, m_statistics.m_runtimeSeconds);
-       m_guiQueue->pushBack(ReGuiQueueItem(ReGuiQueueItem::ReadyMessage, NULL, msg));
+       m_guiQueue->pushBack(ReGuiQueueItem(ReGuiQueueItem::ReadyMessage, NULL,
+               QObject::tr("Found: %1 dir(s) and %2 file(s) with %3. Runtime: %4")
+                               .arg(m_statistics.m_dirs)
+                               .arg(m_statistics.m_files)
+                               .arg(ReQStringUtils::readableSize(m_statistics.m_bytes))
+                               .arg(ReQStringUtils::readableDuration(now - start))));
 }
 
 /**
@@ -359,15 +359,6 @@ void FileFinder::setMinSize(const int64_t& minSize){
    m_minSize = minSize;
 }
 
-/**
- * Sets the observer object. Will be notified about the search exit.
- * @param observer
- */
-void FileFinder::setObserver(ReObserver* observer)
-{
-       m_observer = observer;
-}
-
 /**
  * Sets the date time which is the lower bound.
  *
index 6df6ee0ea7fd3b6e47cb6b27415c4ff6bef10231..68e868ca7d8e5e1d9b0614ca661b29e64bae488d 100644 (file)
@@ -66,7 +66,6 @@ private:
    TextFinder* m_textFinder;
    QTableWidget* m_table;
    Statistics m_statistics;
-   ReObserver* m_observer;
    ReGuiQueue* m_guiQueue;
    int m_maxHits;
    bool m_stop;
index 6bc3b2c67299c459251271a9d1882c11e86b7759..d30b85b4e2d533d8ead2d2ad378936073d0165ea 100644 (file)
@@ -19,7 +19,7 @@ int main(int argc, char *argv[]){
    QApplication app(argc, argv);
    QString startDir = argc > 1 ? argv[1] : "";
    QString homeDir = argc > 2 ? argv[2] : "";
-   MainWindow w(startDir, homeDir);
+   MainWindow w(app, homeDir, startDir);
 
    QObject::connect(&app, SIGNAL(aboutToQuit()), &w, SLOT(closing()));
 
index 33c0a810eaa8959d58e868c6abdd6978a2e17f5c..0bd4ff38a58ccf3198ffb64d0063d2e2b800a3a7 100644 (file)
@@ -31,7 +31,7 @@
 #include <QProcess>
 #include <QMessageBox>
 
-const QString VERSION("2015.12.24");
+const QString VERSION("2016.02.20");
 
 inline QString addEsc(const QString& text){
        QString rc = text;
@@ -48,12 +48,11 @@ inline QString addEsc(const QString& text){
  * @param homeDir      the base directory for the configuration files
  * @param parent    NULL or the parent widget
  */
-MainWindow::MainWindow(const QString& startDir, const QString& homeDir,
-   QWidget *parent) :
-                       QMainWindow(parent),
+MainWindow::MainWindow(QApplication& application, const QString& homeDir,
+                                          const QString& startDir, QWidget *parent) :
+                       ReGuiApplication(application, "refind", homeDir, 2, 100100100, "de", parent),
+                       ReGuiValidator(),
                        ui(new Ui::MainWindow),
-                       m_statusMessage(NULL),
-                       m_stdLabelBackgroundRole(NULL),
                        m_textFinder(),
                        m_lastBaseDir(),
                        m_horizontalHeader(NULL),
@@ -64,65 +63,9 @@ MainWindow::MainWindow(const QString& startDir, const QString& homeDir,
                        m_logger(new ReMemoryLogger()),
                        m_finder(NULL),
                        m_guiQueue(),
-                       m_guiTimer(new QTimer(this)){
-   ui->setupUi(this);
-   initializeHome();
-   m_statusMessage = new QLabel(tr("Welcome at refind"));
-   if (!startDir.isEmpty())
-         ui->comboBoxDirectory->setCurrentText(startDir);
-   if (ui->comboBoxDirectory->currentText().isEmpty())
-         ui->comboBoxDirectory->setCurrentText(QDir::currentPath());
-   ui->tableWidget->setMainWindow(this);
-   statusBar()->addWidget(m_statusMessage);
-   connect(ui->actionStart, SIGNAL(triggered()), this, SLOT(search()));
-   connect(ui->actionClear, SIGNAL(triggered()), this, SLOT(clear()));
-   connect(ui->actionStop, SIGNAL(triggered()), this, SLOT(stop()));
-   connect(ui->pushButtonSearch, SIGNAL(clicked()), this, SLOT(search()));
-   connect(ui->pushButtonSearch2, SIGNAL(clicked()), this, SLOT(search()));
-   connect(ui->pushButtonStop, SIGNAL(clicked()), this, SLOT(stop()));
-   connect(ui->pushButtonStop2, SIGNAL(clicked()), this, SLOT(stop()));
-   connect(ui->pushButtonClear, SIGNAL(clicked()), this, SLOT(clear()));
-   connect(ui->actionUp, SIGNAL(triggered()), this, SLOT(up()));
-   connect(ui->pushButtonUp, SIGNAL(clicked()), this, SLOT(up()));
-   connect(ui->actionSelectDirectory, SIGNAL(triggered()), this,
-         SLOT(selectDirectory()));
-   connect(ui->actionSaveProgramState, SIGNAL(triggered()), this,
-         SLOT(saveState()));
-   connect(ui->pushButtonDirectory, SIGNAL(clicked()), this,
-         SLOT(selectDirectory()));
-   connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(about()));
-   connect(ui->actionOptions, SIGNAL(triggered()), this, SLOT(options()));
-   connect(ui->actionGetAbsPath, SIGNAL(triggered()), this,
-         SLOT(absPathToClipboard()));
-   connect(ui->actionGetFullName, SIGNAL(triggered()), this,
-         SLOT(fullNameToClipboard()));
-   connect(ui->actionGetFullName, SIGNAL(triggered()), this,
-         SLOT(fullNameToClipboard()));
-   connect(ui->actionReset, SIGNAL(triggered()), this, SLOT(resetParameters()));
-   connect(ui->actionExport, SIGNAL(triggered()), this, SLOT(exportFiles()));
-   connect(ui->pushButtonExport, SIGNAL(clicked()), this, SLOT(exportFiles()));
-   connect(ui->pushButtonExportFile, SIGNAL(clicked()), this,
-         SLOT(selectExportFile()));
-   connect(ui->pushButtonFilePlaceholder, SIGNAL(clicked()), this,
-         SLOT(filePlaceholder()));
-   connect(ui->pushButtonHeaderPlaceholder, SIGNAL(clicked()), this,
-         SLOT(headerPlaceholder()));
-   connect(ui->pushButtonFooterPlaceholder, SIGNAL(clicked()), this,
-         SLOT(footerPlaceholder()));
-   connect(ui->actionPreview, SIGNAL(triggered()), this, SLOT(preview()));
-   connect(ui->pushButtonPreview, SIGNAL(clicked()), this, SLOT(preview()));
-
-   m_horizontalHeader = ui->tableWidget->horizontalHeader();
-   connect(m_horizontalHeader, SIGNAL(sectionClicked ( int ) ),
-                       this, SLOT(headerClicked ( int ) ));
-   connect(m_guiTimer, SIGNAL(timeout()), this, SLOT(guiTimerUpdate()));
-   ui->tableWidget->setColumnWidth(TC_NODE, 200);
-   ui->tableWidget->setColumnWidth(TC_EXT, 40);
-   ui->tableWidget->setColumnWidth(TC_SIZE, 125);
-   ui->tableWidget->setColumnWidth(TC_MODIFIED, 175);
-   ui->tableWidget->setColumnWidth(TC_TYPE, 75);
-   prepareContextMenu();
-   m_guiTimer->start(100);
+                       m_startDir(startDir)
+{
+       initializeGUI();
 }
 
 /**
@@ -132,25 +75,6 @@ MainWindow::~MainWindow(){
    delete ui;
 }
 
-/**
- * Starts the about dialog.
- */
-void MainWindow::about(){
-   AboutDialog dialog(VERSION);
-   dialog.exec();
-}
-
-/**
- * Puts the absolute path of the current (selected) file into the clipboard.
- */
-void MainWindow::absPathToClipboard(){
-   int row = ui->tableWidget->currentRow();
-   if (row >= 0){
-         QClipboard *clipboard = QApplication::clipboard();
-         clipboard->setText(buildAbsPath(row));
-   }
-}
-
 /**
  * Puts the base directory into the clipboard.
  */
@@ -277,45 +201,6 @@ void MainWindow::closing(){
        saveState();
 }
 
-/**
- * Clears the table.
- */
-void MainWindow::clear()
-{
-       ui->tableWidget->setRowCount(0);
-}
-
-/**
- * Handles the click of the "export" button.
- */
-void MainWindow::exportFiles(){
-   comboText(ui->comboBoxHeader);
-   comboText(ui->comboBoxTemplate);
-   comboText(ui->comboBoxExportFile);
-   comboText(ui->comboBoxFooter);
-   if (ui->radioButtonFile->isChecked()){
-         QString fn = ui->comboBoxExportFile->currentText();
-         FILE* fp = fopen( I18N::s2b(fn), "w");
-         if (fp == NULL)
-                guiError(ui->comboBoxExportFile, tr("not a valid file: ") + fn);
-         else{
-                QTextStream stream(fp);
-                exportToStream(stream);
-                fclose(fp);
-                say(LOG_INFO, tr("result exported to ") + fn);
-         }
-   }else{
-         QString value;
-         QTextStream stream(&value);
-         m_errors = 0;
-         exportToStream(stream);
-         QClipboard* clipboard = QApplication::clipboard();
-         clipboard->setText(value);
-         if (m_errors == 0)
-                say(LOG_INFO, tr("result exported to the clipboard"));
-   }
-}
-
 /**
  * Exports the found files into a stream with header and footer.
  *
@@ -407,69 +292,6 @@ void MainWindow::fileDragging(){
    }
 }
 
-/**
- * Handles the push of "select file placeholder".
- */
-void MainWindow::filePlaceholder(){
-   DialogFilePlaceholder dialog;
-   dialog.exec();
-   if (!dialog.var().isEmpty()){
-         QComboBox* target = ui->comboBoxTemplate;
-         target->setCurrentText(target->currentText() + dialog.var());
-   }
-}
-
-/**
- * Handles the push of "select placeholder for the footer".
- */
-void MainWindow::footerPlaceholder(){
-   handlePlaceholder(ui->comboBoxFooter);
-}
-
-/**
- * Puts the absolute full name of the current (selected) file into the clipboard.
- */
-void MainWindow::fullNameToClipboard(){
-   int row = ui->tableWidget->currentRow();
-   if (row >= 0){
-         QClipboard* clipboard = QApplication::clipboard();
-         QString path = buildAbsPath(row);
-         ReQStringUtils::ensureLastChar(path, OS_SEPARATOR);
-         path += cellAsText(row, TC_NODE);
-         clipboard->setText(path);
-   }
-}
-
-/**
- * Callback method of the GUI timer.
- */
-void MainWindow::guiTimerUpdate()
-{
-       int count = m_guiQueue.count();
-       while(count-- > 0){
-               ReGuiQueueItem item = m_guiQueue.popFront();
-               if (item.m_type == ReGuiQueueItem::Undef)
-                       break;
-               if (! item.apply()){
-                       switch (item.m_type){
-                       case ReGuiQueueItem::ReadyMessage:
-                               say(LOG_INFO, item.m_value);
-                               m_statistics = m_finder->statistics();
-                               startStop(false);
-                               break;
-                       case ReGuiQueueItem::LogMessage:
-                               say(LOG_INFO, item.m_value);
-                               break;
-                       default:
-                               say(LOG_ERROR, "unknown item type: " + QString::number(item.m_type)
-                                       + " " + item.m_value);
-                               break;
-                       }
-
-               }
-       }
-}
-
 /**
  * Handle the "copy to clipboard" entry from the context menu.
  *
@@ -646,46 +468,64 @@ void MainWindow::handleTableContextMenu(const QPoint& position){
    }
 }
 /**
- * Handles the event "header column clicked".
- *
- * @param col   the col
- */
-void MainWindow::headerClicked(int col){
-   m_lastOrder =
-                       m_lastOrder == Qt::AscendingOrder ?
-                          Qt::DescendingOrder : Qt::AscendingOrder;
-   ui->tableWidget->sortItems(col, m_lastOrder);
-   m_horizontalHeader->setSortIndicatorShown(true);
-   m_horizontalHeader->setSortIndicator(col, m_lastOrder);
-}
-
-/**
- * Handles the push of "select placeholder for the header".
- */
-void MainWindow::headerPlaceholder(){
-   handlePlaceholder(ui->comboBoxHeader);
-}
-
-
-/**
- * initializeHomeializes the program home directory.
- */
-void MainWindow::initializeHome(){
-   if (m_homeDir.isEmpty()){
-         m_homeDir = QDir::home().absoluteFilePath(".refind");
-   }
-
-   QDir home(m_homeDir);
-   if (!home.exists()){
-         if (!home.mkpath(m_homeDir)){
-                m_homeDir = home.tempPath() + "/.refind";
-                home.mkpath(m_homeDir);
-         }
-   }
-   if (!m_homeDir.endsWith("/"))
-         m_homeDir += "/";
-   m_storageFile = m_homeDir + "state.conf";
-   restoreState();
+ * Builds the GUI from the *.ui file.
+ */
+void MainWindow::initializeGUI(){
+       ui->setupUi(this);
+       initializeGuiElements();
+       if (!m_startDir.isEmpty())
+          ui->comboBoxDirectory->setCurrentText(m_startDir);
+       if (ui->comboBoxDirectory->currentText().isEmpty())
+          ui->comboBoxDirectory->setCurrentText(QDir::currentPath());
+       ui->tableWidget->setMainWindow(this);
+       connect(ui->actionStart, SIGNAL(triggered()), this, SLOT(onSearch()));
+       connect(ui->actionClear, SIGNAL(triggered()), this, SLOT(onClear()));
+       connect(ui->actionStop, SIGNAL(triggered()), this, SLOT(onStop()));
+       connect(ui->pushButtonSearch, SIGNAL(clicked()), this, SLOT(onSearch()));
+       connect(ui->pushButtonSearch2, SIGNAL(clicked()), this, SLOT(onSearch()));
+       connect(ui->pushButtonStop, SIGNAL(clicked()), this, SLOT(onStop()));
+       connect(ui->pushButtonStop2, SIGNAL(clicked()), this, SLOT(onStop()));
+       connect(ui->pushButtonClear, SIGNAL(clicked()), this, SLOT(onClear()));
+       connect(ui->actionUp, SIGNAL(triggered()), this, SLOT(onUp()));
+       connect(ui->pushButtonUp, SIGNAL(clicked()), this, SLOT(onUp()));
+       connect(ui->actionSelectDirectory, SIGNAL(triggered()), this,
+          SLOT(onSelectDirectory()));
+       connect(ui->actionSaveProgramState, SIGNAL(triggered()), this,
+          SLOT(saveState()));
+       connect(ui->pushButtonDirectory, SIGNAL(clicked()), this,
+          SLOT(onSelectDirectory()));
+       connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(onAbout()));
+       connect(ui->actionOptions, SIGNAL(triggered()), this, SLOT(onOptions()));
+       connect(ui->actionGetAbsPath, SIGNAL(triggered()), this,
+          SLOT(onAbsPathToClipboard()));
+       connect(ui->actionGetFullName, SIGNAL(triggered()), this,
+          SLOT(onFullNameToClipboard()));
+       connect(ui->actionGetFullName, SIGNAL(triggered()), this,
+          SLOT(onFullNameToClipboard()));
+       connect(ui->actionReset, SIGNAL(triggered()), this, SLOT(onResetParameters()));
+       connect(ui->actionExport, SIGNAL(triggered()), this, SLOT(onExportFiles()));
+       connect(ui->pushButtonExport, SIGNAL(clicked()), this, SLOT(onExportFiles()));
+       connect(ui->pushButtonExportFile, SIGNAL(clicked()), this,
+          SLOT(onSelectExportFile()));
+       connect(ui->pushButtonFilePlaceholder, SIGNAL(clicked()), this,
+          SLOT(onFilePlaceholder()));
+       connect(ui->pushButtonHeaderPlaceholder, SIGNAL(clicked()), this,
+          SLOT(onHeaderPlaceholder()));
+       connect(ui->pushButtonFooterPlaceholder, SIGNAL(clicked()), this,
+          SLOT(onFooterPlaceholder()));
+       connect(ui->actionPreview, SIGNAL(triggered()), this, SLOT(onPreview()));
+       connect(ui->pushButtonPreview, SIGNAL(clicked()), this, SLOT(onPreview()));
+
+       m_horizontalHeader = ui->tableWidget->horizontalHeader();
+       connect(m_horizontalHeader, SIGNAL(sectionClicked ( int ) ),
+                        this, SLOT(onHeaderClicked ( int ) ));
+       ui->tableWidget->setColumnWidth(TC_NODE, 200);
+       ui->tableWidget->setColumnWidth(TC_EXT, 40);
+       ui->tableWidget->setColumnWidth(TC_SIZE, 125);
+       ui->tableWidget->setColumnWidth(TC_MODIFIED, 175);
+       ui->tableWidget->setColumnWidth(TC_TYPE, 75);
+       prepareContextMenu();
+       restoreState();
 }
 
 /**
@@ -693,20 +533,11 @@ void MainWindow::initializeHome(){
  *
  * @param message      description of the state change
  * @return                     SUCCESS
- */
+ * /
 ReObserver::ReturnCode MainWindow::notify(const char* message)
 {
        return ReObserver::SUCCESS;
-}
-
-/**
- * Starts the options dialog.
- */
-void MainWindow::options(){
-   DialogOptions dialog(m_contextHandlers, NULL);
-   dialog.exec();
-}
-
+} */
 
 /**
  * Sets the properties of the file finder.
@@ -718,7 +549,6 @@ void MainWindow::populateFinder(FileFinder& finder){
                ui->tableWidget->setRowCount(0);
                m_statistics.clear();
        }
-       finder.setObserver(this);
        finder.setGuiQueue(&this->m_guiQueue);
        finder.setBaseDir(comboText(ui->comboBoxDirectory));
        finder.setTable(ui->tableWidget);
@@ -776,10 +606,166 @@ if (!error.isEmpty()){
 }
 }
 
+/**
+ * Starts the about dialog.
+ */
+void MainWindow::onAbout(){
+   AboutDialog dialog(VERSION);
+   dialog.exec();
+}
+
+/**
+ * Puts the absolute path of the current (selected) file into the clipboard.
+ */
+void MainWindow::onAbsPathToClipboard(){
+   int row = ui->tableWidget->currentRow();
+   if (row >= 0){
+         QClipboard *clipboard = QApplication::clipboard();
+         clipboard->setText(buildAbsPath(row));
+   }
+}
+
+/**
+ * Clears the table.
+ */
+void MainWindow::onClear()
+{
+       ui->tableWidget->setRowCount(0);
+}
+
+/**
+ * Handles the click of the "export" button.
+ */
+void MainWindow::onExportFiles(){
+   comboText(ui->comboBoxHeader);
+   comboText(ui->comboBoxTemplate);
+   comboText(ui->comboBoxExportFile);
+   comboText(ui->comboBoxFooter);
+   if (ui->radioButtonFile->isChecked()){
+         QString fn = ui->comboBoxExportFile->currentText();
+         FILE* fp = fopen( I18N::s2b(fn), "w");
+         if (fp == NULL)
+                guiError(ui->comboBoxExportFile, tr("not a valid file: ") + fn);
+         else{
+                QTextStream stream(fp);
+                exportToStream(stream);
+                fclose(fp);
+                say(LOG_INFO, tr("result exported to ") + fn);
+         }
+   }else{
+         QString value;
+         QTextStream stream(&value);
+         m_errors = 0;
+         exportToStream(stream);
+         QClipboard* clipboard = QApplication::clipboard();
+         clipboard->setText(value);
+         if (m_errors == 0)
+                say(LOG_INFO, tr("result exported to the clipboard"));
+   }
+}
+
+/**
+ * Handles the push of "select file placeholder".
+ */
+void MainWindow::onFilePlaceholder(){
+   DialogFilePlaceholder dialog;
+   dialog.exec();
+   if (!dialog.var().isEmpty()){
+         QComboBox* target = ui->comboBoxTemplate;
+         target->setCurrentText(target->currentText() + dialog.var());
+   }
+}
+
+/**
+ * Handles the push of "select placeholder for the footer".
+ */
+void MainWindow::onFooterPlaceholder(){
+   handlePlaceholder(ui->comboBoxFooter);
+}
+
+/**
+ * Puts the absolute full name of the current (selected) file into the clipboard.
+ */
+void MainWindow::onFullNameToClipboard(){
+   int row = ui->tableWidget->currentRow();
+   if (row >= 0){
+         QClipboard* clipboard = QApplication::clipboard();
+         QString path = buildAbsPath(row);
+         ReQStringUtils::ensureLastChar(path, OS_SEPARATOR);
+         path += cellAsText(row, TC_NODE);
+         clipboard->setText(path);
+   }
+}
+
+/**
+ * Handles the event "header column clicked".
+ *
+ * @param col   the col
+ */
+void MainWindow::onHeaderClicked(int col){
+   m_lastOrder =
+                       m_lastOrder == Qt::AscendingOrder ?
+                          Qt::DescendingOrder : Qt::AscendingOrder;
+   ui->tableWidget->sortItems(col, m_lastOrder);
+   m_horizontalHeader->setSortIndicatorShown(true);
+   m_horizontalHeader->setSortIndicator(col, m_lastOrder);
+}
+
+/**
+ * Handles the push of "select placeholder for the header".
+ */
+void MainWindow::onHeaderPlaceholder(){
+   handlePlaceholder(ui->comboBoxHeader);
+}
+
+/**
+ * The GUI timer is triggered.
+ */
+void MainWindow::onGuiTimerUpdate()
+{
+       int count = m_guiQueue.count();
+       while(count-- > 0){
+               ReGuiQueueItem item = m_guiQueue.popFront();
+               if (item.m_type == ReGuiQueueItem::Undef)
+                       break;
+               if (! item.apply()){
+                       switch (item.m_type){
+                       case ReGuiQueueItem::ReadyMessage:
+                               say(LOG_INFO, item.m_value);
+                               m_statistics = m_finder->statistics();
+                               startStop(false);
+                               break;
+                       case ReGuiQueueItem::LogMessage:
+                               say(LOG_INFO, item.m_value);
+                               break;
+                       default:
+                               say(LOG_ERROR, "unknown item type: " + QString::number(item.m_type)
+                                       + " " + item.m_value);
+                               break;
+                       }
+               }
+       }
+}
+
+/**
+ * The language has been changed.
+ */
+void MainWindow::onLanguageChange(){
+       initializeGUI();
+}
+
+/**
+ * Starts the options dialog.
+ */
+void MainWindow::onOptions(){
+   DialogOptions dialog(m_contextHandlers, NULL);
+   dialog.exec();
+}
+
 /**
  * Shows a preview of the result export.
  */
-void MainWindow::preview(){
+void MainWindow::onPreview(){
 QString value;
 QTextStream stream(&value);
 exportToStream(stream, 1);
@@ -791,27 +777,12 @@ msgBox.setDefaultButton(QMessageBox::Save);
 msgBox.exec();
 }
 
-/**
- * Replaces the placeholders valid in header and footer.
- *
- * @param text  the text to convert
- * @return      <code>text</code> with the esc sequences replaced
- */
-QString MainWindow::replaceGlobalPlaceholders(QComboBox* combo,
-QMap <QString, QString>& placeholders){
-QString rc = combo->currentText();
-QString error;
-if (!ReQStringUtils::replacePlaceholders(rc, placeholders, &error))
-   guiError(combo, error);
-return replaceEscSequences(rc);
-}
-
 /**
  * @brief Handles the action "reset parameters".
  *
  * Most of the filter parameters will be set to the default.
  */
-void MainWindow::resetParameters(){
+void MainWindow::onResetParameters(){
 ui->comboBoxFilePatterns->setCurrentText("");
 ui->comboBoxMaxDepth->setCurrentText("");
 ui->comboBoxMaxSize->setCurrentText("");
@@ -828,6 +799,91 @@ ui->checkBoxRegExpr->setChecked(false);
 ui->checkBoxTextIgnoreCase->setChecked(false);
 }
 
+/**
+ * Handles the "search" button.
+ */
+void MainWindow::onSearch(){
+       m_errors = 0;
+       QString path = comboText(ui->comboBoxDirectory);
+       QFileInfo dir(path);
+       if (!dir.exists())
+          guiError(ui->comboBoxDirectory, tr("directory not found: ") + path);
+       else if (!dir.isDir())
+          guiError(ui->comboBoxDirectory, tr("not a directory: ") + path);
+       else{
+               QApplication::setOverrideCursor (QCursor(Qt::WaitCursor));
+               ui->pushButtonSearch->setEnabled(false);
+               ui->pushButtonSearch2->setEnabled(false);
+               if (m_finder == NULL)
+                       m_finder = new FileFinder;
+               populateFinder(*m_finder);
+               if (! ui->checkBoxAppend->isChecked())
+                       onClear();
+               startStop(true);
+               m_finder->start();
+               QApplication::restoreOverrideCursor();
+       }
+}
+/**
+ * Handles the push of the button "select directory".
+ */
+void MainWindow::onSelectDirectory(){
+QString dir = QFileDialog::getExistingDirectory(this, tr("Select Directory"),
+   ui->comboBoxDirectory->currentText(), QFileDialog::ShowDirsOnly);
+if (!dir.isEmpty())
+   ui->comboBoxDirectory->setCurrentText(ReFileUtils::nativePath(dir));
+}
+
+/**
+ * Calls the file selection dialog.
+ */
+void MainWindow::onSelectExportFile(){
+QString name = QFileDialog::getSaveFileName(this, tr("Select Export File"),
+   ui->comboBoxExportFile->currentText());
+if (!name.isEmpty())
+   ui->comboBoxExportFile->setCurrentText(name);
+
+}
+
+/**
+ * Handles the "search" button.
+ */
+void MainWindow::onStop(){
+       m_finder->setStop(true);
+       startStop(false);
+}
+
+/**
+ * @brief Handles the "up" button: go to the parent directory.
+ */
+void MainWindow::onUp(){
+QString path = ui->comboBoxDirectory->currentText();
+QDir dir(path);
+if (dir.exists()){
+   dir.cdUp();
+   if (dir.exists()){
+         path = ReFileUtils::nativePath(dir.absolutePath());
+         ui->comboBoxDirectory->setEditText(path);
+         setInHistory(ui->comboBoxDirectory, path);
+   }
+}
+}
+
+/**
+ * Replaces the placeholders valid in header and footer.
+ *
+ * @param text  the text to convert
+ * @return      <code>text</code> with the esc sequences replaced
+ */
+QString MainWindow::replaceGlobalPlaceholders(QComboBox* combo,
+QMap <QString, QString>& placeholders){
+QString rc = combo->currentText();
+QString error;
+if (!ReQStringUtils::replacePlaceholders(rc, placeholders, &error))
+   guiError(combo, error);
+return replaceEscSequences(rc);
+}
+
 /**
  * Reads the history of the widget values and other parameters and set it.
  */
@@ -876,51 +932,6 @@ m_contextHandlers.save(storage);
 storage.close();
 }
 
-/**
- * Handles the "search" button.
- */
-void MainWindow::search(){
-       m_errors = 0;
-       QString path = comboText(ui->comboBoxDirectory);
-       QFileInfo dir(path);
-       if (!dir.exists())
-          guiError(ui->comboBoxDirectory, tr("directory not found: ") + path);
-       else if (!dir.isDir())
-          guiError(ui->comboBoxDirectory, tr("not a directory: ") + path);
-       else{
-               QApplication::setOverrideCursor (QCursor(Qt::WaitCursor));
-               ui->pushButtonSearch->setEnabled(false);
-               ui->pushButtonSearch2->setEnabled(false);
-               if (m_finder == NULL)
-                       m_finder = new FileFinder;
-               populateFinder(*m_finder);
-               if (! ui->checkBoxAppend->isChecked())
-                       clear();
-               startStop(true);
-               m_finder->start();
-               QApplication::restoreOverrideCursor();
-       }
-}
-/**
- * Handles the push of the button "select directory".
- */
-void MainWindow::selectDirectory(){
-QString dir = QFileDialog::getExistingDirectory(this, tr("Select Directory"),
-   ui->comboBoxDirectory->currentText(), QFileDialog::ShowDirsOnly);
-if (!dir.isEmpty())
-   ui->comboBoxDirectory->setCurrentText(ReFileUtils::nativePath(dir));
-}
-
-/**
- * Calls the file selection dialog.
- */
-void MainWindow::selectExportFile(){
-QString name = QFileDialog::getSaveFileName(this, tr("Select Export File"),
-   ui->comboBoxExportFile->currentText());
-if (!name.isEmpty())
-   ui->comboBoxExportFile->setCurrentText(name);
-
-}
 
 /**
  * Issues a message in the status line.
@@ -933,12 +944,7 @@ if (!name.isEmpty())
  */
 bool MainWindow::say(ReLoggerLevel level, const QString& message){
        bool rc = level >= LOG_INFO;
-       if (m_stdLabelBackgroundRole == NULL)
-               m_stdLabelBackgroundRole = new QPalette::ColorRole(
-                                       m_statusMessage->backgroundRole());
-       m_statusMessage->setBackgroundRole(
-                               ! rc ? QPalette::HighlightedText : *m_stdLabelBackgroundRole);
-       m_statusMessage->setText(message);
+       setStatusMessage(level, message);
        return rc;
 }
 /**
@@ -955,27 +961,3 @@ void MainWindow::startStop(bool start){
        ui->pushButtonStop2->setEnabled(start);
 }
 
-/**
- * Handles the "search" button.
- */
-void MainWindow::stop(){
-       m_finder->setStop(true);
-       startStop(false);
-}
-
-/**
- * @brief Handles the "up" button: go to the parent directory.
- */
-void MainWindow::up(){
-QString path = ui->comboBoxDirectory->currentText();
-QDir dir(path);
-if (dir.exists()){
-   dir.cdUp();
-   if (dir.exists()){
-         path = ReFileUtils::nativePath(dir.absolutePath());
-         ui->comboBoxDirectory->setEditText(path);
-         setInHistory(ui->comboBoxDirectory, path);
-   }
-}
-}
-
index c94ce6f018d58861b797c5b07ffd8912a12aef27..cbf7ce7f0a0efba8b8a91f14d67aba532c33efe9 100644 (file)
@@ -36,13 +36,13 @@ enum TableColumns {
 };
 class FileFinder;
 
-class MainWindow: public QMainWindow, public ReGuiValidator, protected ReObserver{
+class MainWindow: public ReGuiApplication, public ReGuiValidator{
 
    Q_OBJECT
 
 public:
-   explicit MainWindow(const QString& startDir, const QString& homeDir,
-         QWidget *parent = 0);
+   explicit MainWindow(QApplication& application, const QString& homeDir,
+                                          const QString& startDir, QWidget *parent = 0);
    ~MainWindow();
 
 public:
@@ -51,33 +51,32 @@ protected:
        void findFiles();
        void populateFinder(FileFinder& finder);
 private slots:
-   void about();
-   void absPathToClipboard();
    void baseDirToClipboard();
-   void clear();
    void closing();
-   void exportFiles();
-   void filePlaceholder();
-   void footerPlaceholder();
-   void fullNameToClipboard();
-   void guiTimerUpdate();
    void handleTableContextMenu(const QPoint& position);
-   void headerClicked(int col);
-   void headerPlaceholder();
-   virtual ReturnCode notify(const char* message);
-   void options();
-   void preview();
-   void resetParameters();
+   void onAbout();
+   void onAbsPathToClipboard();
+   void onClear();
+   void onExportFiles();
+   void onFilePlaceholder();
+   void onFooterPlaceholder();
+   void onFullNameToClipboard();
+   void onHeaderClicked(int col);
+   void onHeaderPlaceholder();
+   virtual void onGuiTimerUpdate();
+   virtual void onLanguageChange();
+   void onOptions();
+   void onPreview();
+   void onResetParameters();
+   void onSearch();
+   void onSelectDirectory();
+   void onSelectExportFile();
+   void onStop();
+   void onUp();
    virtual bool say(ReLoggerLevel level, const QString& message);
    void saveState();
-   void search();
-   void selectDirectory();
-   void selectExportFile();
-   void stop();
-   void up();
 
 private:
-   void prepareContextMenu();
    QString buildAbsPath(int row, bool withNode = false, bool uriFormat = false);
    QDir::Filters buildFileTypes();
    void buildGlobalPlaceholders(QMap <QString, QString>& hash);
@@ -87,7 +86,8 @@ private:
    void handleExternalCommand(ContextHandler* handler, const QString& parent,
          const QString& full, const QString& node);
    void handlePlaceholder(QComboBox* target);
-   void initializeHome();
+   void initializeGUI();
+   void prepareContextMenu();
    void prepareTextFind();
    QString replaceGlobalPlaceholders(QComboBox* combo,
          QMap <QString, QString>& placeholders);
@@ -95,8 +95,6 @@ private:
    void startStop(bool start);
 private:
    Ui::MainWindow *ui;
-   QLabel* m_statusMessage;
-   QPalette::ColorRole* m_stdLabelBackgroundRole;
    TextFinder m_textFinder;
    // the directory of the last search
    QDir m_lastBaseDir;
@@ -111,7 +109,7 @@ private:
    ReLogger* m_logger;
    FileFinder* m_finder;
    ReGuiQueue m_guiQueue;
-   QTimer* m_guiTimer;
+   QString m_startDir;
 };
 
 #endif // MAINWINDOW_HPP
index de51ca8f0a7db19a6703196d22b95ab9ee48e863..c3224744dc0feeb6a56b16f65a07210bc0e7142b 100644 (file)
@@ -83,7 +83,7 @@
                   <normalon>:/main/icons/action_go.png</normalon>:/main/icons/action_go.gif</iconset>
                 </property>
                 <property name="shortcut">
-                 <string>Ctrl+F</string>
+                 <string notr="true">Ctrl+F</string>
                 </property>
                 <property name="autoDefault">
                  <bool>true</bool>
@@ -97,6 +97,9 @@
             </item>
             <item row="1" column="3">
              <widget class="QCheckBox" name="checkBoxFiles">
+              <property name="toolTip">
+               <string>Normal files will be found</string>
+              </property>
               <property name="text">
                <string>Files</string>
               </property>
                 <height>16777215</height>
                </size>
               </property>
+              <property name="toolTip">
+               <string>Case insensitiv text search</string>
+              </property>
               <property name="text">
                <string>Ignore case</string>
               </property>
                 <height>0</height>
                </size>
               </property>
+              <property name="toolTip">
+               <string>Only files containing this text (or text pattern) will be found</string>
+              </property>
               <property name="editable">
                <bool>true</bool>
               </property>
                 <height>16777215</height>
                </size>
               </property>
+              <property name="toolTip">
+               <string>Directories will be found</string>
+              </property>
               <property name="text">
                <string>Dirs</string>
               </property>
                 <height>16777215</height>
                </size>
               </property>
+              <property name="toolTip">
+               <string>Text pattern is a regular expression (Perl syntax)</string>
+              </property>
               <property name="text">
                <string>Regular expr.</string>
               </property>
                 <height>16777215</height>
                </size>
               </property>
+              <property name="toolTip">
+               <string>Symbolic links will be found</string>
+              </property>
               <property name="text">
                <string>Links</string>
               </property>
                 <height>16777215</height>
                </size>
               </property>
+              <property name="toolTip">
+               <string>Files containing ASCII NUL will be found too</string>
+              </property>
               <property name="text">
                <string>Binary files</string>
               </property>
             </item>
             <item row="3" column="6">
              <widget class="QComboBox" name="comboBoxMaxHits">
+              <property name="toolTip">
+               <string>If this count of hits is reachted the search stops</string>
+              </property>
               <property name="editable">
                <bool>true</bool>
               </property>
                  </size>
                 </property>
                 <property name="toolTip">
-                 <string>Change to the parent directory</string>
+                 <string>Go  to the parent directory</string>
                 </property>
                 <property name="text">
-                 <string>&amp;Up</string>
+                 <string notr="true">^</string>
                 </property>
                 <property name="icon">
                  <iconset resource="refind.qrc">
                  <string>Select directory by a dialog box</string>
                 </property>
                 <property name="text">
-                 <string/>
+                 <string notr="true">...</string>
                 </property>
                 <property name="icon">
                  <iconset resource="refind.qrc">
             <item row="3" column="1" colspan="2">
              <widget class="QPushButton" name="pushButtonSearch2">
               <property name="text">
-               <string>&amp;Run search</string>
+               <string notr="true">&amp;Run search</string>
               </property>
               <property name="icon">
                <iconset>
                 <normaloff>:/main/icons/action_go.gif</normaloff>
                 <normalon>:/main/icons/action_go.png</normalon>:/main/icons/action_go.gif</iconset>
               </property>
+              <property name="shortcut">
+               <string notr="true">Ctrl+F</string>
+              </property>
              </widget>
             </item>
             <item row="3" column="3" colspan="2">
                 <normaloff>:/main/icons/stop.png</normaloff>:/main/icons/stop.png</iconset>
               </property>
               <property name="shortcut">
-               <string notr="true">Ctrl+T</string>
+               <string notr="true">Pause</string>
               </property>
              </widget>
             </item>
                 <normaloff>:/main/icons/database_save.png</normaloff>:/main/icons/database_save.png</iconset>
               </property>
               <property name="shortcut">
-               <string>Alt+E</string>
+               <string notr="true">Ctrl+E</string>
               </property>
              </widget>
             </item>
               <property name="text">
                <string>...</string>
               </property>
+              <property name="shortcut">
+               <string notr="true"/>
+              </property>
              </widget>
             </item>
             <item row="3" column="1" colspan="3">
               <property name="text">
                <string>...</string>
               </property>
+              <property name="shortcut">
+               <string notr="true"/>
+              </property>
              </widget>
             </item>
             <item row="2" column="0">
               <property name="text">
                <string>...</string>
               </property>
+              <property name="shortcut">
+               <string notr="true"/>
+              </property>
              </widget>
             </item>
             <item row="0" column="0">
                <iconset resource="refind.qrc">
                 <normaloff>:/main/icons/eye.png</normaloff>:/main/icons/eye.png</iconset>
               </property>
+              <property name="shortcut">
+               <string notr="true">Ctrl+Shift+V</string>
+              </property>
              </widget>
             </item>
             <item row="4" column="1" colspan="3">
                  <bool>true</bool>
                 </property>
                 <property name="currentText">
-                 <string>refind.result.txt</string>
+                 <string notr="true">refind.result.txt</string>
                 </property>
                </widget>
               </item>
                 <property name="text">
                  <string>...</string>
                 </property>
+                <property name="shortcut">
+                 <string notr="true"/>
+                </property>
                </widget>
               </item>
              </layout>
           <string>Size (MByte)</string>
          </property>
          <property name="textAlignment">
-          <set>AlignRight|AlignBottom</set>
+          <set>AlignTrailing|AlignBottom</set>
          </property>
         </column>
         <column>
     <string>Exits the program</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+X</string>
+    <string notr="true">Ctrl+Shift+X</string>
    </property>
   </action>
   <action name="actionSearch">
     <string>Search the files with the given properties</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+R</string>
+    <string notr="true">Ctrl+R</string>
    </property>
   </action>
   <action name="actionAbout">
     <string>&amp;About</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+Shift+A</string>
+    <string notr="true">Ctrl+Shift+A</string>
    </property>
   </action>
   <action name="actionExport">
     <string>&amp;Export</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+E</string>
+    <string notr="true">Ctrl+E</string>
    </property>
   </action>
   <action name="actionUp">
     <string>Change to the parent directory</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+U</string>
+    <string notr="true">Ctrl+U</string>
    </property>
   </action>
   <action name="actionSelectDirectory">
     <string>Select directory with a dialog</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+D</string>
+    <string notr="true">Ctrl+D</string>
    </property>
   </action>
   <action name="actionGetAbsPath">
     <string>Puts the absolute path of the selected file into the clipboard</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+Shift+P</string>
+    <string notr="true">Ctrl+Shift+P</string>
    </property>
   </action>
   <action name="actionGetFullName">
     <string>&amp;full name to clipboard</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+N</string>
+    <string notr="true">Ctrl+N</string>
    </property>
   </action>
   <action name="actionGetBaseDirectory">
     <string>Puts the base directory into the clipboard</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+B</string>
+    <string notr="true">Ctrl+B</string>
    </property>
   </action>
   <action name="actionReset">
     <string>Sets the file filter properties to the default</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+Shift+R</string>
+    <string notr="true">Ctrl+Shift+R</string>
    </property>
   </action>
   <action name="actionSaveProgramState">
     <string>Saves the program state (position, history...) to a file</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+Shift+S</string>
+    <string notr="true">Ctrl+Shift+S</string>
    </property>
   </action>
   <action name="actionOptions">
     <string>Dialog for changing the options</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+Shift+O</string>
+    <string notr="true">Ctrl+Shift+O</string>
    </property>
   </action>
   <action name="actionPreview">
     <string>Shows a preview of the result export</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+Shift+V</string>
+    <string notr="true">Ctrl+Shift+V</string>
    </property>
   </action>
   <action name="actionClear">
     <string>Clears the file table</string>
    </property>
    <property name="shortcut">
-    <string>Ctrl+L</string>
+    <string notr="true">Ctrl+L</string>
    </property>
   </action>
   <action name="actionStart">
    <property name="toolTip">
     <string>Start the search</string>
    </property>
+   <property name="shortcut">
+    <string notr="true">Ctrl+F</string>
+   </property>
   </action>
   <action name="actionStop">
    <property name="enabled">
    <property name="toolTip">
     <string>Stop the current search</string>
    </property>
+   <property name="shortcut">
+    <string notr="true">Pause</string>
+   </property>
   </action>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
diff --git a/appl/refind/refind.de.qm b/appl/refind/refind.de.qm
new file mode 100644 (file)
index 0000000..3b2076f
Binary files /dev/null and b/appl/refind/refind.de.qm differ
diff --git a/appl/refind/refind.de.ts b/appl/refind/refind.de.ts
new file mode 100644 (file)
index 0000000..25302b1
--- /dev/null
@@ -0,0 +1,1009 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de_DE" sourcelanguage="en_US">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation type="vanished">Dialog</translation>
+    </message>
+    <message>
+        <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;ReFind&lt;/span&gt; for searching files in a directory tree&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This is a program of the project &amp;quot;&lt;span style=&quot; font-weight:600;&quot;&gt;Re&lt;/span&gt;al &lt;span style=&quot; font-weight:600;&quot;&gt;Pub&lt;/span&gt;lic &lt;span style=&quot; font-weight:600;&quot;&gt;Lib&lt;/span&gt;rary&amp;quot;.&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Sources are public domain and available under https://github.com/republib&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Implemented in QT (C++) 5.x&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Icons:  Mark James, &lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="obsolete">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;ReFind: &lt;/span&gt;Suchen von Dateien in einem Verzeichnisbaum&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Das ist ein Programm des Projekts&amp;quot;&lt;span style=&quot; font-weight:600;&quot;&gt;Re&lt;/span&gt;al &lt;span style=&quot; font-weight:600;&quot;&gt;Pub&lt;/span&gt;lic &lt;span style=&quot; font-weight:600;&quot;&gt;Lib&lt;/span&gt;rary&amp;quot;.&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Die Quellen sind frei (public domain) und unter https://github.com/republib erreichbar&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Implementiert in QT (C++) 5.x&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Icons:  Mark James, &lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>&amp;OK</source>
+        <translation>&amp;OK</translation>
+    </message>
+    <message>
+        <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;ReFind&lt;/span&gt; for searching files in a directory tree.&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This is a program of the project&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Re&lt;/span&gt;al &lt;span style=&quot; font-weight:600;&quot;&gt;Pub&lt;/span&gt;lic &lt;span style=&quot; font-weight:600;&quot;&gt;Lib&lt;/span&gt;rary (RePubLib)&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Sources are public domain and available under&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://github.com/republib&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/republib&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Implemented in QT (C++) 5.x&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Icons: Mark James, &lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="vanished">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;ReFind&lt;/span&gt;: Suche nach Dateien in einem Verzeichnisbaum.&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Dies ist ein Programm des Projekts&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Re&lt;/span&gt;al &lt;span style=&quot; font-weight:600;&quot;&gt;Pub&lt;/span&gt;lic &lt;span style=&quot; font-weight:600;&quot;&gt;Lib&lt;/span&gt;rary (RePubLib)&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Die Quellen sind frei (public domain) und erhältlich unter&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://github.com/republib&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/republib&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Implementiert in QT (C++) 5.x&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Icons: Mark James, &lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>Version:</source>
+        <translation>Version:</translation>
+    </message>
+    <message>
+        <source>2015.05.00</source>
+        <translation type="vanished">2015.05.00</translation>
+    </message>
+    <message>
+        <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Droid Sans&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;ReFind&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; for searching files in a directory tree.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;This is a program of the project&lt;/span&gt;&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Re&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;al &lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Pub&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;lic &lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:600;&quot;&gt;Lib&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;rary (RePubLib)&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Sources are public domain and available under&lt;/span&gt;&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://github.com/republib&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/republib&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Implemented in QT (C++) 5.x&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt;Icons: Mark James, &lt;/span&gt;&lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;ReFind&lt;/span&gt;: Suche nach Dateien in einem Verzeichnisbaum.&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Dies ist ein Programm des Projekts&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Re&lt;/span&gt;al &lt;span style=&quot; font-weight:600;&quot;&gt;Pub&lt;/span&gt;lic &lt;span style=&quot; font-weight:600;&quot;&gt;Lib&lt;/span&gt;rary (RePubLib)&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Die Quellen sind frei (public domain) und erhältlich unter&lt;/p&gt;
+&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://github.com/republib&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/republib&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Implementiert in QT (C++) 5.x&lt;/p&gt;
+&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Icons: Mark James, &lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>About the Program</source>
+        <translation>Über das Programm</translation>
+    </message>
+</context>
+<context>
+    <name>DialogFilePlaceHolders</name>
+    <message>
+        <source>File Specific Placeholders</source>
+        <translation>Dateispezifische Platzhalter</translation>
+    </message>
+    <message>
+        <source>New Row</source>
+        <translation>Neue Zeile</translation>
+    </message>
+    <message>
+        <source>Placeholder</source>
+        <translation>Platzhalter</translation>
+    </message>
+    <message>
+        <source>Example</source>
+        <translation>Beispiel</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Beschreibung</translation>
+    </message>
+    <message>
+        <source>base directory</source>
+        <translation>Basisverzeichnis</translation>
+    </message>
+    <message>
+        <source>filename with absolute path</source>
+        <translation>Dateiname mit absolutem Pfad</translation>
+    </message>
+    <message>
+        <source>relative path</source>
+        <translation type="vanished">relativer Pfad</translation>
+    </message>
+    <message>
+        <source>filename with extension</source>
+        <translation>Dateiname mit Dateityp</translation>
+    </message>
+    <message>
+        <source>filename without extension</source>
+        <translation>Dateiname ohne Dateityp</translation>
+    </message>
+    <message>
+        <source>extension</source>
+        <translation>Dateityp</translation>
+    </message>
+    <message>
+        <source>date/time of the last change</source>
+        <translation>Datum/Zeit der letzten Änderung</translation>
+    </message>
+    <message>
+        <source>file length in megabyte</source>
+        <translation>Dateilänge in Megabyte</translation>
+    </message>
+    <message>
+        <source>&apos;file&apos;, &apos;dir&apos;, &apos;link (file)&apos;, &apos;link (dir)&apos;</source>
+        <translation>&apos;file&apos;, &apos;dir&apos;, &apos;link (Datei)&apos;, &apos;link (Verz.)&apos;</translation>
+    </message>
+    <message>
+        <source>\t</source>
+        <translation type="obsolete">\t</translation>
+    </message>
+    <message>
+        <source>tabulator</source>
+        <translation>Tabulator</translation>
+    </message>
+    <message>
+        <source>newline</source>
+        <translation>Zeilenwechsel</translation>
+    </message>
+    <message>
+        <source>path without node</source>
+        <translation>Pfad ohne Dateinamen</translation>
+    </message>
+</context>
+<context>
+    <name>DialogGlobalPlaceholder</name>
+    <message>
+        <source>Placeholders for Header and Footer</source>
+        <translation>Platzhalter für Dateikopf und Dateiende</translation>
+    </message>
+    <message>
+        <source>New Row</source>
+        <translation>Neue Zeile</translation>
+    </message>
+    <message>
+        <source>Placeholder</source>
+        <translation>Platzhalter</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Beschreibung</translation>
+    </message>
+    <message>
+        <source>current date/time</source>
+        <translation>aktuelles Datum/aktuelle Zeit</translation>
+    </message>
+    <message>
+        <source>current file patterns</source>
+        <translation>aktuelle Dateisuchmuster</translation>
+    </message>
+    <message>
+        <source>current text pattern</source>
+        <translation>aktuelles Textsuchmuster</translation>
+    </message>
+    <message>
+        <source>count of found directories</source>
+        <translation>Zahl der gefundenen Verzeichnisse</translation>
+    </message>
+    <message>
+        <source>count of found files</source>
+        <translation>Zahl der gefundenen Dateien</translation>
+    </message>
+    <message>
+        <source>sum of the lengths of the found files</source>
+        <translation>Summe der Dateilängen der gefundenen Dateien</translation>
+    </message>
+    <message>
+        <source>sum of the lengths of the found files in MBytes</source>
+        <translation>Summe der Dateilängen der gefundenen Dateien in MByte</translation>
+    </message>
+    <message>
+        <source>runtime of the search in seconds</source>
+        <translation>Laufzeit der Suche in Sekunden</translation>
+    </message>
+    <message>
+        <source>newline (line feed)</source>
+        <translation>Zeilenwechsel (Linefeed)</translation>
+    </message>
+    <message>
+        <source>newline character (carriage return)</source>
+        <translation>Zeilenwechsel (Carriage return)</translation>
+    </message>
+    <message>
+        <source>tabulator</source>
+        <translation>Tabulator</translation>
+    </message>
+    <message>
+        <source>backslash</source>
+        <translation>umgekehrter Schrägstrich (Backslash)</translation>
+    </message>
+</context>
+<context>
+    <name>DialogOptions</name>
+    <message>
+        <source>Dialog</source>
+        <translation type="obsolete">Dialog</translation>
+    </message>
+    <message>
+        <source>Programs (Context Menu)</source>
+        <translation>Programme (Kontextmenü)</translation>
+    </message>
+    <message>
+        <source>File Type</source>
+        <translation>Dateityp</translation>
+    </message>
+    <message>
+        <source>Titel (Menu)</source>
+        <translation>Titel (Menü)</translation>
+    </message>
+    <message>
+        <source>Program</source>
+        <translation>Programm</translation>
+    </message>
+    <message>
+        <source>Arguments</source>
+        <translation>Argumente</translation>
+    </message>
+    <message>
+        <source>Directory Mode</source>
+        <translation>Verzeichnismodus</translation>
+    </message>
+    <message>
+        <source>Editor</source>
+        <translation>Editor</translation>
+    </message>
+    <message>
+        <source>Shell</source>
+        <translation>Shell</translation>
+    </message>
+    <message>
+        <source>&amp;Add/change</source>
+        <translation>Hinzufügen/Ändern</translation>
+    </message>
+    <message>
+        <source>D&amp;elete</source>
+        <translation>Lösch&amp;en</translation>
+    </message>
+    <message>
+        <source>&amp;Up</source>
+        <translation>A&amp;uf</translation>
+    </message>
+    <message>
+        <source>&amp;Down</source>
+        <translation>Runter</translation>
+    </message>
+    <message>
+        <source>Current Entry</source>
+        <translation>Aktuelles Element</translation>
+    </message>
+    <message>
+        <source>File Type:</source>
+        <translation>Dateityp:</translation>
+    </message>
+    <message>
+        <source>Title:</source>
+        <translation>Titel:</translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Program:&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Programm:&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>Arguments:</source>
+        <translation>Argumente</translation>
+    </message>
+    <message>
+        <source>Directory mode</source>
+        <translation>Verzeichnismodus</translation>
+    </message>
+    <message>
+        <source>File</source>
+        <translation>Datei</translation>
+    </message>
+    <message>
+        <source>Directory</source>
+        <translation>Verzeichnis</translation>
+    </message>
+    <message>
+        <source>Both</source>
+        <translation>Beide</translation>
+    </message>
+    <message>
+        <source>...</source>
+        <translation type="vanished">...</translation>
+    </message>
+    <message>
+        <source>Parent directory</source>
+        <translation>Vaterverzeichnis</translation>
+    </message>
+    <message>
+        <source>Entry (if directory)</source>
+        <translation>Eintrag (wenn Verzeichnis)</translation>
+    </message>
+    <message>
+        <source>Base directory</source>
+        <translation>Basisverzeichnis</translation>
+    </message>
+    <message>
+        <source>Tab 2</source>
+        <translation>Tab 2</translation>
+    </message>
+    <message>
+        <source>Select Program File</source>
+        <translation>Wähle Programmdatei</translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation>Optionen</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>RePubLib File Finder</source>
+        <translation>RePubLib Dateisuche</translation>
+    </message>
+    <message>
+        <source>&amp;Directory, File Patterns, Text Pattern</source>
+        <translation>&amp;Basis, Dateimuster, Textmuster</translation>
+    </message>
+    <message>
+        <source>Directory:</source>
+        <translation>Basisverzeichnis:</translation>
+    </message>
+    <message>
+        <source>Dirs</source>
+        <translation>Verz.</translation>
+    </message>
+    <message>
+        <source>Links</source>
+        <translation>Links</translation>
+    </message>
+    <message>
+        <source>Hidden</source>
+        <translation type="vanished">Versteckt</translation>
+    </message>
+    <message>
+        <source>Write</source>
+        <translation type="vanished">Schreibbar</translation>
+    </message>
+    <message>
+        <source>Read</source>
+        <translation type="vanished">Lesbar</translation>
+    </message>
+    <message>
+        <source>Exec.</source>
+        <translation type="vanished">Ausführbar</translation>
+    </message>
+    <message>
+        <source>Text Pattern:</source>
+        <translation>Textmuster:</translation>
+    </message>
+    <message>
+        <source>File Patterns:</source>
+        <translation>Dateimuster:</translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A comma (&apos;,&apos;) separated list of filename patterns&lt;/p&gt;&lt;p&gt;Example: *.txt,*.odt&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation type="vanished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Eine kommagetrennte (&apos;,&apos;) Liste von Dateinamensmuster&lt;/p&gt;&lt;p&gt;Beispiel: *.txt,*.odt&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>Regular expr.</source>
+        <translation>Reg. Ausdruck</translation>
+    </message>
+    <message>
+        <source>Binary files</source>
+        <translation>Binärdateien</translation>
+    </message>
+    <message>
+        <source>Execute the search</source>
+        <translation>Suche starten</translation>
+    </message>
+    <message>
+        <source>&amp;Run search</source>
+        <translation>Suche sta&amp;rten</translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translation type="vanished">Ctrl+F</translation>
+    </message>
+    <message>
+        <source>Change to the parent directory</source>
+        <translation>Ins Vaterverzeichnis wechseln</translation>
+    </message>
+    <message>
+        <source>&amp;Up</source>
+        <translation>A&amp;uf</translation>
+    </message>
+    <message>
+        <source>Select directory by a dialog box</source>
+        <translation>Wähle das Basisverzeichnis mittels Dialogbox</translation>
+    </message>
+    <message>
+        <source>The base directory (starting point of the search)</source>
+        <translation>Das Basisverzeichnis, aus dem die Suche startet</translation>
+    </message>
+    <message>
+        <source>ignore case</source>
+        <translation type="vanished">ign. Groß/Klein.</translation>
+    </message>
+    <message>
+        <source>Files</source>
+        <translation>Dateien</translation>
+    </message>
+    <message>
+        <source>&amp;Size, Date, Depth, Excluded Dirs</source>
+        <translation>Größe, Datum, Tiefe, Ausschlussverzeichnisse</translation>
+    </message>
+    <message>
+        <source>Min. Size:</source>
+        <translation>Minimalgröße</translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formula of the minimal size.&lt;/p&gt;&lt;p&gt;Example: 3*512ki + 5MiByte + -2^10&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;A non zero value excludes automatically directories.&lt;/p&gt;&lt;p&gt;A formula is a arithmetic expression with the operators &apos;+&apos;, &apos;*&apos; and &apos;^&apos; (potentioning).&lt;/p&gt;&lt;p&gt;Usual precedence: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;The operands are integer numbers with potentionally a unit.&lt;/p&gt;&lt;p&gt;Units: factor 1000: KByte, MByte, GByte, TByte&lt;br/&gt;factor 1024: KiByte, MiByte, GiByte, TiByte&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formel für die Minimalgröße.&lt;/p&gt;&lt;p&gt;Beispiel: 3*512ki + 5MiByte + -2^10&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Ein Wert größer 0 schließt automatisch Verzeichnisse aus.&lt;/p&gt;&lt;p&gt;Eine Formel ist ein arithmetischer Ausdruck mit den Operatoren &apos;+&apos;, &apos;*&apos; und &apos;^&apos; (Potenzierung).&lt;/p&gt;&lt;p&gt;Übliche Vorrangregelung: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;Die Operanden sind Ganzzahlen mit evt. einer Einheit&lt;/p&gt;&lt;p&gt;Einheiten: Faktor 1000: KByte, MByte, GByte, TByte&lt;br/&gt;Faktor 1024: KiByte, MiByte, GiByte, TiByte&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>Younger than:</source>
+        <translation>Jünger als:</translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formula of the minimal file date.&lt;/p&gt;&lt;p&gt;Example (relative): 3*5days+ 2hour&lt;/p&gt;&lt;p&gt;Example (absolute): 2015.12.31/23:59:59 - 3weeks&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;A formula is a arithmetic expression with the operators &apos;+&apos;, &apos;*&apos; and &apos;^&apos; (potentioning).&lt;/p&gt;&lt;p&gt;Usual precedence: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;The operands are integer numbers with potentionally a unit.&lt;/p&gt;&lt;p&gt;The first operand may be an absolute date, date and time or time:&lt;/p&gt;&lt;p&gt;Date syntax: yyyy.mm.dd&lt;/p&gt;&lt;p&gt;Time syntax HH:MM:SS&lt;/p&gt;&lt;p&gt;Units: minutes, hours, days, weeks&lt;/p&gt;&lt;p&gt;Abbrevation is allowed: &apos;d&apos; is the same as &apos;days&apos;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formel für die Minimaldatum.&lt;/p&gt;&lt;p&gt;Beispiel (relativ): 3*5days+ 2hour&lt;/p&gt;&lt;p&gt;Beispiel (absolut): 2015.12.31/23:59:59 - 3weeks&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Eine Formel ist ein arithmetischer Ausdruck mit den Operatoren &apos;+&apos;, &apos;*&apos; und &apos;^&apos; (Potenzierung).&lt;/p&gt;&lt;p&gt;Übliche Vorrangregelung: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;Die Operanden sind Ganzzahlen mit evt. einer Einheit.&lt;/p&gt;&lt;p&gt;Der erste Operand kann ein absolutes Datum, ein Datum mit Zeit oder eine Zeit sein:&lt;/p&gt;&lt;p&gt;Datumssyntax: yyyy.mm.dd&lt;/p&gt;&lt;p&gt;Zeit syntax HH:MM:SS&lt;/p&gt;&lt;p&gt;Einheiten: minutes (Minuten), hours (Stunden), days (Tage), weeks (Wochen)&lt;/p&gt;&lt;p&gt;Abkürzungen sind erlaubt: &apos;d&apos; ist das gleiche wie &apos;days&apos;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>Min. Depth:</source>
+        <translation>Min. Tiefe:</translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Minimal distance of the subdirectory containing the found file from the base directory.&lt;/p&gt;&lt;p&gt;Example:&lt;br/&gt;Min.Depth: 1&lt;br/&gt;Direcory: /home&lt;/p&gt;&lt;p&gt;/home/x will not be found&lt;/p&gt;&lt;p&gt;/home/dir/x will be found&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Minimaler Abstand vom Unterverzeichnis, das die gefundene Datei enthält, zum Basisverzeichnis.&lt;/p&gt;&lt;p&gt;Beispiel:&lt;br/&gt;Min.Tiefe: 1&lt;br/&gt;Basis: /home&lt;/p&gt;&lt;p&gt;/home/x wird nicht gefunden&lt;/p&gt;&lt;p&gt;/home/dir/x wird gefunden&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>Max Size:</source>
+        <translation>Max. Tiefe:</translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formula of the maximum size.&lt;/p&gt;&lt;p&gt;Example: 3*512ki + 5MiByte + -2^10&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;A non zero value excludes automatically directories.&lt;/p&gt;&lt;p&gt;A formula is a arithmetic expression with the operators &apos;+&apos;, &apos;*&apos; and &apos;^&apos; (potentioning).&lt;/p&gt;&lt;p&gt;Usual precedence: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;The operands are integer numbers with potentionally a unit.&lt;/p&gt;&lt;p&gt;Units: factor 1000: KByte, MByte, GByte, TByte&lt;br/&gt;factor 1024: KiByte, MiByte, GiByte, TiByte&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formel für die Maximalgröße.&lt;/p&gt;&lt;p&gt;Beispiel: 3*512ki + 5MiByte + -2^10&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Ein Wert größer 0 schließt automatisch Verzeichnisse aus.&lt;/p&gt;&lt;p&gt;Eine Formel ist ein arithmetischer Ausdruck mit den Operatoren &apos;+&apos;, &apos;*&apos; und &apos;^&apos; (Potenzierung).&lt;/p&gt;&lt;p&gt;Übliche Vorrangregelung: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;Die Operanden sind Ganzzahlen mit evt. einer Einheit&lt;/p&gt;&lt;p&gt;Einheiten: Faktor 1000: KByte, MByte, GByte, TByte&lt;br/&gt;Faktor 1024: KiByte, MiByte, GiByte, TiByte&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>Older than:</source>
+        <translation>Älter als:</translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formula of the maximal file date.&lt;/p&gt;&lt;p&gt;Example (relative): 3*5days+ 2hour&lt;/p&gt;&lt;p&gt;Example (absolute): 2015.12.31/23:59:59 - 3weeks&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;A formula is a arithmetic expression with the operators &apos;+&apos;, &apos;*&apos; and &apos;^&apos; (potentioning).&lt;/p&gt;&lt;p&gt;Usual precedence: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;The operands are integer numbers with potentionally a unit.&lt;/p&gt;&lt;p&gt;The first operand may be an absolute date, date and time or time:&lt;/p&gt;&lt;p&gt;Date syntax: yyyy.mm.dd&lt;/p&gt;&lt;p&gt;Time syntax HH:MM:SS&lt;/p&gt;&lt;p&gt;Units: minutes, hours, days, weeks&lt;/p&gt;&lt;p&gt;Abbrevation is allowed: &apos;d&apos; is the same as &apos;days&apos;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formel für die Maximaldatum.&lt;/p&gt;&lt;p&gt;Beispiel (relativ): 3*5days+ 2hour&lt;/p&gt;&lt;p&gt;Beispiel (absolut): 2015.12.31/23:59:59 - 3weeks&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Eine Formel ist ein arithmetischer Ausdruck mit den Operatoren &apos;+&apos;, &apos;*&apos; und &apos;^&apos; (Potenzierung).&lt;/p&gt;&lt;p&gt;Übliche Vorrangregelung: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;Die Operanden sind Ganzzahlen mit evt. einer Einheit.&lt;/p&gt;&lt;p&gt;Der erste Operand kann ein absolutes Datum, ein Datum mit Zeit oder eine Zeit sein:&lt;/p&gt;&lt;p&gt;Datumssyntax: yyyy.mm.dd&lt;/p&gt;&lt;p&gt;Zeit syntax HH:MM:SS&lt;/p&gt;&lt;p&gt;Einheiten: minutes (Minuten), hours (Stunden), days (Tage), weeks (Wochen)&lt;/p&gt;&lt;p&gt;Abkürzungen sind erlaubt: &apos;d&apos; ist das gleiche wie &apos;days&apos;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>Max. Depth:</source>
+        <translation>Max. Tiefe:</translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Maximum distance of the subdirectory containing the found file from the base directory.&lt;/p&gt;&lt;p&gt;Example:&lt;br/&gt;Max. Depth: 0&lt;br/&gt;It found no files in subdirectories.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Maximaler Abstand vom Unterverzeichnis, das die gefundene Datei enthält, zum Basisverzeichnis.&lt;/p&gt;&lt;p&gt;Beispiel:&lt;br/&gt;Min.Tiefe: 1&lt;br/&gt;Basis: /home&lt;/p&gt;&lt;p&gt;/home/x wird nicht gefunden&lt;/p&gt;&lt;p&gt;/home/dir/x wird gefunden&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>Excluded Dirs:</source>
+        <translation>Ausschlussverzeichnisse:</translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;a comma (&apos;,&apos;) separated list of directory names not entered for the search.&lt;/p&gt;&lt;p&gt;Example: .git,.cache&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;eine kommagetrennte  (&apos;,&apos;) Liste von Verzeichnisnamen, die nicht für die Suche betreten werden.&lt;/p&gt;&lt;p&gt;Beispiel: .git,.cache&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>&amp;Export</source>
+        <translation>&amp;Export</translation>
+    </message>
+    <message>
+        <source>Export file:</source>
+        <translation type="vanished">Exportdatei:</translation>
+    </message>
+    <message>
+        <source>Template of a line for each file</source>
+        <translation>Vorlage einer Zeile für jede Datei</translation>
+    </message>
+    <message>
+        <source>Select a placeholder for the template</source>
+        <translation>Wähle einen Platzhalter für die Vorlage</translation>
+    </message>
+    <message>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <source>&amp;File</source>
+        <translation>&amp;Datei</translation>
+    </message>
+    <message>
+        <source>Clipboard</source>
+        <translation>Zwischenablage</translation>
+    </message>
+    <message>
+        <source>Name of the export file</source>
+        <translation>Name der Exportdatei</translation>
+    </message>
+    <message>
+        <source>refind.result.txt</source>
+        <translation type="vanished">refind.result.txt</translation>
+    </message>
+    <message>
+        <source>Select the export file</source>
+        <translation>Wähle eine Exportdatei</translation>
+    </message>
+    <message>
+        <source>Exports file attributes (specified in the template line)  of each found files  found file in a textfile or clipboard</source>
+        <translation>Exportiert Dateiattribute (spezifiziert in der Vorlagenzeile) jeder gefundenen Datei in eine Textdatei oder in die Zwischenablage</translation>
+    </message>
+    <message>
+        <source>Alt+E</source>
+        <translation type="vanished">Alt+E</translation>
+    </message>
+    <message>
+        <source>File footer:</source>
+        <translation>Dateiende:</translation>
+    </message>
+    <message>
+        <source>Line template:</source>
+        <translation>Zeilenvorlage:</translation>
+    </message>
+    <message>
+        <source>File header:</source>
+        <translation>Dateikopf:</translation>
+    </message>
+    <message>
+        <source>Text at the top of the export file</source>
+        <translation>Text am Anfang der Exportdatei</translation>
+    </message>
+    <message>
+        <source>Text at the end of the export file</source>
+        <translation>Text am Ende der Exportdatei</translation>
+    </message>
+    <message>
+        <source>=== found: ${dirs} dir(s) and ${files} file(s) with ${megabytes} MB in ${runtime} sec</source>
+        <translation>=== Gefunden: ${dirs} Verzeichnis(se) und ${files} Datei(en) mit ${megabytes} MB in ${runtime} Sekunden</translation>
+    </message>
+    <message>
+        <source>Select a placeholder for the header</source>
+        <translation>Wähle einen Platzhalter für den Dateikopf</translation>
+    </message>
+    <message>
+        <source>Select a placeholder for the footer</source>
+        <translation>Wähle einen Platzhalter für das Dateiende</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Dateiname</translation>
+    </message>
+    <message>
+        <source>Ext</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>Size (MByte)</source>
+        <translation>Größe (MByte)</translation>
+    </message>
+    <message>
+        <source>Modified</source>
+        <translation>Geändert</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>Path</source>
+        <translation>Pfad</translation>
+    </message>
+    <message>
+        <source>&amp;Help</source>
+        <translation>&amp;Hilfe</translation>
+    </message>
+    <message>
+        <source>&amp;Navigate</source>
+        <translation>&amp;Navigation</translation>
+    </message>
+    <message>
+        <source>&amp;Edit</source>
+        <translation>&amp;Bearbeiten</translation>
+    </message>
+    <message>
+        <source>toolBar</source>
+        <translation>Werkzeugmenü</translation>
+    </message>
+    <message>
+        <source>toolBar_2</source>
+        <translation>toolBar_2</translation>
+    </message>
+    <message>
+        <source>E&amp;xit</source>
+        <translation>&amp;Beenden</translation>
+    </message>
+    <message>
+        <source>Exits the program</source>
+        <translation>Beendet das Programm</translation>
+    </message>
+    <message>
+        <source>Search the files with the given properties</source>
+        <translation>Suche nach Dateien mit den gegebenen Eigenschaften</translation>
+    </message>
+    <message>
+        <source>&amp;About</source>
+        <translation>Ü&amp;ber</translation>
+    </message>
+    <message>
+        <source>&amp;Select directory</source>
+        <translation>&amp;Wähle Basisverzeichnis</translation>
+    </message>
+    <message>
+        <source>Select directory with a dialog</source>
+        <translation>Wähle das Basisverzeichnis mit einem Dialog</translation>
+    </message>
+    <message>
+        <source>Get absolute &amp;path</source>
+        <translation>Absolut&amp;pfad</translation>
+    </message>
+    <message>
+        <source>Puts the absolute path of the selected file into the clipboard</source>
+        <translation>Bringt den absoluten Pfad der gewählten Datei in die Zwischenablage</translation>
+    </message>
+    <message>
+        <source>&amp;full name to clipboard</source>
+        <translation>Vollname in Zw.ablage</translation>
+    </message>
+    <message>
+        <source>&amp;base directory to clipboard</source>
+        <translation>&amp;Basisverzeichnis in Zw.ablage</translation>
+    </message>
+    <message>
+        <source>Puts the base directory into the clipboard</source>
+        <translation>Bringt den Namen des Basisverzeichnis in die Zwischenablage</translation>
+    </message>
+    <message>
+        <source>&amp;Reset search parameters</source>
+        <translation>Suchparameter zu&amp;rücksetzen</translation>
+    </message>
+    <message>
+        <source>Sets the file filter properties to the default</source>
+        <translation>Setzt die Datei-Filterparameter auf die Ausgangswerte</translation>
+    </message>
+    <message>
+        <source>Sa&amp;ve</source>
+        <translation>Speic&amp;hern</translation>
+    </message>
+    <message>
+        <source>Saves the program state (position, history...) to a file</source>
+        <translation>Speichert den Programmstatus (Position, Historie...) in eine Datei</translation>
+    </message>
+    <message>
+        <source>not a valid file: </source>
+        <translation>keine gültige Datei:</translation>
+    </message>
+    <message>
+        <source>result exported to </source>
+        <translation>Ergebnis exportiert nach </translation>
+    </message>
+    <message>
+        <source>result exported to the clipboard</source>
+        <translation>Ergebnis in die Zwischenablage kopiert</translation>
+    </message>
+    <message>
+        <source>unknown placeholder: </source>
+        <translation type="vanished">Unbekannter Platzhalter</translation>
+    </message>
+    <message>
+        <source>directory not found: </source>
+        <translation>Verzeichnis nicht gefunden: </translation>
+    </message>
+    <message>
+        <source>not a directory: </source>
+        <translation>Kein Vezeichnis: </translation>
+    </message>
+    <message>
+        <source>no path delimiter allowed</source>
+        <translation>Kein Pfadtrenner erlaubt</translation>
+    </message>
+    <message>
+        <source>no patterns allowed. Do not use &apos;*</source>
+        <translation>Kein Muster erlaubt. Benutze keinen &apos;*&apos;</translation>
+    </message>
+    <message>
+        <source>Select Directory</source>
+        <translation>Wähle Verzeichnis</translation>
+    </message>
+    <message>
+        <source>Select Export File</source>
+        <translation>Wähle Exportdatei</translation>
+    </message>
+    <message>
+        <source>Adds the result of the next search to the table</source>
+        <translation>Fügt das Ergebnis der nächsten Suche ans Ende der Tabelle</translation>
+    </message>
+    <message>
+        <source>Append</source>
+        <translation>Anfügen</translation>
+    </message>
+    <message>
+        <source>Ignore case</source>
+        <translation>Ignor. Groß/Kl.</translation>
+    </message>
+    <message>
+        <source>Clears the file table</source>
+        <translation>Löscht die Dateitabelle</translation>
+    </message>
+    <message>
+        <source>C&amp;lear</source>
+        <translation>&amp;Löschen</translation>
+    </message>
+    <message>
+        <source>S&amp;top search</source>
+        <translation>Suche anhalten</translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A comma (&apos;,&apos;) separated list of filename patterns. A prefix of &apos;-&apos;  means inversion: if a filename matches it will not be found.&lt;/p&gt;&lt;p&gt;Example: *.txt,*.odt&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Eine mit Komma (&apos;,&apos;) getrennte Liste von Dateinamensmuster. Ein Präfix von &apos;-&apos;  bedeutet Umkehrung: Wenn der Dateiname passt, wird er nicht gefunden.&lt;/p&gt;&lt;p&gt;Beispiel: *.txt,*.odt&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>Stop after:</source>
+        <translation>Halt nach:</translation>
+    </message>
+    <message>
+        <source>&amp;Preview</source>
+        <translation>Vorschau</translation>
+    </message>
+    <message>
+        <source>&amp;File:</source>
+        <translation>Datei:</translation>
+    </message>
+    <message>
+        <source>&amp;Search</source>
+        <translation>Suche</translation>
+    </message>
+    <message>
+        <source>&amp;Options</source>
+        <translation>&amp;Optionen</translation>
+    </message>
+    <message>
+        <source>Dialog for changing the options</source>
+        <translation>Dialog zum Änderung der Optionen</translation>
+    </message>
+    <message>
+        <source>Pre&amp;view</source>
+        <translation>&amp;Vorschau</translation>
+    </message>
+    <message>
+        <source>Shows a preview of the result export</source>
+        <translation>Zeigt eine Vorschau der Exportergebnisse</translation>
+    </message>
+    <message>
+        <source>Start search</source>
+        <translation>Startet die Suche</translation>
+    </message>
+    <message>
+        <source>Start the search</source>
+        <translation>Suche starten</translation>
+    </message>
+    <message>
+        <source>Stop search</source>
+        <translation>Suche anhalten</translation>
+    </message>
+    <message>
+        <source>Stop the current search</source>
+        <translation>Halte die aktuelle Suche an</translation>
+    </message>
+    <message>
+        <source>copy </source>
+        <translation>Kopiere </translation>
+    </message>
+    <message>
+        <source>copy %1 file(s) and %2 dir(s)</source>
+        <translation>Kopiere %1 Datei(en) und %2 Verzeichnis(se)</translation>
+    </message>
+    <message>
+        <source>copy %1 file(s)</source>
+        <translation>Kopiere %1 Datei(en) </translation>
+    </message>
+    <message>
+        <source>copy %1 dirs(s)</source>
+        <translation>Kopiere %1 Verzeichnis(se)</translation>
+    </message>
+    <message>
+        <source>%1 entry/entries copied to clipboard</source>
+        <translation>%1 Elntrag/Einträge in die Zwischenablage kopiert</translation>
+    </message>
+    <message>
+        <source>started:</source>
+        <translation>Gestartet:</translation>
+    </message>
+    <message>
+        <source> %1 object(s)</source>
+        <translation>%1 Objekt(e)</translation>
+    </message>
+    <message>
+        <source>Welcome at refind</source>
+        <translation type="vanished">Willkommen bei refind</translation>
+    </message>
+    <message>
+        <source>Preview of the Export</source>
+        <translation>Vorschau auf den Export</translation>
+    </message>
+    <message>
+        <source>If this count of hits is reachted the search stops</source>
+        <translation>Wenn diese Zahl an Treffern erreicht ist, wird die Suche abgebrochen</translation>
+    </message>
+    <message>
+        <source>Go  to the parent directory</source>
+        <translation>In Vorgängerverzeichnis wechseln</translation>
+    </message>
+    <message>
+        <source>Normal files will be found</source>
+        <translation>Normale Dateien werden gefunden</translation>
+    </message>
+    <message>
+        <source>Case insensitiv text search</source>
+        <translation>Textsuche berücksichtigt Groß-/Kleinschreibung nicht</translation>
+    </message>
+    <message>
+        <source>Directories will be found</source>
+        <translation>Verzeichnisse werden gefunden</translation>
+    </message>
+    <message>
+        <source>Text pattern is a regular expression (Pearl syntax)</source>
+        <translation type="vanished">Das Textsuchmuster enthält einen regulären Ausdruck (Perl Syntax)</translation>
+    </message>
+    <message>
+        <source>Symbolic links will be found</source>
+        <translation>Symbolische Verknüpfungen (Links) werden gefunden</translation>
+    </message>
+    <message>
+        <source>Files containing ASCII NUL will be found too</source>
+        <translation>Dateien, die ASCII NUL enthalten, werden auch gefunden</translation>
+    </message>
+    <message>
+        <source>Text pattern is a regular expression (Perl syntax)</source>
+        <translation>Das Textsuchmuster enthält einen regulären Ausdruck (Perl Syntax)</translation>
+    </message>
+    <message>
+        <source>Only files containing this text (or text pattern) will be found</source>
+        <translation>Nur Dateien, die diesen Text (oder Muster) enthalten, werden gefunden</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>link (dir)</source>
+        <translation>Link (Verz.)</translation>
+    </message>
+    <message>
+        <source>link (file)</source>
+        <translation>Link (Datei)</translation>
+    </message>
+    <message>
+        <source>dir</source>
+        <translation>Verz.</translation>
+    </message>
+    <message>
+        <source>file</source>
+        <translation>Datei</translation>
+    </message>
+    <message>
+        <source>Found: %d dir(s) and %d file(s) with %.6f MByte. Duration of the search: %.3f sec</source>
+        <translation type="vanished">Gefunden: %d Verzeichnis(se) und %d Datei(en) mit %.6f MByte. Dauer der Suche: %.3f sec</translation>
+    </message>
+    <message>
+        <source>more than 2 power operators, e.g. &apos;2^3^4&apos;</source>
+        <translation>Mehr als 2 Potenzoperatoren, z.B. &apos;2^3^4&apos;</translation>
+    </message>
+    <message>
+        <source>number overflow while power operation</source>
+        <translation>Zahlüberlauf in Potenzoperation</translation>
+    </message>
+    <message>
+        <source>number expected: </source>
+        <translation>Zahl erwartet: </translation>
+    </message>
+    <message>
+        <source>missing &apos;:&apos; in unit definition, e.g. &apos;k:1000&apos;: </source>
+        <translation>vermisse &apos;:&apos; in der Einheitendefinition, z.B. &apos;k:1000&apos;: </translation>
+    </message>
+    <message>
+        <source>too many  &apos;:&apos; in unit definition: </source>
+        <translation>Zu viele &apos;:&apos; in der Einheitendefinition: </translation>
+    </message>
+    <message>
+        <source>not a number: </source>
+        <translation>Keine Zahl: </translation>
+    </message>
+    <message>
+        <source>unknown unit &apos;$1&apos;. Allowed: </source>
+        <translation type="vanished">Unbekannte Einheit &apos;$1&apos;. Erlaubt: </translation>
+    </message>
+    <message>
+        <source>empty string is not a date/time</source>
+        <translation>Ein leerer String ist kein Datum/keine Zeit</translation>
+    </message>
+    <message>
+        <source>not an integer: </source>
+        <translation>Keine Ganzzahl: </translation>
+    </message>
+    <message>
+        <source>copy</source>
+        <translation>Kopiere</translation>
+    </message>
+    <message>
+        <source>not found: %1</source>
+        <translation>Nicht gefunden: %1</translation>
+    </message>
+    <message>
+        <source>cannot open (%1): %2</source>
+        <translation>Kann nicht öffnen (%1): %2</translation>
+    </message>
+    <message>
+        <source>cannot write (%1): %2 [%3/%4]</source>
+        <translation>Kann nicht schreiben (%1): %2 [%3/%4]</translation>
+    </message>
+    <message>
+        <source>file can be read only partitionally: %1 [%2/%3]</source>
+        <translation>Datei kann teilweise schreibgeschützt sein: %1 [%2/%3]</translation>
+    </message>
+    <message>
+        <source>cannot set date/time (%1): %2</source>
+        <translation>Kann Dateidatum nicht setzen: (%1): %2</translation>
+    </message>
+    <message>
+        <source>cannot set permissions (%1): %2</source>
+        <translation>Kann Dateirechte nicht setzen (%1): %2</translation>
+    </message>
+    <message>
+        <source>can&apos;t create directory (%1): %2</source>
+        <translation>Kann Verzeichnis nicht erzeugen (%1): %2</translation>
+    </message>
+    <message>
+        <source>can&apos;t create directory (is a file): </source>
+        <translation>Kann Verzeichnis nicht erstellen (ist eine Datei): </translation>
+    </message>
+    <message>
+        <source>unknown placeholder: </source>
+        <translation>Unbekannter Platzhalter: </translation>
+    </message>
+    <message>
+        <source>%1 of %2 (%3 %)</source>
+        <translation>%1 von %2 (%3 %)</translation>
+    </message>
+    <message>
+        <source>unknown unit &apos;%1&apos;. Allowed: </source>
+        <translation>unbekannte Einheit: &apos;%1&apos;. Erlaubt: </translation>
+    </message>
+    <message>
+        <source>Found: %1 dir(s) and %2 file(s) with %%3. Runtime: %4</source>
+        <translation type="vanished">Gefunden: %1 Verzeichnis(se) und %2 Datei(en) mit %%3. Laufzeit: %4</translation>
+    </message>
+    <message>
+        <source>Found: %1 dir(s) and %2 file(s) with %3. Runtime: %4</source>
+        <translation>Gefunden: %1 Verzeichnis(se) und %2 Datei(en) mit %3. Laufzeit: %4</translation>
+    </message>
+</context>
+<context>
+    <name>ReGuiApplication</name>
+    <message>
+        <source>Welcome!</source>
+        <translation>Willkommen!</translation>
+    </message>
+</context>
+</TS>
index bcc0eca74c670f5c8845f943474332ce2e905db8..199a3045e3d67c29214768864197ce9185ec1073 100644 (file)
@@ -32,7 +32,8 @@ SOURCES += main.cpp\
         dialogfileplaceholder.cpp \
         utils.cpp \
         dialogoptions.cpp \
-        filetablewidget.cpp
+        filetablewidget.cpp \
+    ../../gui/ReGuiApplication.cpp
 
 
 HEADERS  += mainwindow.hpp \
@@ -57,7 +58,7 @@ FORMS    += mainwindow.ui \
         dialogfileplaceholder.ui \
         dialogoptions.ui
 
-TRANSLATIONS = refind_de.ts
+TRANSLATIONS = refind.de.ts
 
 CODECFORSRC = UTF-8
 
diff --git a/appl/refind/refind_de.ts b/appl/refind/refind_de.ts
deleted file mode 100644 (file)
index 04f3417..0000000
+++ /dev/null
@@ -1,687 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1" language="de_DE" sourcelanguage="en_US">
-<context>
-    <name>AboutDialog</name>
-    <message>
-        <source>Dialog</source>
-        <translation>Dialog</translation>
-    </message>
-    <message>
-        <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;ReFind&lt;/span&gt; for searching files in a directory tree&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This is a program of the project &amp;quot;&lt;span style=&quot; font-weight:600;&quot;&gt;Re&lt;/span&gt;al &lt;span style=&quot; font-weight:600;&quot;&gt;Pub&lt;/span&gt;lic &lt;span style=&quot; font-weight:600;&quot;&gt;Lib&lt;/span&gt;rary&amp;quot;.&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Sources are public domain and available under https://github.com/republib&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Implemented in QT (C++) 5.x&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Icons:  Mark James, &lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="obsolete">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;ReFind: &lt;/span&gt;Suchen von Dateien in einem Verzeichnisbaum&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Das ist ein Programm des Projekts&amp;quot;&lt;span style=&quot; font-weight:600;&quot;&gt;Re&lt;/span&gt;al &lt;span style=&quot; font-weight:600;&quot;&gt;Pub&lt;/span&gt;lic &lt;span style=&quot; font-weight:600;&quot;&gt;Lib&lt;/span&gt;rary&amp;quot;.&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Die Quellen sind frei (public domain) und unter https://github.com/republib erreichbar&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Implementiert in QT (C++) 5.x&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Icons:  Mark James, &lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-    <message>
-        <source>&amp;OK</source>
-        <translation type="unfinished">&amp;OK</translation>
-    </message>
-    <message>
-        <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;ReFind&lt;/span&gt; for searching files in a directory tree.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This is a program of the project&lt;/p&gt;
-&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Re&lt;/span&gt;al &lt;span style=&quot; font-weight:600;&quot;&gt;Pub&lt;/span&gt;lic &lt;span style=&quot; font-weight:600;&quot;&gt;Lib&lt;/span&gt;rary (RePubLib)&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Sources are public domain and available under&lt;/p&gt;
-&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://github.com/republib&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/republib&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Implemented in QT (C++) 5.x&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Icons: Mark James, &lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;ReFind&lt;/span&gt;: Suche nach Dateien in einem Verzeichnisbaum.&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Dies ist ein Programm des Projekts&lt;/p&gt;
-&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Re&lt;/span&gt;al &lt;span style=&quot; font-weight:600;&quot;&gt;Pub&lt;/span&gt;lic &lt;span style=&quot; font-weight:600;&quot;&gt;Lib&lt;/span&gt;rary (RePubLib)&lt;/p&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Die Quellen sind frei (public domain) und erhältlich unter&lt;/p&gt;
-&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;https://github.com/republib&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/republib&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Implementiert in QT (C++) 5.x&lt;/p&gt;
-&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Icons: Mark James, &lt;a href=&quot;http://famfamfam.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://famfamfam.com&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-</context>
-<context>
-    <name>DialogFilePlaceHolders</name>
-    <message>
-        <source>File Specific Placeholders</source>
-        <translation type="unfinished">Dateispezifische Platzhalter</translation>
-    </message>
-    <message>
-        <source>New Row</source>
-        <translation type="unfinished">Neue Zeile</translation>
-    </message>
-    <message>
-        <source>Placeholder</source>
-        <translation>Platzhalter</translation>
-    </message>
-    <message>
-        <source>Example</source>
-        <translation>Beispiel</translation>
-    </message>
-    <message>
-        <source>Description</source>
-        <translation>Beschreibung</translation>
-    </message>
-    <message>
-        <source>${base}</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/home/bob</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>base directory</source>
-        <translation>Basisverzeichnis</translation>
-    </message>
-    <message>
-        <source>filename with absolute path</source>
-        <translation>Dateiname mit absolutem Pfad</translation>
-    </message>
-    <message>
-        <source>relative path</source>
-        <translation>relativer Pfad</translation>
-    </message>
-    <message>
-        <source>filename with extension</source>
-        <translation>Dateiname mit Dateityp</translation>
-    </message>
-    <message>
-        <source>filename without extension</source>
-        <translation>Dateiname ohne Dateityp</translation>
-    </message>
-    <message>
-        <source>extension</source>
-        <translation>Dateityp</translation>
-    </message>
-    <message>
-        <source>date/time of the last change</source>
-        <translation>Datum/Zeit der letzten Änderung</translation>
-    </message>
-    <message>
-        <source>file length in megabyte</source>
-        <translation>Dateilänge in Megabyte</translation>
-    </message>
-    <message>
-        <source>&apos;file&apos;, &apos;dir&apos;, &apos;link (file)&apos;, &apos;link (dir)&apos;</source>
-        <translation>&apos;file&apos;, &apos;dir&apos;, &apos;link (Datei)&apos;, &apos;link (Verz.)&apos;</translation>
-    </message>
-    <message>
-        <source>\t</source>
-        <translation type="unfinished">\t</translation>
-    </message>
-    <message>
-        <source>tabulator</source>
-        <translation>Tabulator</translation>
-    </message>
-    <message>
-        <source>newline</source>
-        <translation>Zeilenwechsel</translation>
-    </message>
-</context>
-<context>
-    <name>DialogGlobalPlaceholder</name>
-    <message>
-        <source>Placeholders for Header and Footer</source>
-        <translation>Platzhalter für Dateikopf und Dateiende</translation>
-    </message>
-    <message>
-        <source>New Row</source>
-        <translation>Neue Zeile</translation>
-    </message>
-    <message>
-        <source>Placeholder</source>
-        <translation>Platzhalter</translation>
-    </message>
-    <message>
-        <source>Description</source>
-        <translation>Beschreibung</translation>
-    </message>
-    <message>
-        <source>current date/time</source>
-        <translation>aktuelles Datum/aktuelle Zeit</translation>
-    </message>
-    <message>
-        <source>current file patterns</source>
-        <translation>aktuelle Dateisuchmuster</translation>
-    </message>
-    <message>
-        <source>current text pattern</source>
-        <translation>aktuelles Textsuchmuster</translation>
-    </message>
-    <message>
-        <source>count of found directories</source>
-        <translation>Zahl der gefundenen Verzeichnisse</translation>
-    </message>
-    <message>
-        <source>count of found files</source>
-        <translation>Zahl der gefundenen Dateien</translation>
-    </message>
-    <message>
-        <source>sum of the lengths of the found files</source>
-        <translation>Summe der Dateilängen der gefundenen Dateien</translation>
-    </message>
-    <message>
-        <source>sum of the lengths of the found files in MBytes</source>
-        <translation>Summe der Dateilängen der gefundenen Dateien in MByte</translation>
-    </message>
-    <message>
-        <source>runtime of the search in seconds</source>
-        <translation>Laufzeit der Suche in Sekunden</translation>
-    </message>
-    <message>
-        <source>newline (line feed)</source>
-        <translation>Zeilenwechsel (Linefeed)</translation>
-    </message>
-    <message>
-        <source>newline character (carriage return)</source>
-        <translation>Zeilenwechsel (Carriage return)</translation>
-    </message>
-    <message>
-        <source>tabulator</source>
-        <translation>Tabulator</translation>
-    </message>
-    <message>
-        <source>backslash</source>
-        <translation>umgekehrter Schrägstrich (Backslash)</translation>
-    </message>
-</context>
-<context>
-    <name>MainWindow</name>
-    <message>
-        <source>RePubLib File Finder</source>
-        <translation>RePubLib Dateisuche</translation>
-    </message>
-    <message>
-        <source>&amp;Directory, File Patterns, Text Pattern</source>
-        <translation>&amp;Basis, Dateimuster, Textmuster</translation>
-    </message>
-    <message>
-        <source>Directory:</source>
-        <translation>Basisverzeichnis:</translation>
-    </message>
-    <message>
-        <source>Dirs</source>
-        <translation>Verz.</translation>
-    </message>
-    <message>
-        <source>Links</source>
-        <translation>Links</translation>
-    </message>
-    <message>
-        <source>Hidden</source>
-        <translation>Versteckt</translation>
-    </message>
-    <message>
-        <source>Write</source>
-        <translation>Schreibbar</translation>
-    </message>
-    <message>
-        <source>Read</source>
-        <translation>Lesbar</translation>
-    </message>
-    <message>
-        <source>Exec.</source>
-        <translation>Ausführbar</translation>
-    </message>
-    <message>
-        <source>Text Pattern:</source>
-        <translation>Textmuster:</translation>
-    </message>
-    <message>
-        <source>File Patterns:</source>
-        <translation>Dateimuster:</translation>
-    </message>
-    <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A comma (&apos;,&apos;) separated list of filename patterns&lt;/p&gt;&lt;p&gt;Example: *.txt,*.odt&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Eine kommagetrennte (&apos;,&apos;) Liste von Dateinamensmuster&lt;/p&gt;&lt;p&gt;Beispiel: *.txt,*.odt&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-    <message>
-        <source>Regular expr.</source>
-        <translation>Reg. Ausdruck</translation>
-    </message>
-    <message>
-        <source>Binary files</source>
-        <translation>Binärdateien</translation>
-    </message>
-    <message>
-        <source>Execute the search</source>
-        <translation>Suche starten</translation>
-    </message>
-    <message>
-        <source>&amp;Run search</source>
-        <translation>Suche sta&amp;rten</translation>
-    </message>
-    <message>
-        <source>Ctrl+F</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Change to the parent directory</source>
-        <translation>Ins Vaterverzeichnis wechseln</translation>
-    </message>
-    <message>
-        <source>&amp;Up</source>
-        <translation>A&amp;uf</translation>
-    </message>
-    <message>
-        <source>Select directory by a dialog box</source>
-        <translation>Wähle das Basisverzeichnis mittels Dialogbox</translation>
-    </message>
-    <message>
-        <source>The base directory (starting point of the search)</source>
-        <translation>Das Basisverzeichnis, aus dem die Suche startet</translation>
-    </message>
-    <message>
-        <source>ignore case</source>
-        <translation>ign. Groß/Klein.</translation>
-    </message>
-    <message>
-        <source>Files</source>
-        <translation>Dateien</translation>
-    </message>
-    <message>
-        <source>&amp;Size, Date, Depth, Excluded Dirs</source>
-        <translation>Größe, Datum, Tiefe, Ausschlussverzeichnisse</translation>
-    </message>
-    <message>
-        <source>Min. Size:</source>
-        <translation>Minimalgröße</translation>
-    </message>
-    <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formula of the minimal size.&lt;/p&gt;&lt;p&gt;Example: 3*512ki + 5MiByte + -2^10&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;A non zero value excludes automatically directories.&lt;/p&gt;&lt;p&gt;A formula is a arithmetic expression with the operators &apos;+&apos;, &apos;*&apos; and &apos;^&apos; (potentioning).&lt;/p&gt;&lt;p&gt;Usual precedence: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;The operands are integer numbers with potentionally a unit.&lt;/p&gt;&lt;p&gt;Units: factor 1000: KByte, MByte, GByte, TByte&lt;br/&gt;factor 1024: KiByte, MiByte, GiByte, TiByte&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formel für die Minimalgröße.&lt;/p&gt;&lt;p&gt;Beispiel: 3*512ki + 5MiByte + -2^10&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Ein Wert größer 0 schließt automatisch Verzeichnisse aus.&lt;/p&gt;&lt;p&gt;Eine Formel ist ein arithmetischer Ausdruck mit den Operatoren &apos;+&apos;, &apos;*&apos; und &apos;^&apos; (Potenzierung).&lt;/p&gt;&lt;p&gt;Übliche Vorrangregelung: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;Die Operanden sind Ganzzahlen mit evt. einer Einheit&lt;/p&gt;&lt;p&gt;Einheiten: Faktor 1000: KByte, MByte, GByte, TByte&lt;br/&gt;Faktor 1024: KiByte, MiByte, GiByte, TiByte&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-    <message>
-        <source>Younger than:</source>
-        <translation>Jünger als:</translation>
-    </message>
-    <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formula of the minimal file date.&lt;/p&gt;&lt;p&gt;Example (relative): 3*5days+ 2hour&lt;/p&gt;&lt;p&gt;Example (absolute): 2015.12.31/23:59:59 - 3weeks&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;A formula is a arithmetic expression with the operators &apos;+&apos;, &apos;*&apos; and &apos;^&apos; (potentioning).&lt;/p&gt;&lt;p&gt;Usual precedence: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;The operands are integer numbers with potentionally a unit.&lt;/p&gt;&lt;p&gt;The first operand may be an absolute date, date and time or time:&lt;/p&gt;&lt;p&gt;Date syntax: yyyy.mm.dd&lt;/p&gt;&lt;p&gt;Time syntax HH:MM:SS&lt;/p&gt;&lt;p&gt;Units: minutes, hours, days, weeks&lt;/p&gt;&lt;p&gt;Abbrevation is allowed: &apos;d&apos; is the same as &apos;days&apos;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formel für die Minimaldatum.&lt;/p&gt;&lt;p&gt;Beispiel (relativ): 3*5days+ 2hour&lt;/p&gt;&lt;p&gt;Beispiel (absolut): 2015.12.31/23:59:59 - 3weeks&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Eine Formel ist ein arithmetischer Ausdruck mit den Operatoren &apos;+&apos;, &apos;*&apos; und &apos;^&apos; (Potenzierung).&lt;/p&gt;&lt;p&gt;Übliche Vorrangregelung: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;Die Operanden sind Ganzzahlen mit evt. einer Einheit.&lt;/p&gt;&lt;p&gt;Der erste Operand kann ein absolutes Datum, ein Datum mit Zeit oder eine Zeit sein:&lt;/p&gt;&lt;p&gt;Datumssyntax: yyyy.mm.dd&lt;/p&gt;&lt;p&gt;Zeit syntax HH:MM:SS&lt;/p&gt;&lt;p&gt;Einheiten: minutes (Minuten), hours (Stunden), days (Tage), weeks (Wochen)&lt;/p&gt;&lt;p&gt;Abkürzungen sind erlaubt: &apos;d&apos; ist das gleiche wie &apos;days&apos;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-    <message>
-        <source>Min. Depth:</source>
-        <translation type="unfinished">Min. Tiefe:</translation>
-    </message>
-    <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Minimal distance of the subdirectory containing the found file from the base directory.&lt;/p&gt;&lt;p&gt;Example:&lt;br/&gt;Min.Depth: 1&lt;br/&gt;Direcory: /home&lt;/p&gt;&lt;p&gt;/home/x will not be found&lt;/p&gt;&lt;p&gt;/home/dir/x will be found&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Minimaler Abstand vom Unterverzeichnis, das die gefundene Datei enthält, zum Basisverzeichnis.&lt;/p&gt;&lt;p&gt;Beispiel:&lt;br/&gt;Min.Tiefe: 1&lt;br/&gt;Basis: /home&lt;/p&gt;&lt;p&gt;/home/x wird nicht gefunden&lt;/p&gt;&lt;p&gt;/home/dir/x wird gefunden&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-    <message>
-        <source>Max Size:</source>
-        <translation>Max. Tiefe:</translation>
-    </message>
-    <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formula of the maximum size.&lt;/p&gt;&lt;p&gt;Example: 3*512ki + 5MiByte + -2^10&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;A non zero value excludes automatically directories.&lt;/p&gt;&lt;p&gt;A formula is a arithmetic expression with the operators &apos;+&apos;, &apos;*&apos; and &apos;^&apos; (potentioning).&lt;/p&gt;&lt;p&gt;Usual precedence: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;The operands are integer numbers with potentionally a unit.&lt;/p&gt;&lt;p&gt;Units: factor 1000: KByte, MByte, GByte, TByte&lt;br/&gt;factor 1024: KiByte, MiByte, GiByte, TiByte&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formel für die Maximalgröße.&lt;/p&gt;&lt;p&gt;Beispiel: 3*512ki + 5MiByte + -2^10&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Ein Wert größer 0 schließt automatisch Verzeichnisse aus.&lt;/p&gt;&lt;p&gt;Eine Formel ist ein arithmetischer Ausdruck mit den Operatoren &apos;+&apos;, &apos;*&apos; und &apos;^&apos; (Potenzierung).&lt;/p&gt;&lt;p&gt;Übliche Vorrangregelung: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;Die Operanden sind Ganzzahlen mit evt. einer Einheit&lt;/p&gt;&lt;p&gt;Einheiten: Faktor 1000: KByte, MByte, GByte, TByte&lt;br/&gt;Faktor 1024: KiByte, MiByte, GiByte, TiByte&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-    <message>
-        <source>Older than:</source>
-        <translation>Älter als:</translation>
-    </message>
-    <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formula of the maximal file date.&lt;/p&gt;&lt;p&gt;Example (relative): 3*5days+ 2hour&lt;/p&gt;&lt;p&gt;Example (absolute): 2015.12.31/23:59:59 - 3weeks&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;A formula is a arithmetic expression with the operators &apos;+&apos;, &apos;*&apos; and &apos;^&apos; (potentioning).&lt;/p&gt;&lt;p&gt;Usual precedence: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;The operands are integer numbers with potentionally a unit.&lt;/p&gt;&lt;p&gt;The first operand may be an absolute date, date and time or time:&lt;/p&gt;&lt;p&gt;Date syntax: yyyy.mm.dd&lt;/p&gt;&lt;p&gt;Time syntax HH:MM:SS&lt;/p&gt;&lt;p&gt;Units: minutes, hours, days, weeks&lt;/p&gt;&lt;p&gt;Abbrevation is allowed: &apos;d&apos; is the same as &apos;days&apos;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Formel für die Maximaldatum.&lt;/p&gt;&lt;p&gt;Beispiel (relativ): 3*5days+ 2hour&lt;/p&gt;&lt;p&gt;Beispiel (absolut): 2015.12.31/23:59:59 - 3weeks&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;Eine Formel ist ein arithmetischer Ausdruck mit den Operatoren &apos;+&apos;, &apos;*&apos; und &apos;^&apos; (Potenzierung).&lt;/p&gt;&lt;p&gt;Übliche Vorrangregelung: &apos;+&apos; &amp;lt; &apos;*&apos; &amp;lt; &apos;^&apos;&lt;/p&gt;&lt;p&gt;Die Operanden sind Ganzzahlen mit evt. einer Einheit.&lt;/p&gt;&lt;p&gt;Der erste Operand kann ein absolutes Datum, ein Datum mit Zeit oder eine Zeit sein:&lt;/p&gt;&lt;p&gt;Datumssyntax: yyyy.mm.dd&lt;/p&gt;&lt;p&gt;Zeit syntax HH:MM:SS&lt;/p&gt;&lt;p&gt;Einheiten: minutes (Minuten), hours (Stunden), days (Tage), weeks (Wochen)&lt;/p&gt;&lt;p&gt;Abkürzungen sind erlaubt: &apos;d&apos; ist das gleiche wie &apos;days&apos;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-    <message>
-        <source>Max. Depth:</source>
-        <translation type="unfinished">Max. Tiefe:</translation>
-    </message>
-    <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Maximum distance of the subdirectory containing the found file from the base directory.&lt;/p&gt;&lt;p&gt;Example:&lt;br/&gt;Max. Depth: 0&lt;br/&gt;It found no files in subdirectories.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Maximaler Abstand vom Unterverzeichnis, das die gefundene Datei enthält, zum Basisverzeichnis.&lt;/p&gt;&lt;p&gt;Beispiel:&lt;br/&gt;Min.Tiefe: 1&lt;br/&gt;Basis: /home&lt;/p&gt;&lt;p&gt;/home/x wird nicht gefunden&lt;/p&gt;&lt;p&gt;/home/dir/x wird gefunden&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-    <message>
-        <source>Excluded Dirs:</source>
-        <translation type="unfinished">Ausschlussverzeichnisse:</translation>
-    </message>
-    <message>
-        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;a comma (&apos;,&apos;) separated list of directory names not entered for the search.&lt;/p&gt;&lt;p&gt;Example: .git,.cache&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;eine kommagetrennte  (&apos;,&apos;) Liste von Verzeichnisnamen, die nicht für die Suche betreten werden.&lt;/p&gt;&lt;p&gt;Beispiel: .git,.cache&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
-    </message>
-    <message>
-        <source>&amp;Export</source>
-        <translation>&amp;Export</translation>
-    </message>
-    <message>
-        <source>Export file:</source>
-        <translation>Exportdatei:</translation>
-    </message>
-    <message>
-        <source>Template of a line for each file</source>
-        <translation>Vorlage einer Zeile für jede Datei</translation>
-    </message>
-    <message>
-        <source>Select a placeholder for the template</source>
-        <translation>Wähle einen Platzhalter für die Vorlage</translation>
-    </message>
-    <message>
-        <source>...</source>
-        <translation>...</translation>
-    </message>
-    <message>
-        <source>&amp;File</source>
-        <translation>&amp;Datei</translation>
-    </message>
-    <message>
-        <source>Clipboard</source>
-        <translation>Zwischenablage</translation>
-    </message>
-    <message>
-        <source>Name of the export file</source>
-        <translation>Name der Exportdatei</translation>
-    </message>
-    <message>
-        <source>refind.result.txt</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Select the export file</source>
-        <translation>Wähle eine Exportdatei</translation>
-    </message>
-    <message>
-        <source>Exports file attributes (specified in the template line)  of each found files  found file in a textfile or clipboard</source>
-        <translation>Exportiert Dateiattribute (spezifiziert in der Vorlagenzeile) jeder gefundenen Datei in eine Textdatei oder in die Zwischenablage</translation>
-    </message>
-    <message>
-        <source>Alt+E</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>File footer:</source>
-        <translation>Dateiende:</translation>
-    </message>
-    <message>
-        <source>Line template:</source>
-        <translation>Zeilenvorlage:</translation>
-    </message>
-    <message>
-        <source>File header:</source>
-        <translation>Dateikopf:</translation>
-    </message>
-    <message>
-        <source>Text at the top of the export file</source>
-        <translation>Text am Anfang der Exportdatei</translation>
-    </message>
-    <message>
-        <source>Text at the end of the export file</source>
-        <translation>Text am Ende der Exportdatei</translation>
-    </message>
-    <message>
-        <source>=== found: ${dirs} dir(s) and ${files} file(s) with ${megabytes} MB in ${runtime} sec</source>
-        <translation>=== Gefunden: ${dirs} Verzeichnis(se) und ${files} Datei(en) mit ${megabytes} MB in ${runtime} Sekunden</translation>
-    </message>
-    <message>
-        <source>Select a placeholder for the header</source>
-        <translation>Wähle einen Platzhalter für den Dateikopf</translation>
-    </message>
-    <message>
-        <source>Select a placeholder for the footer</source>
-        <translation>Wähle einen Platzhalter für das Dateiende</translation>
-    </message>
-    <message>
-        <source>Filename</source>
-        <translation>Dateiname</translation>
-    </message>
-    <message>
-        <source>Ext</source>
-        <translation>Typ</translation>
-    </message>
-    <message>
-        <source>Size (MByte)</source>
-        <translation>Größe (MByte)</translation>
-    </message>
-    <message>
-        <source>Modified</source>
-        <translation>Geändert</translation>
-    </message>
-    <message>
-        <source>Type</source>
-        <translation>Typ</translation>
-    </message>
-    <message>
-        <source>Path</source>
-        <translation>Pfad</translation>
-    </message>
-    <message>
-        <source>&amp;Help</source>
-        <translation>&amp;Hilfe</translation>
-    </message>
-    <message>
-        <source>&amp;Navigate</source>
-        <translation>&amp;Navigation</translation>
-    </message>
-    <message>
-        <source>&amp;Edit</source>
-        <translation>&amp;Bearbeiten</translation>
-    </message>
-    <message>
-        <source>toolBar</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>toolBar_2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>E&amp;xit</source>
-        <translation>&amp;Beenden</translation>
-    </message>
-    <message>
-        <source>Exits the program</source>
-        <translation>Beendet das Programm</translation>
-    </message>
-    <message>
-        <source>Ctrl+X</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Search the files with the given properties</source>
-        <translation>Suche nach Dateien mit den gegebenen Eigenschaften</translation>
-    </message>
-    <message>
-        <source>Ctrl+R</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>&amp;About</source>
-        <translation>Ü&amp;ber</translation>
-    </message>
-    <message>
-        <source>Ctrl+A</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+E</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+U</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>&amp;Select directory</source>
-        <translation>&amp;Wähle Basisverzeichnis</translation>
-    </message>
-    <message>
-        <source>Select directory with a dialog</source>
-        <translation>Wähle das Basisverzeichnis mit einem Dialog</translation>
-    </message>
-    <message>
-        <source>Ctrl+D</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Get absolute &amp;path</source>
-        <translation>Absolut&amp;pfad</translation>
-    </message>
-    <message>
-        <source>Puts the absolute path of the selected file into the clipboard</source>
-        <translation>Bringt den absoluten Pfad der gewählten Datei in die Zwischenablage</translation>
-    </message>
-    <message>
-        <source>Ctrl+P</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>&amp;full name to clipboard</source>
-        <translation>Vollname in Zw.ablage</translation>
-    </message>
-    <message>
-        <source>Ctrl+N</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>&amp;base directory to clipboard</source>
-        <translation>&amp;Basisverzeichnis in Zw.ablage</translation>
-    </message>
-    <message>
-        <source>Puts the base directory into the clipboard</source>
-        <translation>Bringt den Namen des Basisverzeichnis in die Zwischenablage</translation>
-    </message>
-    <message>
-        <source>Ctrl+B</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>&amp;Reset search parameters</source>
-        <translation>Suchparameter zu&amp;rücksetzen</translation>
-    </message>
-    <message>
-        <source>Sets the file filter properties to the default</source>
-        <translation>Setzt die Datei-Filterparameter auf die Ausgangswerte</translation>
-    </message>
-    <message>
-        <source>Sa&amp;ve</source>
-        <translation>Speic&amp;hern</translation>
-    </message>
-    <message>
-        <source>Saves the program state (position, history...) to a file</source>
-        <translation>Speichert den Programmstatus (Position, Historie...) in eine Datei</translation>
-    </message>
-    <message>
-        <source>Ctrl+S</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Willkommen bei refind</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>not a valid file: </source>
-        <translation>keine gültige Datei:</translation>
-    </message>
-    <message>
-        <source>result exported to </source>
-        <translation>Ergebnis exportiert nach </translation>
-    </message>
-    <message>
-        <source>result exported to the clipboard</source>
-        <translation>Ergebnis in die Zwischenablage kopiert</translation>
-    </message>
-    <message>
-        <source>unknown placeholder: </source>
-        <translation>Unbekannter Platzhalter</translation>
-    </message>
-    <message>
-        <source>directory not found: </source>
-        <translation>Verzeichnis nicht gefunden: </translation>
-    </message>
-    <message>
-        <source>not a directory: </source>
-        <translation>Kein Vezeichnis: </translation>
-    </message>
-    <message>
-        <source>no path delimiter allowed</source>
-        <translation>Kein Pfadtrenner erlaubt</translation>
-    </message>
-    <message>
-        <source>no patterns allowed. Do not use &apos;*</source>
-        <translation>Kein Muster erlaubt. Benutze keinen &apos;*&apos;</translation>
-    </message>
-    <message>
-        <source>Select Directory</source>
-        <translation>Wähle Verzeichnis</translation>
-    </message>
-    <message>
-        <source>Select Export File</source>
-        <translation>Wähle Exportdatei</translation>
-    </message>
-</context>
-<context>
-    <name>QObject</name>
-    <message>
-        <source>link (dir)</source>
-        <translation>Link (Verz.)</translation>
-    </message>
-    <message>
-        <source>link (file)</source>
-        <translation>Link (Datei)</translation>
-    </message>
-    <message>
-        <source>dir</source>
-        <translation>Verz.</translation>
-    </message>
-    <message>
-        <source>file</source>
-        <translation>Datei</translation>
-    </message>
-    <message>
-        <source>Found: %d dir(s) and %d file(s) with %.6f MByte. Duration of the search: %.3f sec</source>
-        <translation>Gefunden: %d Verzeichnis(se) und %d Datei(en) mit %.6f MByte. Dauer der Suche: %.3f sec</translation>
-    </message>
-    <message>
-        <source>more than 2 power operators, e.g. &apos;2^3^4&apos;</source>
-        <translation>Mehr als 2 Potenzoperatoren, z.B. &apos;2^3^4&apos;</translation>
-    </message>
-    <message>
-        <source>number overflow while power operation</source>
-        <translation>Zahlüberlauf in Potenzoperation</translation>
-    </message>
-    <message>
-        <source>number expected: </source>
-        <translation>Zahl erwartet: </translation>
-    </message>
-    <message>
-        <source>missing &apos;:&apos; in unit definition, e.g. &apos;k:1000&apos;: </source>
-        <translation>vermisse &apos;:&apos; in der Einheitendefinition, z.B. &apos;k:1000&apos;: </translation>
-    </message>
-    <message>
-        <source>too many  &apos;:&apos; in unit definition: </source>
-        <translation>Zu viele &apos;:&apos; in der Einheitendefinition: </translation>
-    </message>
-    <message>
-        <source>not a number: </source>
-        <translation>Keine Zahl: </translation>
-    </message>
-    <message>
-        <source>unknown unit &apos;$1&apos;. Allowed: </source>
-        <translation>Unbekannte Einheit &apos;$1&apos;. Erlaubt: </translation>
-    </message>
-    <message>
-        <source>empty string is not a date/time</source>
-        <translation>Ein leerer String ist kein Datum/keine Zeit</translation>
-    </message>
-    <message>
-        <source>not an integer: </source>
-        <translation>Keine Ganzzahl: </translation>
-    </message>
-</context>
-</TS>
index f2aff5fb30a5635804311456c3cfe79b489c8164..6b786ac3f95f1e18ef276edbf9fae734a8559da2 100644 (file)
@@ -285,10 +285,10 @@ const QString& ReGuiApplication::installPath() const
 void ReGuiApplication::setStatusMessage(ReLoggerLevel level, const QString& message){
    switch(level){
    case LOG_ERROR:
-          m_statusMessage->setText("+ " + message);
+          m_statusMessage->setText("+++ " + message);
           break;
    case LOG_WARNING:
-          m_statusMessage->setText("! " + message);
+          m_statusMessage->setText("### " + message);
           break;
        default:
           m_statusMessage->setText(message);
index 8ea323d59d4af8a628d4236fa9ac49a41e737d27..879c1444c3145f1f937c649f6d5587ed3d165321 100644 (file)
@@ -322,7 +322,8 @@ void ReStateStorage::store(const QComboBox* combo, const char* name,
                        }
                }
        }
-       m_stream->flush();
+       if (m_stream != NULL)
+               m_stream->flush();
 }
 
 /**