2 Bacula® - The Network Backup Solution
4 Copyright (C) 2007-2010 Free Software Foundation Europe e.V.
6 The main author of Bacula is Kern Sibbald, with contributions from
7 many others, a complete list can be found in the file AUTHORS.
8 This program is Free Software; you can redistribute it and/or
9 modify it under the terms of version three of the GNU Affero General Public
10 License as published by the Free Software Foundation and included
13 This program is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 General Public License for more details.
18 You should have received a copy of the GNU Affero General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23 Bacula® is a registered trademark of Kern Sibbald.
24 The licensor of Bacula is the Free Software Foundation Europe
25 (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
26 Switzerland, email:ftf@fsfeurope.org.
30 * Run Command Dialog class
32 * This is called when a Run Command signal is received from the
33 * Director. We parse the Director's output and throw up a
34 * dialog box. This happens, for example, after the user finishes
35 * selecting files to be restored. The Director will then submit a
36 * run command, that causes this page to be popped up.
38 * Kern Sibbald, March MMVII
46 * Setup all the combo boxes and display the dialog
48 runCmdPage::runCmdPage(int conn)
50 m_name = tr("Restore Run");
53 QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
54 thisitem->setIcon(0,QIcon(QString::fromUtf8(":images/restore.png")));
56 m_console->notify(conn, false);
59 m_console->discardToPrompt(m_conn);
61 connect(okButton, SIGNAL(pressed()), this, SLOT(okButtonPushed()));
62 connect(cancelButton, SIGNAL(pressed()), this, SLOT(cancelButtonPushed()));
69 void runCmdPage::fill()
73 QRegExp rx("^.*:\\s*(\\S.*$)"); /* Regex to get value */
75 clientCombo->addItems(m_console->client_list);
76 filesetCombo->addItems(m_console->fileset_list);
77 replaceCombo->addItems(QStringList() << tr("never") << tr("always") << tr("ifnewer")
79 replaceCombo->setCurrentIndex(replaceCombo->findText(tr("never"), Qt::MatchExactly));
80 storageCombo->addItems(m_console->storage_list);
81 dateTimeEdit->setDisplayFormat(mainWin->m_dtformat);
83 m_console->read(m_conn);
84 item = m_console->msg(m_conn);
85 items = item.split("\n");
86 foreach(item, items) {
89 Dmsg1(000, "Item=%s\n", item.toUtf8().data());
90 Dmsg1(000, "Value=%s\n", val.toUtf8().data());
92 if (item.startsWith("Title:")) {
95 if (item.startsWith("JobName:")) {
96 jobCombo->addItem(val);
99 if (item.startsWith("Bootstrap:")) {
100 bootstrap->setText(val);
103 if (item.startsWith("Backup Client:")) {
104 clientCombo->setCurrentIndex(clientCombo->findText(val, Qt::MatchExactly));
107 if (item.startsWith("Storage:")) {
108 storageCombo->setCurrentIndex(storageCombo->findText(val, Qt::MatchExactly));
111 if (item.startsWith("Where:")) {
115 if (item.startsWith("When:")) {
116 dateTimeEdit->setDateTime(QDateTime::fromString(val,mainWin->m_dtformat));
119 if (item.startsWith("Catalog:")) {
120 catalogCombo->addItem(val);
123 if (item.startsWith("FileSet:")) {
124 filesetCombo->setCurrentIndex(filesetCombo->findText(val, Qt::MatchExactly));
127 if (item.startsWith("Priority:")) {
129 int pri = val.toInt(&okay, 10);
131 prioritySpin->setValue(pri);
134 if (item.startsWith("Replace:")) {
135 int replaceIndex = replaceCombo->findText(val, Qt::MatchExactly);
136 if (replaceIndex >= 0)
137 replaceCombo->setCurrentIndex(replaceIndex);
143 void runCmdPage::okButtonPushed()
146 cmd += " restoreclient=\"" + clientCombo->currentText() + "\"";
147 cmd += " fileset=\"" + filesetCombo->currentText() + "\"";
148 cmd += " storage=\"" + storageCombo->currentText() + "\"";
149 cmd += " replace=\"" + replaceCombo->currentText() + "\"";
150 cmd += " when=\"" + dateTimeEdit->dateTime().toString(mainWin->m_dtformat) + "\"";
151 cmd += " bootstrap=\"" + bootstrap->text() + "\"";
152 cmd += " where=\"" + where->text() + "\"";
154 QTextStream(&pri) << " priority=\"" << prioritySpin->value() << "\"";
159 QString displayhtml("<font color=\"blue\">");
160 displayhtml += cmd + "</font>\n";
161 m_console->display_html(displayhtml);
162 m_console->display_text("\n");
163 m_console->write_dir(m_conn, cmd.toUtf8().data());
164 m_console->displayToPrompt(m_conn);
165 // consoleCommand(cmd); ***FIXME set back to consoleCommand when connection issue is resolved
167 m_console->notify(m_conn, true);
172 void runCmdPage::cancelButtonPushed()
174 m_console->displayToPrompt(m_conn);
175 m_console->write_dir(".");
176 m_console->displayToPrompt(m_conn);
177 mainWin->set_status(tr(" Canceled"));
179 m_console->notify(m_conn, true);
181 mainWin->resetFocus();