/*
Bacula® - The Network Backup Solution
- Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+ Copyright (C) 2007-20087 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.
*/
void prerestorePage::buildPage()
{
- m_name = "Restore";
+ m_name = tr("Restore");
setupUi(this);
pgInitialize();
m_console->notify(false);
jobCombo->addItems(m_console->job_list);
filesetCombo->addItems(m_console->fileset_list);
clientCombo->addItems(m_console->client_list);
- poolCombo->addItem("Any");
+ poolCombo->addItem(tr("Any"));
poolCombo->addItems(m_console->pool_list);
storageCombo->addItems(m_console->storage_list);
/* current or before . . Start out with current checked */
if (m_dataInType == R_NONE) {
selectJobRadio->setChecked(true);
selectJobIdsRadio->setChecked(false);
- jobIdEdit->setText("Comma separted list of jobs id's");
+ jobIdEdit->setText(tr("Comma separted list of Job Ids"));
jobIdEdit->setEnabled(false);
} else if (m_dataInType == R_JOBIDLIST) {
selectJobIdsRadio->setChecked(true);
} else if (m_dataInType == R_JOBDATETIME) {
selectJobRadio->setChecked(true);
selectJobIdsRadio->setChecked(false);
- jobIdEdit->setText("Comma separted list of jobs id's");
+ jobIdEdit->setText(tr("Comma separted list of Job Ids"));
jobIdEdit->setEnabled(false);
recentCheckBox->setCheckState(Qt::Unchecked);
jobRadioClicked(true);
*/
void prerestorePage::cancelButtonPushed()
{
- mainWin->set_status("Canceled");
+ mainWin->set_status(tr("Canceled"));
this->hide();
m_console->notify(true);
closeStackPage();
/* Need to check and make sure the text is a comma separated list of integers */
QString line = jobIdEdit->text();
if (line.contains(" ")) {
- QMessageBox::warning(this, tr("Bat"),
+ QMessageBox::warning(this, "Bat",
tr("There can be no spaces in the text for the joblist.\n"
"Press OK to continue?"), QMessageBox::Ok );
return false;
}
}
if (!allintokay){
- QMessageBox::warning(this, tr("Bat"),
- tr("The string is not a comma separated list if integers.\n"
+ QMessageBox::warning(this, "Bat",
+ tr("The string is not a comma separated list of integers.\n"
"Press OK to continue?"), QMessageBox::Ok );
return false;
}
return false;
}
if (!alljobok){
- QMessageBox::warning(this, tr("Bat"),
+ QMessageBox::warning(this, "Bat",
tr("All jobs in the list must be of the same jobName and same client.\n"
"Press OK to continue?"), QMessageBox::Ok );
return false;
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+ Copyright (C) 2007-2008 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.
QStringList titles;
setupUi(this);
- m_name = "Restore Select";
+ m_name = tr("Restore Select");
pgInitialize();
QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
thisitem->setIcon(0,QIcon(QString::fromUtf8(":images/restore.png")));
setFont(m_console->get_font());
m_console->displayToPrompt();
- titles << "Mark" << "File" << "Mode" << "User" << "Group" << "Size" << "Date";
+ titles << tr("Mark") << tr("File") << tr("Mode") << tr("User")
+ << tr("Group") << tr("Size") << tr("Date");
fileWidget->setHeaderLabels(titles);
get_cwd();
Pmsg0(000, msg.toUtf8().data());
}
- /* add unix '/' directory first */
- if (m_dirPaths.empty()) {
- if (isWin32Path(newdir)) {
- /* this is a windows drive */
+ if (isWin32Path(newdir)) {
+ /* this is a windows drive */
+ if (mainWin->m_miscDebug) {
+ Pmsg0(000, "Found windows drive\n");
+ }
+ windrive = true;
+ }
+
+ if (windrive) {
+ if (fullpath.left(1) == "/") {
+ fullpath.replace(0, 1, ""); /* strip leading / */
+ }
+ /* If drive and not already in add it */
+ if (fullpath.length() == 3 && !m_dirPaths.contains(fullpath)) {
+ QTreeWidgetItem *item = new QTreeWidgetItem(directoryWidget);
+ item->setIcon(0,QIcon(QString::fromUtf8(":images/folder.png")));
+ item->setText(0, fullpath.toUtf8().data());
if (mainWin->m_miscDebug) {
- Pmsg0(000, "Need to do windows \"letter\":/\n");
+ Pmsg1(000, "Pre Inserting %s\n",fullpath.toUtf8().data());
}
- fullpath.replace(0,1,"");
- windrive = true;
- } else {
+ m_dirPaths.insert(fullpath, item);
+ m_dirTreeItems.insert(item, fullpath);
+ }
+ } else {
+ // Unix add / first if not already there
+ if (m_dirPaths.empty()) {
QTreeWidgetItem *item = new QTreeWidgetItem(directoryWidget);
item->setIcon(0,QIcon(QString::fromUtf8(":images/folder.png")));
-
+
QString text("/");
item->setText(0, text.toUtf8().data());
if (mainWin->m_miscDebug) {
m_dirTreeItems.insert(item, text);
}
}
-
- /* is it already existent ?? */
+
+ /* Does it already exist ?? */
if (!m_dirPaths.contains(fullpath)) {
QTreeWidgetItem *item = NULL;
if (windrive) {
} else {
ok = false;
if (mainWin->m_miscDebug) {
- QString msg = QString("In else of if parent cwd \"%1\" newdir \"%2\"\n")
+ QString msg = QString(tr("In else of if parent cwd \"%1\" newdir \"%2\"\n"))
.arg(m_cwd)
.arg(newdir);
Pmsg0(000, msg.toUtf8().data());
QTreeWidgetItem * /*previousitem*/)
{
QString fullpath = m_dirTreeItems.value(currentitem);
+ statusLine->setText("");
if (fullpath != ""){
cwd(fullpath.toUtf8().data());
fillDirectory();
void restorePage::okButtonPushed()
{
- printf("In restorePage::okButtonPushed\n");
+// printf("In restorePage::okButtonPushed\n");
this->hide();
m_console->write("done");
m_console->notify(true);
this->hide();
m_console->write("quit");
m_console->displayToPrompt();
- mainWin->set_status("Canceled");
+ mainWin->set_status(tr("Canceled"));
closeStackPage();
m_console->notify(true);
mainWin->resetFocus();
void restorePage::fileDoubleClicked(QTreeWidgetItem *item, int column)
{
char cmd[1000];
+ statusLine->setText("");
if (column == 0) { /* mark/unmark */
if (item->data(0, Qt::UserRole).toBool()) {
bsnprintf(cmd, sizeof(cmd), "unmark \"%s\"", item->text(1).toUtf8().data());
if (item) {
directoryWidget->setCurrentItem(item);
}
+ statusLine->setText("");
}
/*
QList<QTreeWidgetItem *> treeItemList = fileWidget->selectedItems();
QTreeWidgetItem *item;
char cmd[1000];
+ int count = 0;
+ statusLine->setText("");
foreach (item, treeItemList) {
+ count++;
bsnprintf(cmd, sizeof(cmd), "mark \"%s\"", item->text(1).toUtf8().data());
item->setIcon(0, QIcon(QString::fromUtf8(":images/check.png")));
m_console->write_dir(cmd);
Dmsg1(100, "cmd=%s\n", cmd);
m_console->discardToPrompt();
}
+ if (count == 0) {
+ mainWin->set_status("Nothing selected, nothing done");
+ statusLine->setText("Nothing selected, nothing done");
+ }
+
}
/*
QList<QTreeWidgetItem *> treeItemList = fileWidget->selectedItems();
QTreeWidgetItem *item;
char cmd[1000];
+ int count = 0;
+ statusLine->setText("");
foreach (item, treeItemList) {
+ count++;
bsnprintf(cmd, sizeof(cmd), "unmark \"%s\"", item->text(1).toUtf8().data());
item->setIcon(0, QIcon(QString::fromUtf8(":images/unchecked.png")));
m_console->write_dir(cmd);
Dmsg1(100, "cmd=%s\n", cmd);
m_console->discardToPrompt();
}
+ if (count == 0) {
+ mainWin->set_status(tr("Nothing selected, nothing done"));
+ statusLine->setText(tr("Nothing selected, nothing done"));
+ }
+
}
/*
int stat;
char cd_cmd[MAXSTRING];
+ statusLine->setText("");
bsnprintf(cd_cmd, sizeof(cd_cmd), "cd \"%s\"", dir);
Dmsg2(100, "dir=%s cmd=%s\n", dir, cd_cmd);
m_console->write_dir(cd_cmd);
Dmsg2(100, "cwd=%s msg=%s\n", m_cwd.toUtf8().data(), m_console->msg());
} else {
Dmsg1(000, "stat=%d\n", stat);
- QMessageBox::critical(this, "Error", "cd command failed", QMessageBox::Ok);
+ QMessageBox::critical(this, "Error", tr("cd command failed"), QMessageBox::Ok);
}
m_console->discardToPrompt();
return true; /* ***FIXME*** return real status */
Dmsg2(100, "cwd=%s msg=%s\n", m_cwd.toUtf8().data(), m_console->msg());
} else {
Dmsg1(000, "Something went wrong read stat=%d\n", stat);
- QMessageBox::critical(this, "Error", ".pwd command failed", QMessageBox::Ok);
+ QMessageBox::critical(this, "Error", tr(".pwd command failed"), QMessageBox::Ok);
}
m_console->discardToPrompt();
return m_cwd.toUtf8().data();
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+ Copyright (C) 2007-2008 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.
restoreTree::restoreTree()
{
setupUi(this);
- m_name = "Version Browser";
+ m_name = tr("Version Browser");
pgInitialize();
QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
thisitem->setIcon(0, QIcon(QString::fromUtf8(":images/browse.png")));
connect(jobTable, SIGNAL(cellClicked(int, int)),
this, SLOT(jobTableCellClicked(int, int)));
- QStringList titles = QStringList() << "Directories";
+ QStringList titles = QStringList() << tr("Directories");
directoryTree->setHeaderLabels(titles);
clientCombo->addItems(m_console->client_list);
- fileSetCombo->addItem("Any");
+ fileSetCombo->addItem(tr("Any"));
fileSetCombo->addItems(m_console->fileset_list);
- jobCombo->addItem("Any");
+ jobCombo->addItem(tr("Any"));
jobCombo->addItems(m_console->job_list);
directoryTree->setContextMenuPolicy(Qt::ActionsContextMenu);
);
if (m_dropdownChanged) {
if (mainWin->m_rtPopDirDebug) Pmsg0(000, "In restoreTree::updateRefresh Is CHANGED\n");
- refreshLabel->setText("Refresh From Re-Select");
+ refreshLabel->setText(tr("Refresh From Re-Select"));
} else {
if (mainWin->m_rtPopDirDebug) Pmsg0(000, "In restoreTree::updateRefresh Is not Changed\n");
- refreshLabel->setText("Refresh From JobChecks");
+ refreshLabel->setText(tr("Refresh From JobChecks"));
}
}
prBar1->setVisible(true);
prBar1->setRange(0,taskcount);
prBar1->setValue(0);
- prLabel1->setText("Task " + QString("%1").arg(ontask)+ " of " + QString("%1").arg(taskcount));
+ prLabel1->setText(tr("Task %1 of %2").arg(ontask).arg(taskcount));
prLabel1->setVisible(true);
prBar2->setVisible(true);
prBar2->setRange(0,0);
- prLabel2->setText("Querying Database");
+ prLabel2->setText(tr("Querying Database"));
prLabel2->setVisible(true);
repaint();
m_prevDaysCheckState = daysCheckBox->checkState();
updateRefresh();
prBar1->setValue(ontask++);
- prLabel1->setText("Task " + QString("%1").arg(ontask)+ " of " + QString("%1").arg(taskcount));
+ prLabel1->setText(tr("Task %1 of %2").arg(ontask).arg(taskcount));
prBar2->setValue(0);
prBar2->setRange(0,0);
- prLabel2->setText("Querying Jobs");
+ prLabel2->setText(tr("Querying Jobs"));
repaint();
populateJobTable();
- setJobsCheckedList();
- } else {
- if (mainWin->m_rtPopDirDebug) Pmsg0(000, "Repopulating from checks in Job Table\n");
- setJobsCheckedList();
}
+ setJobsCheckedList();
+ if (mainWin->m_rtPopDirDebug) Pmsg0(000, "Repopulating from checks in Job Table\n");
if (m_checkedJobs != "") {
/* First get the filenameid of where the nae is null. These will be the directories
if (mainWin->m_sqlDebug)
Pmsg1(000, "Query cmd : %s\n", cmd.toUtf8().data());
prBar1->setValue(ontask++);
- prLabel1->setText("Task " + QString("%1").arg(ontask) + " of " + QString("%1").arg(taskcount));
+ prLabel1->setText(tr("Task %1 of %2").arg(ontask).arg(taskcount));
prBar2->setValue(0);
prBar2->setRange(0,0);
- prLabel2->setText("Querying for Directories");
+ prLabel2->setText(tr("Querying for Directories"));
repaint();
QStringList results;
m_directoryPathIdHash.clear();
if (m_console->sql_cmd(cmd, results)) {
if (!querydone) {
querydone = true;
- prLabel2->setText("Processing Directories");
+ prLabel2->setText(tr("Processing Directories"));
prBar2->setRange(0,results.count());
repaint();
}
}
}
} else {
- QMessageBox::warning(this, tr("Bat"),
+ QMessageBox::warning(this, "Bat",
tr("No jobs were selected in the job query !!!.\n"
- "Press OK to continue?"),
+ "Press OK to continue"),
QMessageBox::Ok );
}
prBar1->setVisible(false);
}
for (int k=0; k<pathAfter.count(); k++) {
- if (addDirectory(pathAfter[k], dirAfter[k]))
+ if (addDirectory(pathAfter[k], dirAfter[k])) {
if ((mainWin->m_miscDebug) && (m_debugTrap))
Pmsg2(000, "Adding After %s %s\n", pathAfter[k].toUtf8().data(), dirAfter[k].toUtf8().data());
- else
+ } else {
if ((mainWin->m_miscDebug) && (m_debugTrap))
Pmsg2(000, "Error Adding %s %s\n", pathAfter[k].toUtf8().data(), dirAfter[k].toUtf8().data());
+ }
}
}
*/
void restoreTree::jobComboChanged(int)
{
- if (jobCombo->currentText() == "Any") {
- fileSetCombo->setCurrentIndex(fileSetCombo->findText("Any", Qt::MatchExactly));
+ if (jobCombo->currentText() == tr("Any")) {
+ fileSetCombo->setCurrentIndex(fileSetCombo->findText(tr("Any"), Qt::MatchExactly));
return;
}
job_defaults job_defs;
versionTable->setRowCount(0);
versionTable->setColumnCount(0);
- QStringList headerlist = (QStringList() << "File Name" << "Filename Id");
+ QStringList headerlist = (QStringList() << tr("File Name") << tr("Filename Id"));
fileTable->setColumnCount(headerlist.size());
fileTable->setHorizontalHeaderLabels(headerlist);
fileTable->setRowCount(0);
this, SLOT(fileTableItemChanged(QTableWidgetItem *)));
QBrush blackBrush(Qt::black);
QString directory = item->data(0, Qt::UserRole).toString();
- directoryLabel->setText("Present Working Directory : " + directory);
+ directoryLabel->setText(tr("Present Working Directory: %1").arg(directory));
int pathid = m_directoryPathIdHash.value(directory, -1);
if (pathid != -1) {
QString cmd =
QBrush blackBrush(Qt::black);
- QStringList headerlist = (QStringList() << "Job Id" << "Type" << "End Time" << "Md5" << "FileId");
+ QStringList headerlist = (QStringList()
+ << tr("Job Id") << tr("Type") << tr("End Time") << tr("Hash") << tr("FileId"));
versionTable->clear();
versionTable->setColumnCount(headerlist.size());
versionTable->setHorizontalHeaderLabels(headerlist);
int pathid = m_directoryPathIdHash.value(directory, -1);
if ((pathid != -1) && (fileNameId != -1)) {
QString cmd =
- "SELECT Job.JobId AS JobId, Job.Level AS Type, Job.EndTime AS EndTime, File.Md5 AS MD5, File.FileId AS FileId"
+ "SELECT Job.JobId AS JobId,Job.Level AS Type,Job.EndTime AS EndTime,File.MD5 AS MD5,File.FileId AS FileId"
" FROM File"
" INNER JOIN Filename on (Filename.FilenameId=File.FilenameId)"
" INNER JOIN Path ON (Path.PathId=File.PathId)"
*/
void restoreTree::readSettings()
{
- m_groupText = "RestoreTreePage";
+ m_groupText = tr("RestoreTreePage");
m_splitText = "splitterSizes_1";
QSettings settings(m_console->m_dir->name(), "bat");
settings.beginGroup(m_groupText);
}
/*
- * I wanted a table to show what jobs meet the criterion and are being used to
+ * Show what jobs meet the criteria and are being used to
* populate the directory tree and file and version tables.
*/
void restoreTree::populateJobTable()
QBrush blackBrush(Qt::black);
if (mainWin->m_rtPopDirDebug) Pmsg0(000, "Repopulating the Job Table\n");
- QStringList headerlist = (QStringList() << "Job Id" << "End Time" << "Level" << "Name" << "Purged" << "TU" << "TD");
- m_toggleUpIndex = headerlist.indexOf("TU");
- m_toggleDownIndex = headerlist.indexOf("TD");
- int purgedIndex = headerlist.indexOf("Purged");
+ QStringList headerlist = (QStringList()
+ << tr("Job Id") << tr("End Time") << tr("Level")
+ << tr("Name") << tr("Purged") << tr("TU") << tr("TD"));
+ m_toggleUpIndex = headerlist.indexOf(tr("TU"));
+ m_toggleDownIndex = headerlist.indexOf(tr("TD"));
+ int purgedIndex = headerlist.indexOf(tr("Purged"));
jobTable->clear();
jobTable->setColumnCount(headerlist.size());
jobTable->setHorizontalHeaderLabels(headerlist);
QString jobQuery =
- "SELECT Job.Jobid AS Id, Job.EndTime AS EndTime, Job.Level AS Level, Job.Name AS JobName, Job.purgedfiles AS Purged"
+ "SELECT Job.Jobid AS Id,Job.EndTime AS EndTime,Job.Level AS Level,"
+ "Job.Name AS JobName,Job.purgedfiles AS Purged"
" FROM Job"
/* INNER JOIN FileSet eliminates all restore jobs */
" INNER JOIN Client ON (Job.ClientId=Client.ClientId)"
" INNER JOIN FileSet ON (Job.FileSetId=FileSet.FileSetId)"
" WHERE"
" Client.Name='" + clientCombo->currentText() + "'";
- if ((jobCombo->currentIndex() >= 0) && (jobCombo->currentText() != "Any")) {
+ if ((jobCombo->currentIndex() >= 0) && (jobCombo->currentText() != tr("Any"))) {
jobQuery += " AND Job.name = '" + jobCombo->currentText() + "'";
}
- if ((fileSetCombo->currentIndex() >= 0) && (fileSetCombo->currentText() != "Any")) {
+ if ((fileSetCombo->currentIndex() >= 0) && (fileSetCombo->currentText() != tr("Any"))) {
jobQuery += " AND FileSet.FileSet='" + fileSetCombo->currentText() + "'";
}
/* If Limit check box For limit by days is checked */
m_versionExceptionHash.remove(fullPath);
} else if (prevState != curState) {
if (mainWin->m_rtVerTabICDebug) Pmsg2(000, " THE STATE OF THE version Check has changed, Setting StateList[%i] to %i\n", row, curState);
- if ((curState == Qt::Checked) || (curState == Qt::PartiallyChecked) && (row != 0)) {
+ if ((curState == Qt::Checked) || (curState == Qt::PartiallyChecked && row != 0)) {
if (mainWin->m_rtVerTabICDebug) Pmsg2(000, "Inserting into m_versionExceptionHash %s, %i\n", fullPath.toUtf8().data(), thisJobNum);
m_versionExceptionHash.insert(fullPath, thisJobNum);
if (fileState != Qt::Checked) {
{
/* Set progress bars and repaint */
prLabel1->setVisible(true);
- prLabel1->setText("Task 1 of 3");
+ prLabel1->setText(tr("Task 1 of 3"));
prLabel2->setVisible(true);
- prLabel2->setText("Processing Checked directories");
+ prLabel2->setText(tr("Processing Checked directories"));
prBar1->setVisible(true);
prBar1->setRange(0, 3);
prBar1->setValue(0);
++diter;
} /* while (*diter) */
prBar1->setValue(1);
- prLabel1->setText("Task 2 of 3");
- prLabel2->setText("Processing Exceptions");
+ prLabel1->setText( tr("Task 2 of 3"));
+ prLabel2->setText(tr("Processing Exceptions"));
prBar2->setRange(0, 0);
repaint();
} /* while ftera.hasNext */
/* The progress bars for the next step */
prBar1->setValue(2);
- prLabel1->setText("Task 3 of 3");
- prLabel2->setText("Filling Database Table");
+ prLabel1->setText(tr("Task 3 of 3"));
+ prLabel2->setText(tr("Filling Database Table"));
prBar2->setRange(0, vFMCounter);
vFMCounter = 0;
prBar2->setValue(vFMCounter);