Assume release is in bacula/base bacula/gui bacula/docs bacula/rescue
- Build it on Win32
-- Build it on Solaris and run regression tests
-- Build it on FreeBSD and run regression tests
+# No longer done
+# - Build it on Solaris and run regression tests
+# - Build it on FreeBSD and run regression tests
- Update ChangeLog (add release date)
- Update ReleaeNotes
-- Do a cvs commit
-- Run ./makerel base 2.0.x
+- Do a svn commit
+# ./makerel <branch-name> <local-branch-source-dir> <release>
+- Run ./makerel Branch-2.0 branch-2.0 2.0.x
- Run the regression tests on the new bacula
directory that is created. Run regression on
- Linux, Solaris, and Sun.
+ Linux.
- Run the production version over night in production.
- Manually test Win32 version
(with Robert's work, it is now possible to run the
- Write final ReleaseNotes
- If everything is good
- cd bacula
+# The below needs to be updated more
- Run
cd base
- cvs update
+ svn update
cd ../gui
- cvs update
+ svn update
cd ../docs
- cvs update
+ svn update
cd manual
make tex
latex bacula.tex
what to do, correct the problem).
cd ..
cd ../rescue
- cvs update
+ svn update
cd ..
./makerel base 2.0.x
./makeguirel gui 2.0.x
make
- Upload new release doc to web site.
Upload bacula.pdf to web site.
-
+- Update news on web site.
-/*
- * Configuration file parser for new and old Include and
- * Exclude records
- *
- * Kern Sibbald, March MMIII
- *
- * Version $Id$
- */
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2006 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-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.
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
*/
+/*
+ * Configuration file parser for new and old Include and
+ * Exclude records
+ *
+ * Kern Sibbald, March MMIII
+ *
+ * Version $Id$
+ */
#include "bacula.h"
#include "dird.h"
static bool jobscmd(UAContext *ua, const char *cmd)
{
- JOB *job = NULL;
+ JOB *job;
LockRes();
- while ( (job = (JOB *)GetNextRes(R_JOB, (RES *)job)) ) {
+ foreach_res(job, R_JOB) {
if (acl_access_ok(ua, Job_ACL, job->name())) {
bsendmsg(ua, "%s\n", job->name());
}
static bool filesetscmd(UAContext *ua, const char *cmd)
{
- FILESET *fs = NULL;
+ FILESET *fs;
LockRes();
- while ( (fs = (FILESET *)GetNextRes(R_FILESET, (RES *)fs)) ) {
+ foreach_res(fs, R_FILESET) {
if (acl_access_ok(ua, FileSet_ACL, fs->name())) {
bsendmsg(ua, "%s\n", fs->name());
}
static bool clientscmd(UAContext *ua, const char *cmd)
{
- CLIENT *client = NULL;
+ CLIENT *client;
LockRes();
- while ( (client = (CLIENT *)GetNextRes(R_CLIENT, (RES *)client)) ) {
+ foreach_res(client, R_CLIENT) {
if (acl_access_ok(ua, Client_ACL, client->name())) {
bsendmsg(ua, "%s\n", client->name());
}
{
MSGS *msgs = NULL;
LockRes();
- while ( (msgs = (MSGS *)GetNextRes(R_MSGS, (RES *)msgs)) ) {
+ foreach_res(msgs, R_MSGS) {
bsendmsg(ua, "%s\n", msgs->name());
}
UnlockRes();
static bool poolscmd(UAContext *ua, const char *cmd)
{
- POOL *pool = NULL;
+ POOL *pool;
LockRes();
- while ( (pool = (POOL *)GetNextRes(R_POOL, (RES *)pool)) ) {
+ foreach_res(pool, R_POOL) {
if (acl_access_ok(ua, Pool_ACL, pool->name())) {
bsendmsg(ua, "%s\n", pool->name());
}
static bool storagecmd(UAContext *ua, const char *cmd)
{
- STORE *store = NULL;
+ STORE *store;
LockRes();
- while ( (store = (STORE *)GetNextRes(R_STORAGE, (RES *)store)) ) {
+ foreach_res(store, R_STORAGE) {
if (acl_access_ok(ua, Storage_ACL, store->name())) {
bsendmsg(ua, "%s\n", store->name());
}
-/*
- *
- * Bacula Director -- User Agent Database restore Command
- * Creates a bootstrap file for restoring files and
- * starts the restore job.
- *
- * Tree handling routines split into ua_tree.c July MMIII.
- * BSR (bootstrap record) handling routines split into
- * bsr.c July MMIII
- *
- * Kern Sibbald, July MMII
- *
- * Version $Id$
- */
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2002-2006 Free Software Foundation Europe e.V.
+ Copyright (C) 2002-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.
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
*/
+/*
+ *
+ * Bacula Director -- User Agent Database restore Command
+ * Creates a bootstrap file for restoring files and
+ * starts the restore job.
+ *
+ * Tree handling routines split into ua_tree.c July MMIII.
+ * BSR (bootstrap record) handling routines split into
+ * bsr.c July MMIII
+ *
+ * Kern Sibbald, July MMII
+ *
+ * Version $Id$
+ */
#include "bacula.h"
-/*
- *
- * Bacula Director -- User Agent Prompt and Selection code
- *
- * Kern Sibbald, October MMI
- *
- * Version $Id$
- */
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2001-2006 Free Software Foundation Europe e.V.
+ Copyright (C) 2001-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.
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
*/
+/*
+ *
+ * Bacula Director -- User Agent Prompt and Selection code
+ *
+ * Kern Sibbald, October MMI
+ *
+ * Version $Id$
+ */
#include "bacula.h"
#include "dird.h"
* is copied to prompt if not NULL
* prompt is set to the chosen prompt item string
*/
-int do_prompt(UAContext *ua, const char *automsg, const char *msg, char *prompt, int max_prompt)
+int do_prompt(UAContext *ua, const char *automsg, const char *msg,
+ char *prompt, int max_prompt)
{
int i, item;
char pmsg[MAXSTRING];
+ BSOCK *user = ua->UA_sock;
if (prompt) {
*prompt = 0;
item = -1;
goto done;
}
-// bnet_sig(ua->UA_sock, BNET_START_SELECT);
+ if (ua->api) user->signal(BNET_START_SELECT);
bsendmsg(ua, ua->prompt[0]);
for (i=1; i < ua->num_prompts; i++) {
bsendmsg(ua, "%6d: %s\n", i, ua->prompt[i]);
}
-// bnet_sig(ua->UA_sock, BNET_END_SELECT);
+ if (ua->api) user->signal(BNET_END_SELECT);
for ( ;; ) {
/* First item is the prompt string, not the items */
}
if (ua->num_prompts == 2) {
item = 1;
- bsendmsg(ua, _("Item 1 selected automatically.\n"));
+ bsendmsg(ua, _("Automatically selected: %s\n"), ua->prompt[1]);
if (prompt) {
bstrncpy(prompt, ua->prompt[1], max_prompt);
}
sprintf(pmsg, "%s (1-%d): ", msg, ua->num_prompts-1);
}
/* Either a . or an @ will get you out of the loop */
+ if (ua->api) user->signal(BNET_SELECT_INPUT);
if (!get_pint(ua, pmsg)) {
item = -1; /* error */
bsendmsg(ua, _("Selection aborted, nothing done.\n"));
} else {
tree->node = node;
}
- tree_getpath(tree->node, cwd, sizeof(cwd));
- if (ua->api) {
- bsendmsg(ua, "%s", cwd);
- } else {
- bsendmsg(ua, _("cwd is: %s\n"), cwd);
- }
- return 1;
+ return pwdcmd(ua, tree);
}
static int pwdcmd(UAContext *ua, TREE_CTX *tree)
{
char cwd[2000];
tree_getpath(tree->node, cwd, sizeof(cwd));
- bsendmsg(ua, _("cwd is: %s\n"), cwd);
+ if (ua->api) {
+ bsendmsg(ua, "%s", cwd);
+ } else {
+ bsendmsg(ua, _("cwd is: %s\n"), cwd);
+ }
return 1;
}
};
-/* Signal definitions for use in bnet_sig() */
+/*
+ * Signal definitions for use in bnet_sig()
+ * Note! These must be negative
+ */
enum {
- BNET_EOD = -1, /* End of data stream, new data may follow */
- BNET_EOD_POLL = -2, /* End of data and poll all in one */
- BNET_STATUS = -3, /* Send full status */
- BNET_TERMINATE = -4, /* Conversation terminated, doing close() */
- BNET_POLL = -5, /* Poll request, I'm hanging on a read */
- BNET_HEARTBEAT = -6, /* Heartbeat Response requested */
- BNET_HB_RESPONSE = -7, /* Only response permited to HB */
- BNET_PROMPT = -8, /* Prompt for UA */
- BNET_BTIME = -9, /* Send UTC btime */
- BNET_BREAK = -10, /* Stop current command -- ctl-c */
- BNET_START_SELECT = -11, /* Start of a selection list */
- BNET_END_SELECT = -12, /* End of a select list */
- BNET_INVALID_CMD = -13, /* Invalid command sent */
- BNET_CMD_FAILED = -14, /* Command failed */
- BNET_CMD_OK = -15, /* Command succeeded */
- BNET_CMD_BEGIN = -16, /* Start command execution */
- BNET_MESSAGES_PENDING = 17, /* Messages pending */
- BNET_SERVER_READY = 18 /* Server ready and waiting */
+ BNET_EOD = -1, /* End of data stream, new data may follow */
+ BNET_EOD_POLL = -2, /* End of data and poll all in one */
+ BNET_STATUS = -3, /* Send full status */
+ BNET_TERMINATE = -4, /* Conversation terminated, doing close() */
+ BNET_POLL = -5, /* Poll request, I'm hanging on a read */
+ BNET_HEARTBEAT = -6, /* Heartbeat Response requested */
+ BNET_HB_RESPONSE = -7, /* Only response permited to HB */
+ BNET_PROMPT = -8, /* Prompt for UA */
+ BNET_BTIME = -9, /* Send UTC btime */
+ BNET_BREAK = -10, /* Stop current command -- ctl-c */
+ BNET_START_SELECT = -11, /* Start of a selection list */
+ BNET_END_SELECT = -12, /* End of a select list */
+ BNET_INVALID_CMD = -13, /* Invalid command sent */
+ BNET_CMD_FAILED = -14, /* Command failed */
+ BNET_CMD_OK = -15, /* Command succeeded */
+ BNET_CMD_BEGIN = -16, /* Start command execution */
+ BNET_MESSAGES_PENDING = -17, /* Messages pending */
+ BNET_SERVER_READY = -18, /* Server ready and waiting */
+ BNET_SELECT_INPUT = -19 /* Return selection input */
};
#define BNET_SETBUF_READ 1 /* Arg for bnet_set_buffer_size */
Console::Console(QStackedWidget *parent)
{
QFont font;
- QTreeWidgetItem *item, *topItem;
- QTreeWidget *treeWidget = mainWin->treeWidget;
+ (void)parent;
setupUi(this);
- parent->addWidget(this);
m_sock = NULL;
m_at_prompt = false;
m_textEdit = textEdit; /* our console screen */
m_cursor = new QTextCursor(m_textEdit->document());
mainWin->actionConnect->setIcon(QIcon(QString::fromUtf8("images/disconnected.png")));
- bRestore *brestore = new bRestore(parent);
- brestore->setupUi(brestore);
- parent->addWidget(brestore);
- /* Just take the first Director */
- LockRes();
- m_dir = (DIRRES *)GetNextRes(R_DIRECTOR, NULL);
- UnlockRes();
-
- /* ***FIXME*** Dummy setup of treeWidget */
- treeWidget->clear();
- treeWidget->setColumnCount(1);
- treeWidget->setHeaderLabel("Selection");
- topItem = new QTreeWidgetItem(treeWidget);
- topItem->setText(0, m_dir->name());
- topItem->setIcon(0, QIcon(QString::fromUtf8("images/server.png")));
- item = new QTreeWidgetItem(topItem);
- m_consoleItem = item;
- item->setText(0, "Console");
- item->setText(1, "0");
- QBrush redBrush(Qt::red);
- item->setForeground(0, redBrush);
- item = new QTreeWidgetItem(topItem);
- item->setText(0, "brestore");
- item->setText(1, "1");
- treeWidget->expandItem(topItem);
readSettings();
/* Check for messages every 5 seconds */
bool Console::get_job_defaults(struct job_defaults &job_defs)
{
QString scmd;
- char cmd[1000];
int stat;
char *def;
continue;
}
}
+
+#ifdef xxx
bsnprintf(cmd, sizeof(cmd), "job=%s pool=%s client=%s storage=%s where=%s\n"
"level=%s type=%s fileset=%s catalog=%s enabled=%d\n",
job_defs.job_name.toUtf8().data(), job_defs.pool_name.toUtf8().data(),
job_defs.where.toUtf8().data(), job_defs.level.toUtf8().data(),
job_defs.type.toUtf8().data(), job_defs.fileset_name.toUtf8().data(),
job_defs.catalog_name.toUtf8().data(), job_defs.enabled);
+#endif
setEnabled(true);
return true;
display_text(msg());
}
}
+
+void Console::setEnabled(bool enable)
+{
+ m_notifier->setEnabled(enable);
+}
+
+void Console::setTreeItem(QTreeWidgetItem *item)
+{
+ m_consoleItem = item;
+}
+
+void Console::setDirRes(DIRRES *dir)
+{
+ m_dir = dir;
+}
+
void writeSettings();
void readSettings();
char *msg();
- void setEnabled(bool enable) { m_notifier->setEnabled(enable); };
+ void setEnabled(bool enable);
QStringList get_list(char *cmd);
bool get_job_defaults(struct job_defaults &);
void terminate();
void beginNewCommand();
void displayToPrompt();
void discardToPrompt();
+ void setTreeItem(QTreeWidgetItem *item);
+ void setDirRes(DIRRES *dir);
QStringList job_list;
QStringList client_list;
public slots:
- void connect(void);
+ void connect();
void read_dir(int fd);
int read(void);
int write(const char *msg);
MainWin::MainWin(QWidget *parent) : QMainWindow(parent)
{
+
mainWin = this;
setupUi(this); /* Setup UI defined by main.ui (designer) */
- m_console = new Console(stackedWidget);
- stackedWidget->setCurrentIndex(0);
+ createStackedWidgets();
resetFocus();
m_console->connect();
}
-void MainWin::resetFocus()
-{
- lineEdit->setFocus();
-}
+void MainWin::createStackedWidgets()
+{
+ QTreeWidgetItem *item, *topItem;
+ m_console = new Console(stackedWidget);
+ stackedWidget->addWidget(m_console);
+
+ bRestore *brestore = new bRestore(stackedWidget);
+ stackedWidget->addWidget(brestore);
+
+ /* Just take the first Director */
+ LockRes();
+ DIRRES *dir = (DIRRES *)GetNextRes(R_DIRECTOR, NULL);
+ m_console->setDirRes(dir);
+ UnlockRes();
+
+ /* ***FIXME*** Dummy setup of treeWidget */
+ treeWidget->clear();
+ treeWidget->setColumnCount(1);
+ treeWidget->setHeaderLabel("Selection");
+ topItem = new QTreeWidgetItem(treeWidget);
+ topItem->setText(0, dir->name());
+ topItem->setIcon(0, QIcon(QString::fromUtf8("images/server.png")));
+ item = new QTreeWidgetItem(topItem);
+ m_console->setTreeItem(item);
+ item->setText(0, "Console");
+ item->setText(1, "0");
+ QBrush redBrush(Qt::red);
+ item->setForeground(0, redBrush);
+ item = new QTreeWidgetItem(topItem);
+ item->setText(0, "brestore");
+ item->setText(1, "1");
+ treeWidget->expandItem(topItem);
+
+ stackedWidget->setCurrentIndex(0);
+}
+/*
+ * Handle up and down arrow keys for the command line
+ * history.
+ */
void MainWin::keyPressEvent(QKeyEvent *event)
{
if (m_cmd_history.size() == 0) {
void set_status(const char *buf);
void writeSettings();
void readSettings();
- void resetFocus();
+ void resetFocus() { lineEdit->setFocus(); };
+
public slots:
void input_line();
private:
void createConnections();
+ void createStackedWidgets();
private:
QString m_UserInput;
<rect>
<x>0</x>
<y>0</y>
- <width>1023</width>
- <height>796</height>
+ <width>958</width>
+ <height>555</height>
</rect>
</property>
- <property name="sizePolicy" >
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>7</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
<property name="windowTitle" >
<string>brestore</string>
</property>
- <widget class="QDockWidget" name="dockWidget" >
+ <widget class="QWidget" name="" >
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QComboBox" name="ClientList" />
+ </item>
+ <item>
+ <widget class="QComboBox" name="JobList" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType" >
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButton_4" >
+ <property name="text" >
+ <string>Location</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEdit" />
+ </item>
+ </layout>
+ </widget>
+ <widget class="QSplitter" name="splitter_2" >
<property name="geometry" >
<rect>
- <x>10</x>
- <y>20</y>
- <width>951</width>
- <height>661</height>
+ <x>19</x>
+ <y>58</y>
+ <width>920</width>
+ <height>478</height>
</rect>
</property>
- <property name="sizePolicy" >
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>7</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="features" >
- <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable|QDockWidget::NoDockWidgetFeatures</set>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
</property>
- <widget class="QWidget" name="dockWidgetContents" >
- <widget class="QSplitter" name="splitter_2" >
- <property name="geometry" >
- <rect>
- <x>30</x>
- <y>50</y>
- <width>861</width>
- <height>543</height>
- </rect>
+ <widget class="QSplitter" name="splitter" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <widget class="QGroupBox" name="groupBox" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>7</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- <property name="orientation" >
- <enum>Qt::Vertical</enum>
+ <property name="title" >
+ <string>File list</string>
</property>
- <widget class="QSplitter" name="splitter" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
</property>
- <widget class="QGroupBox" name="groupBox" >
- <property name="sizePolicy" >
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>7</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title" >
- <string>File list</string>
- </property>
- <layout class="QVBoxLayout" >
- <property name="margin" >
- <number>9</number>
- </property>
- <property name="spacing" >
- <number>6</number>
- </property>
- <item>
- <widget class="QTableWidget" name="FileList" >
- <property name="sizePolicy" >
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>7</vsizetype>
- <horstretch>5</horstretch>
- <verstretch>5</verstretch>
- </sizepolicy>
- </property>
- <column>
- <property name="text" >
- <string>Type</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>File Name</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Size</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Date</string>
- </property>
- </column>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QGroupBox" name="groupBox_2" >
- <property name="sizePolicy" >
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>7</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title" >
- <string>File revisions</string>
- </property>
- <layout class="QVBoxLayout" >
- <property name="margin" >
- <number>9</number>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QTableWidget" name="FileList" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>7</vsizetype>
+ <horstretch>5</horstretch>
+ <verstretch>5</verstretch>
+ </sizepolicy>
</property>
- <property name="spacing" >
- <number>6</number>
+ <column>
+ <property name="text" >
+ <string>Type</string>
+ </property>
+ </column>
+ <column>
+ <property name="text" >
+ <string>File Name</string>
+ </property>
+ </column>
+ <column>
+ <property name="text" >
+ <string>Size</string>
+ </property>
+ </column>
+ <column>
+ <property name="text" >
+ <string>Date</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QGroupBox" name="groupBox_2" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>7</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title" >
+ <string>File revisions</string>
+ </property>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QTableWidget" name="FileRevisions" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>7</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- <item>
- <widget class="QTableWidget" name="FileRevisions" >
- <property name="sizePolicy" >
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>7</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <column>
- <property name="text" >
- <string>InChanger</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Volume</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>JobId</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Size</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Date</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Chksum</string>
- </property>
- </column>
- </widget>
- </item>
- </layout>
- </widget>
- </widget>
- <widget class="QWidget" name="layoutWidget_2" >
- <layout class="QVBoxLayout" >
+ <column>
+ <property name="text" >
+ <string>InChanger</string>
+ </property>
+ </column>
+ <column>
+ <property name="text" >
+ <string>Volume</string>
+ </property>
+ </column>
+ <column>
+ <property name="text" >
+ <string>JobId</string>
+ </property>
+ </column>
+ <column>
+ <property name="text" >
+ <string>Size</string>
+ </property>
+ </column>
+ <column>
+ <property name="text" >
+ <string>Date</string>
+ </property>
+ </column>
+ <column>
+ <property name="text" >
+ <string>Chksum</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <widget class="QWidget" name="layoutWidget_2" >
+ <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>
<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" >
- <property name="text" >
- <string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+ <widget class="QLabel" name="label" >
+ <property name="text" >
+ <string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Restore items list</span></p></body></html></string>
- </property>
- </widget>
- </item>
- <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="pushButton" >
- <property name="text" >
- <string>Clear</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="pushButton_2" >
- <property name="text" >
- <string>Estimate</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="pushButton_3" >
- <property name="text" >
- <string>Restore</string>
- </property>
- </widget>
- </item>
- </layout>
+ </property>
+ </widget>
+ </item>
+ <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="QTableWidget" name="RestoreList" >
- <property name="acceptDrops" >
- <bool>true</bool>
+ <widget class="QPushButton" name="pushButton" >
+ <property name="text" >
+ <string>Clear</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButton_2" >
+ <property name="text" >
+ <string>Estimate</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButton_3" >
+ <property name="text" >
+ <string>Restore</string>
</property>
- <column>
- <property name="text" >
- <string>Type</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>FileName</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>JobId</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>FileIndex</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Nb Files</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Size</string>
- </property>
- </column>
</widget>
</item>
</layout>
- </widget>
- </widget>
- <widget class="QWidget" name="layoutWidget" >
- <property name="geometry" >
- <rect>
- <x>40</x>
- <y>10</y>
- <width>861</width>
- <height>33</height>
- </rect>
- </property>
- <layout class="QHBoxLayout" >
- <property name="margin" >
- <number>0</number>
- </property>
- <property name="spacing" >
- <number>6</number>
- </property>
- <item>
- <widget class="QComboBox" name="ClientList" />
- </item>
- <item>
- <widget class="QComboBox" name="JobList" >
- <property name="enabled" >
- <bool>false</bool>
+ </item>
+ <item>
+ <widget class="QTableWidget" name="RestoreList" >
+ <property name="acceptDrops" >
+ <bool>true</bool>
+ </property>
+ <column>
+ <property name="text" >
+ <string>Type</string>
</property>
- </widget>
- </item>
- <item>
- <spacer>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
+ </column>
+ <column>
+ <property name="text" >
+ <string>FileName</string>
</property>
- <property name="sizeType" >
- <enum>QSizePolicy::Expanding</enum>
+ </column>
+ <column>
+ <property name="text" >
+ <string>JobId</string>
</property>
- <property name="sizeHint" >
- <size>
- <width>40</width>
- <height>20</height>
- </size>
+ </column>
+ <column>
+ <property name="text" >
+ <string>FileIndex</string>
</property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="pushButton_4" >
+ </column>
+ <column>
<property name="text" >
- <string>Location</string>
+ <string>Nb Files</string>
</property>
- </widget>
- </item>
- <item>
- <widget class="QLineEdit" name="lineEdit" />
- </item>
- </layout>
- </widget>
+ </column>
+ <column>
+ <property name="text" >
+ <string>Size</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ </layout>
</widget>
</widget>
</widget>
Technical notes on version 2.1
General:
+08Mar07
+kes Apply fix from for building wx-console on the Mac from
+ bug #798.
+kes Implement new select mechanism for GUI programs.
+kes Reorganize initialization of stackedWidgets in bat.
07Mar07
kes Add updated nagios plugin supplied by Christian Masopust.
05Mar07