]> git.sur5r.net Git - bacula/bacula/commitdiff
Change the "restore" command to use done instead of yes option. This removes
authorDirk H Bartley <dbartley@schupan.com>
Sat, 28 Jul 2007 18:59:49 +0000 (18:59 +0000)
committerDirk H Bartley <dbartley@schupan.com>
Sat, 28 Jul 2007 18:59:49 +0000 (18:59 +0000)
the reason to have restorerun files.
Add progress bar for refreshing and restoring.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@5258 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/qt-console/bat.pro.in
bacula/src/qt-console/restore/restoretree.cpp
bacula/src/qt-console/restore/restoretree.ui
bacula/src/qt-console/restore/restoretreerun.cpp [deleted file]
bacula/src/qt-console/restore/restoretreerun.h [deleted file]
bacula/src/qt-console/restore/restoretreerun.ui [deleted file]

index 16e9a73cf4abc61827ecf6dbbfa807bbe3e7a841..ce99dc83355cdd4c136b9813535d7e559235f031 100644 (file)
@@ -37,7 +37,6 @@ FORMS += mount/mount.ui
 FORMS += console/console.ui
 FORMS += restore/restore.ui restore/prerestore.ui restore/brestore.ui
 FORMS += restore/restoretree.ui
-FORMS += restore/restoretreerun.ui
 FORMS += run/run.ui run/runcmd.ui run/estimate.ui run/prune.ui
 FORMS += select/select.ui
 FORMS += medialist/medialist.ui mediaedit/mediaedit.ui joblist/joblist.ui
@@ -116,8 +115,6 @@ SOURCES += jobs/jobs.cpp
 ## RestoreTree
 HEADERS += restore/restoretree.h
 SOURCES += restore/restoretree.cpp
-HEADERS += restore/restoretreerun.h
-SOURCES += restore/restoretreerun.cpp
 
 ## Job Step Graphs
 HEADERS += jobgraphs/jobplot.h
index 72167ee7530f2fc9f72d2ae82f42b01c637a9ec6..b08850245728e27febc3e5596acbe2d585f072bf 100644 (file)
@@ -38,7 +38,6 @@
 #include "bat.h"
 #include "restoretree.h"
 #include "pages.h"
-#include "restoretreerun.h"
 
 restoreTree::restoreTree()
 {
@@ -58,6 +57,11 @@ restoreTree::restoreTree()
    m_slashregex.setPattern("/");
    m_debugCnt = 0;
    m_debugTrap = true;
+   /* progress widgets */
+   prBar1->setVisible(false);
+   prBar2->setVisible(false);
+   prLabel1->setVisible(false);
+   prLabel2->setVisible(false);
 }
 
 restoreTree::~restoreTree()
@@ -112,7 +116,18 @@ void restoreTree::populateDirectoryTree()
    m_versionExceptionHash.clear();
    m_directoryIconStateHash.clear();
 
-   
+   /* Set progress bars and repaint */
+   prBar1->setVisible(true);
+   prBar1->setRange(0,2);
+   prBar1->setValue(0);
+   prLabel1->setText("Task 1 of 2");
+   prLabel1->setVisible(true);
+   prBar2->setVisible(true);
+   prBar2->setRange(0,0);
+   prLabel2->setText("Querying Database");
+   prLabel2->setVisible(true);
+   repaint();
+
    int clientIndex = clientCombo->currentIndex();
    int fileSetIndex = fileSetCombo->currentIndex();
    QString jobComboText = jobCombo->itemText(jobCombo->currentIndex());
@@ -158,16 +173,27 @@ void restoreTree::populateDirectoryTree()
    if (mainWin->m_sqlDebug) {
       Pmsg1(000, "Query cmd : %s\n", cmd.toUtf8().data());
    }
+   prBar1->setValue(1);
+   prLabel1->setText("Task 2 of 2");
    QStringList directories;
    if (m_console->sql_cmd(cmd, directories)) {
       if (mainWin->m_miscDebug) {
          Pmsg1(000, "Done with query %i directories\n", directories.count());
       }
+      prBar2->setValue(0);
+      prBar2->setRange(0,directories.count());
+      prLabel2->setText("Processing Directories");
+      repaint();
       foreach(QString directory, directories) {
          m_debugCnt += 1;
+         prBar2->setValue(m_debugCnt);
          parseDirectory(directory);
       }
    }
+   prBar1->setVisible(false);
+   prBar2->setVisible(false);
+   prLabel1->setVisible(false);
+   prLabel2->setVisible(false);
 }
 
 /*
@@ -1265,11 +1291,33 @@ void restoreTree::directorySetIcon(int operation, int change, QString &path, QTr
  */
 void restoreTree::restoreButtonPushed()
 {
+   /* Set progress bars and repaint */
+   prLabel1->setVisible(true);
+   prLabel1->setText("Task 1 of 3");
+   prLabel2->setVisible(true);
+   prLabel2->setText("Processing Checked directories");
+   prBar1->setVisible(true);
+   prBar1->setRange(0, 3);
+   prBar1->setValue(0);
+   prBar2->setVisible(true);
+   prBar2->setRange(0, 0);
+   repaint();
    QMultiHash<int, QString> versionFilesMulti;
+   int vFMCounter = 0;
    QHash <QString, bool> fullPathDone;
    QHash <QString, int> fileIndexHash;
    if ((mainWin->m_rtRestore1Debug) || (mainWin->m_rtRestore2Debug) || (mainWin->m_rtRestore3Debug))
       Pmsg0(000, "In restoreTree::restoreButtonPushed\n");
+   /* Use a tree widget item iterator to count directories for the progress bar */
+   QTreeWidgetItemIterator diterc(directoryTree, QTreeWidgetItemIterator::Checked);
+   int ditcount = 0;
+   while (*diterc) {
+      ditcount += 1;
+      ++diterc;
+   } /* while (*diterc) */
+   prBar2->setRange(0, ditcount);
+   prBar2->setValue(0);
+   ditcount = 0;
    /* Use a tree widget item iterator filtering for Checked Items */
    QTreeWidgetItemIterator diter(directoryTree, QTreeWidgetItemIterator::Checked);
    while (*diter) {
@@ -1302,7 +1350,6 @@ void restoreTree::restoreButtonPushed()
       if (mainWin->m_sqlDebug) Pmsg1(000, "Query cmd : %s\n", cmd.toUtf8().data());
       QStringList results;
       if (m_console->sql_cmd(cmd, results)) {
-      
          QStringList fieldlist;
    
          int row = 0;
@@ -1343,12 +1390,20 @@ void restoreTree::restoreButtonPushed()
                fullPathDone.insert(fullPath, 1);
                fileIndexHash.insert(fullPath, fileIndex);
                versionFilesMulti.insert(version, fullPath);
+               vFMCounter += 1;
             }
             row++;
          }
       }
+      ditcount += 1;
+      prBar2->setValue(ditcount);
       ++diter;
    } /* while (*diter) */
+   prBar1->setValue(1);
+   prLabel1->setText("Task 2 of 3");
+   prLabel2->setText("Processing Exceptions");
+   prBar2->setRange(0, 0);
+   repaint();
 
    /* There may be some exceptions not accounted for yet with fullPathDone */
    QHashIterator<QString, Qt::CheckState> ftera(m_fileExceptionHash);
@@ -1376,10 +1431,19 @@ void restoreTree::restoreButtonPushed()
             if (mainWin->m_rtRestore1Debug)
                Pmsg2(000, "Restoring %s file %s\n", debugtext.toUtf8().data(), fullPath.toUtf8().data());
             versionFilesMulti.insert(version, fullPath);
+            vFMCounter += 1;
             fileIndexHash.insert(fullPath, fileIndex);
          } /* if fullPathDone.value(fullPath, 0) == 0 */
       } /* if state != 0 */
    } /* while ftera.hasNext */
+   /* The progress bars for the next step */
+   prBar1->setValue(2);
+   prLabel1->setText("Task 3 of 3");
+   prLabel2->setText("Filling Database Table");
+   prBar2->setRange(0, vFMCounter);
+   vFMCounter = 0;
+   prBar2->setValue(vFMCounter);
+   repaint();
 
    /* now for the final spit out of the versions and lists of files for each version */
    QHash<int, int> doneKeys;
@@ -1413,20 +1477,40 @@ void restoreTree::restoreButtonPushed()
             int fileIndex = fileIndexHash.value(ffullPath);
             if (mainWin->m_rtRestore2Debug) Pmsg2(000, "  file->%s id %i\n", ffullPath.toUtf8().data(), fileIndex);
             QString sqlcmd = "INSERT INTO " + tempTable + " (JobId, FileIndex) VALUES (" + QString("%1").arg(fversion) + ", " + QString("%1").arg(fileIndex) + ")";
-            if (mainWin->m_sqlDebug)
-               Pmsg1(000, "Query cmd : %s ;\n", sqlcmd.toUtf8().data());
+            if (mainWin->m_rtRestore3Debug)
+               Pmsg1(000, "Insert cmd : %s\n", sqlcmd.toUtf8().data());
             QStringList results;
             if (!m_console->sql_cmd(sqlcmd, results))
                Pmsg1(000, "INSERT INTO FAILED!!!! %s\n", sqlcmd.toUtf8().data());
+            prBar2->setValue(++vFMCounter);
          } /* foreach fullPathList */
          doneKeys.insert(fversion,1);
          jobList.append(fversion);
       } /*  if (doneKeys.value(fversion, 0) == 0) */
    } /* while (vFMiter.hasNext()) */
    if (tempTable != "") {
-      QTreeWidgetItem* pageSelectorTreeWidgetItem = mainWin->getFromHash(this);
-      new restoreTreeRunPage(tempTable, m_prevClientCombo, jobList, pageSelectorTreeWidgetItem);
+      /* a table was made, lets run the job */
+      QString jobOption = " jobid=\"";
+      bool first = true;
+      /* create a list of jobs comma separated */
+      foreach (int job, jobList) {
+         if (first) first = false;
+         else jobOption += ",";
+         jobOption += QString("%1").arg(job);
+      }
+      jobOption += "\"";
+      QString cmd = QString("restore");
+      cmd += jobOption +
+             " file=\"?" + tempTable + "\" done";
+      if (mainWin->m_commandDebug)
+         Pmsg1(000, "preRestore command \'%s\'\n", cmd.toUtf8().data());
+      consoleCommand(cmd);
    }
+   /* turn off the progress widgets */
+   prBar1->setVisible(false);
+   prBar2->setVisible(false);
+   prLabel1->setVisible(false);
+   prLabel2->setVisible(false);
 }
 
 int restoreTree::mostRecentVersionfromFullPath(QString &fullPath)
index fc2eb680ffb79f6bc8e473d6be3b044bb9b5511b..1447db6c2e99173f2ad5dd6344ad51f4ccd3da35 100644 (file)
@@ -5,8 +5,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>440</width>
-    <height>327</height>
+    <width>411</width>
+    <height>295</height>
    </rect>
   </property>
   <property name="windowTitle" >
    <property name="spacing" >
     <number>6</number>
    </property>
-   <item row="1" column="0" >
-    <layout class="QGridLayout" >
-     <property name="margin" >
-      <number>0</number>
-     </property>
-     <property name="spacing" >
-      <number>6</number>
-     </property>
-     <item row="0" column="0" >
-      <widget class="QLabel" name="directoryLabel" >
-       <property name="sizePolicy" >
-        <sizepolicy>
-         <hsizetype>5</hsizetype>
-         <vsizetype>0</vsizetype>
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text" >
-        <string>Directory</string>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="0" >
-      <layout class="QHBoxLayout" >
-       <property name="margin" >
-        <number>0</number>
-       </property>
-       <property name="spacing" >
-        <number>6</number>
-       </property>
-       <item>
-        <widget class="QPushButton" name="refreshButton" >
-         <property name="text" >
-          <string>Refresh</string>
-         </property>
-         <property name="icon" >
-          <iconset resource="../main.qrc" >:/images/view-refresh.svg</iconset>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QComboBox" name="jobCombo" />
-       </item>
-       <item>
-        <widget class="QComboBox" name="clientCombo" />
-       </item>
-       <item>
-        <widget class="QComboBox" name="fileSetCombo" />
-       </item>
-       <item>
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>21</width>
-           <height>26</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="QPushButton" name="restoreButton" >
-         <property name="text" >
-          <string>Restore</string>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-    </layout>
-   </item>
    <item row="0" column="0" >
     <widget class="QSplitter" name="splitter" >
      <property name="sizePolicy" >
      <property name="orientation" >
       <enum>Qt::Horizontal</enum>
      </property>
-     <widget class="QWidget" name="layoutWidget" >
+     <widget class="QWidget" name="" >
       <layout class="QGridLayout" >
        <property name="margin" >
         <number>0</number>
        <property name="spacing" >
         <number>6</number>
        </property>
-       <item row="1" column="0" >
-        <widget class="QTableWidget" name="jobTable" />
+       <item row="3" column="0" >
+        <widget class="QProgressBar" name="prBar1" >
+         <property name="enabled" >
+          <bool>true</bool>
+         </property>
+         <property name="value" >
+          <number>24</number>
+         </property>
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="0" >
+        <widget class="QLabel" name="prLabel1" >
+         <property name="text" >
+          <string>TextLabel</string>
+         </property>
+         <property name="alignment" >
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
        </item>
        <item row="0" column="0" >
         <widget class="QLabel" name="jobLabel" >
          </property>
         </widget>
        </item>
+       <item row="5" column="0" >
+        <widget class="QProgressBar" name="prBar2" >
+         <property name="enabled" >
+          <bool>true</bool>
+         </property>
+         <property name="value" >
+          <number>24</number>
+         </property>
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="0" >
+        <widget class="QLabel" name="prLabel2" >
+         <property name="text" >
+          <string>TextLabel</string>
+         </property>
+         <property name="alignment" >
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0" >
+        <widget class="QTableWidget" name="jobTable" />
+       </item>
       </layout>
      </widget>
      <widget class="QTreeWidget" name="directoryTree" />
      </widget>
     </widget>
    </item>
+   <item row="1" column="0" >
+    <layout class="QGridLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item row="0" column="0" >
+      <widget class="QLabel" name="directoryLabel" >
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>5</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>Directory</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0" >
+      <layout class="QHBoxLayout" >
+       <property name="margin" >
+        <number>0</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QPushButton" name="refreshButton" >
+         <property name="text" >
+          <string>Refresh</string>
+         </property>
+         <property name="icon" >
+          <iconset resource="../main.qrc" >:/images/view-refresh.svg</iconset>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QComboBox" name="jobCombo" />
+       </item>
+       <item>
+        <widget class="QComboBox" name="clientCombo" />
+       </item>
+       <item>
+        <widget class="QComboBox" name="fileSetCombo" />
+       </item>
+       <item>
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>21</width>
+           <height>26</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QPushButton" name="restoreButton" >
+         <property name="text" >
+          <string>Restore</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
   </layout>
   <action name="actionSelectDirectory" >
    <property name="icon" >
diff --git a/bacula/src/qt-console/restore/restoretreerun.cpp b/bacula/src/qt-console/restore/restoretreerun.cpp
deleted file mode 100644 (file)
index ab2f817..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
-
-   The main author of Bacula is Kern Sibbald, with contributions from
-   many others, a complete list can be found in the file AUTHORS.
-   This program is Free Software; you can redistribute it and/or
-   modify it under the terms of version two of the GNU General Public
-   License as published by the Free Software Foundation and included
-   in the file LICENSE.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301, USA.
-
-   Bacula® is a registered trademark of John Walker.
-   The licensor of Bacula is the Free Software Foundation Europe
-   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
-   Switzerland, email:ftf@fsfeurope.org.
-*/
-/*
- *  Run Command Dialog class
- *
- *  This is called when a Run Command signal is received from the
- *    Director. We parse the Director's output and throw up a 
- *    dialog box.  This happens, for example, after the user finishes
- *    selecting files to be restored. The Director will then submit a
- *    run command, that causes this page to be popped up.
- *
- *   Kern Sibbald, March MMVII
- *
- *  $Id$
- */ 
-
-#include "bat.h"
-#include "restoretreerun.h"
-
-/*
- * Setup all the combo boxes and display the dialog
- */
-restoreTreeRunPage::restoreTreeRunPage(QString &table, QString &client, QList<int> &jobs, QTreeWidgetItem* parentItem)
-{
-   m_tempTable = table;
-   m_jobList = jobs;
-   m_client = client;
-   m_name = "Restore Tree Run";
-   pgInitialize(parentItem);
-   setupUi(this);
-   QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
-   thisitem->setIcon(0,QIcon(QString::fromUtf8(":images/restore.png")));
-   m_console->notify(false);
-
-   fill();
-   m_console->discardToPrompt();
-
-   connect(okButton, SIGNAL(pressed()), this, SLOT(okButtonPushed()));
-   connect(cancelButton, SIGNAL(pressed()), this, SLOT(cancelButtonPushed()));
-   dockPage();
-   setCurrent();
-   this->show();
-}
-
-void restoreTreeRunPage::fill()
-{
-   QDateTime dt;
-   clientCombo->addItems(m_console->client_list);
-   clientCombo->setCurrentIndex(clientCombo->findText(m_client, Qt::MatchExactly));
-   replaceCombo->addItems(QStringList() << "never" << "always" << "ifnewer" << "ifolder");
-   replaceCombo->setCurrentIndex(replaceCombo->findText("never", Qt::MatchExactly));
-   dateTimeEdit->setDisplayFormat(mainWin->m_dtformat);
-   dateTimeEdit->setDateTime(dt.currentDateTime());
-}
-
-void restoreTreeRunPage::okButtonPushed()
-{
-   QString jobOption = " jobid=\"";
-   bool first = true;
-   foreach (int job, m_jobList) {
-      if (first) first = false;
-      else jobOption += ",";
-      jobOption += QString("%1").arg(job);
-   }
-   jobOption += "\"";
-   QString cmd = QString("restore");
-   cmd += jobOption + 
-          " file=\"?" + m_tempTable + "\" yes"
-          " replace=\"" + replaceCombo->currentText() + "\""
-          " when=\"" + dateTimeEdit->dateTime().toString(mainWin->m_dtformat) + "\""
-          " restoreclient=\"" + clientCombo->currentText() + "\"";
-   if (mainWin->m_commandDebug)
-      Pmsg1(000, "preRestore command \'%s\'\n", cmd.toUtf8().data());
-   consoleCommand(cmd);
-   mainWin->resetFocus();
-   closeStackPage();
-
-/*   QString cmd(".mod");
-   cmd += " bootstrap=\"" + bootstrap->text() + "\"";
-   cmd += " where=\"" + where->text() + "\"";
-   QString pri;
-   QTextStream(&pri) << " priority=\"" << prioritySpin->value() << "\"";
-   cmd += pri;
-   cmd += " yes\n"; */
-}
-
-
-void restoreTreeRunPage::cancelButtonPushed()
-{
-   m_console->displayToPrompt();
-   m_console->write_dir(".");
-   m_console->displayToPrompt();
-   mainWin->set_status(" Canceled");
-   this->hide();
-   m_console->notify(true);
-   closeStackPage();
-   mainWin->resetFocus();
-}
diff --git a/bacula/src/qt-console/restore/restoretreerun.h b/bacula/src/qt-console/restore/restoretreerun.h
deleted file mode 100644 (file)
index 07f2672..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-
-#ifndef _RESTORETREERUN_H_
-#define _RESTORETREERUN_H_
-
-#include <QtGui>
-#include "ui_restoretreerun.h"
-#include "console.h"
-
-class restoreTreeRunPage : public Pages, public Ui::restoreTreeRunForm
-{
-   Q_OBJECT 
-
-public:
-   restoreTreeRunPage(QString &, QString &, QList<int> &, QTreeWidgetItem*);
-
-public slots:
-   void okButtonPushed();
-   void cancelButtonPushed();
-
-private:
-   void fill();
-   QString m_tempTable;
-   QString m_client;
-   QList<int> m_jobList;
-};
-
-#endif /* _RESTORETREERUN_H_ */
diff --git a/bacula/src/qt-console/restore/restoretreerun.ui b/bacula/src/qt-console/restore/restoretreerun.ui
deleted file mode 100644 (file)
index 9fd9651..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
-<ui version="4.0" >
- <class>restoreTreeRunForm</class>
- <widget class="QWidget" name="restoreTreeRunForm" >
-  <property name="geometry" >
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>484</width>
-    <height>268</height>
-   </rect>
-  </property>
-  <property name="windowTitle" >
-   <string>Form</string>
-  </property>
-  <layout class="QGridLayout" >
-   <property name="margin" >
-    <number>9</number>
-   </property>
-   <property name="spacing" >
-    <number>6</number>
-   </property>
-   <item row="2" column="1" >
-    <spacer>
-     <property name="orientation" >
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" >
-      <size>
-       <width>20</width>
-       <height>20</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="0" column="1" >
-    <spacer>
-     <property name="orientation" >
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" >
-      <size>
-       <width>20</width>
-       <height>20</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="1" column="1" >
-    <layout class="QGridLayout" >
-     <property name="margin" >
-      <number>0</number>
-     </property>
-     <property name="spacing" >
-      <number>6</number>
-     </property>
-     <item row="1" column="0" >
-      <layout class="QGridLayout" >
-       <property name="margin" >
-        <number>0</number>
-       </property>
-       <property name="spacing" >
-        <number>6</number>
-       </property>
-       <item row="1" column="1" >
-        <widget class="QComboBox" name="replaceCombo" />
-       </item>
-       <item row="1" column="0" >
-        <widget class="QLabel" name="label_13" >
-         <property name="text" >
-          <string>Replace:</string>
-         </property>
-        </widget>
-       </item>
-       <item row="0" column="1" >
-        <widget class="QComboBox" name="clientCombo" />
-       </item>
-       <item row="2" column="1" >
-        <widget class="QDateTimeEdit" name="dateTimeEdit" >
-         <property name="dateTime" >
-          <datetime>
-           <hour>0</hour>
-           <minute>2</minute>
-           <second>0</second>
-           <year>2000</year>
-           <month>1</month>
-           <day>1</day>
-          </datetime>
-         </property>
-         <property name="displayFormat" >
-          <string>yyyy-mm-dd hh:mm:ss</string>
-         </property>
-         <property name="calendarPopup" >
-          <bool>true</bool>
-         </property>
-        </widget>
-       </item>
-       <item row="4" column="0" >
-        <widget class="QLabel" name="label_5" >
-         <property name="text" >
-          <string>Where:</string>
-         </property>
-         <property name="openExternalLinks" >
-          <bool>true</bool>
-         </property>
-         <property name="buddy" >
-          <cstring>where</cstring>
-         </property>
-        </widget>
-       </item>
-       <item row="4" column="1" >
-        <widget class="QLineEdit" name="where" >
-         <property name="enabled" >
-          <bool>true</bool>
-         </property>
-         <property name="minimumSize" >
-          <size>
-           <width>200</width>
-           <height>0</height>
-          </size>
-         </property>
-         <property name="readOnly" >
-          <bool>false</bool>
-         </property>
-        </widget>
-       </item>
-       <item row="3" column="1" >
-        <widget class="QLineEdit" name="bootstrap" >
-         <property name="enabled" >
-          <bool>true</bool>
-         </property>
-         <property name="minimumSize" >
-          <size>
-           <width>200</width>
-           <height>0</height>
-          </size>
-         </property>
-         <property name="readOnly" >
-          <bool>false</bool>
-         </property>
-        </widget>
-       </item>
-       <item row="2" column="0" >
-        <widget class="QLabel" name="label" >
-         <property name="text" >
-          <string>When:</string>
-         </property>
-         <property name="buddy" >
-          <cstring>dateTimeEdit</cstring>
-         </property>
-        </widget>
-       </item>
-       <item row="0" column="0" >
-        <widget class="QLabel" name="label_8" >
-         <property name="text" >
-          <string>To client:</string>
-         </property>
-         <property name="buddy" >
-          <cstring>clientCombo</cstring>
-         </property>
-        </widget>
-       </item>
-       <item row="3" column="0" >
-        <widget class="QLabel" name="label_12" >
-         <property name="text" >
-          <string>Bootstrap:</string>
-         </property>
-         <property name="buddy" >
-          <cstring>bootstrap</cstring>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-     <item row="1" column="1" >
-      <layout class="QVBoxLayout" >
-       <property name="margin" >
-        <number>0</number>
-       </property>
-       <property name="spacing" >
-        <number>6</number>
-       </property>
-       <item>
-        <layout class="QHBoxLayout" >
-         <property name="margin" >
-          <number>0</number>
-         </property>
-         <property name="spacing" >
-          <number>6</number>
-         </property>
-         <item>
-          <widget class="QLabel" name="label_4" >
-           <property name="text" >
-            <string>Priority:</string>
-           </property>
-           <property name="buddy" >
-            <cstring>prioritySpin</cstring>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QSpinBox" name="prioritySpin" >
-           <property name="maximum" >
-            <number>10000</number>
-           </property>
-           <property name="minimum" >
-            <number>1</number>
-           </property>
-           <property name="value" >
-            <number>12</number>
-           </property>
-          </widget>
-         </item>
-        </layout>
-       </item>
-       <item>
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>20</width>
-           <height>171</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-      </layout>
-     </item>
-     <item row="2" column="0" colspan="2" >
-      <layout class="QHBoxLayout" >
-       <property name="margin" >
-        <number>0</number>
-       </property>
-       <property name="spacing" >
-        <number>6</number>
-       </property>
-       <item>
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>40</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="QPushButton" name="okButton" >
-         <property name="text" >
-          <string>OK</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QPushButton" name="cancelButton" >
-         <property name="text" >
-          <string>Cancel</string>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-     <item row="0" column="0" colspan="2" >
-      <layout class="QHBoxLayout" >
-       <property name="margin" >
-        <number>0</number>
-       </property>
-       <property name="spacing" >
-        <number>6</number>
-       </property>
-       <item>
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeType" >
-          <enum>QSizePolicy::Fixed</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>131</width>
-           <height>25</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="QLabel" name="run" >
-         <property name="maximumSize" >
-          <size>
-           <width>16777215</width>
-           <height>30</height>
-          </size>
-         </property>
-         <property name="text" >
-          <string>&lt;h3>Run RestoreTree Job&lt;/h3></string>
-         </property>
-         <property name="alignment" >
-          <set>Qt::AlignCenter</set>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeType" >
-          <enum>QSizePolicy::Fixed</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>131</width>
-           <height>25</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-      </layout>
-     </item>
-    </layout>
-   </item>
-   <item row="1" column="0" >
-    <spacer>
-     <property name="orientation" >
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="sizeHint" >
-      <size>
-       <width>40</width>
-       <height>20</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="1" column="2" >
-    <spacer>
-     <property name="orientation" >
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="sizeHint" >
-      <size>
-       <width>40</width>
-       <height>20</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>