]> git.sur5r.net Git - bacula/bacula/commitdiff
kes Apply fix from for building wx-console on the Mac from
authorKern Sibbald <kern@sibbald.com>
Thu, 8 Mar 2007 18:50:23 +0000 (18:50 +0000)
committerKern Sibbald <kern@sibbald.com>
Thu, 8 Mar 2007 18:50:23 +0000 (18:50 +0000)
     bug #798.
kes  Implement new select mechanism for GUI programs.
kes  Reorganize initialization of stackedWidgets in bat.

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

13 files changed:
bacula/CheckList
bacula/src/dird/inc_conf.c
bacula/src/dird/ua_dotcmds.c
bacula/src/dird/ua_restore.c
bacula/src/dird/ua_select.c
bacula/src/dird/ua_tree.c
bacula/src/lib/bsock.h
bacula/src/qt-console/console/console.cpp
bacula/src/qt-console/console/console.h
bacula/src/qt-console/mainwin.cpp
bacula/src/qt-console/mainwin.h
bacula/src/qt-console/restore/brestore.ui
bacula/technotes-2.1

index ab1d9d36507c954c4f4b4391a4a3bf0e8a96cce1..46f4816d23afad71a49cd7dd9a62e94a13209bc1 100644 (file)
@@ -4,15 +4,17 @@
 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
@@ -20,13 +22,14 @@ Assume release is in bacula/base bacula/gui bacula/docs bacula/rescue
 - 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
@@ -34,7 +37,7 @@ Assume release is in bacula/base bacula/gui bacula/docs bacula/rescue
       what to do, correct the problem).
       cd ..
   cd ../rescue
-  cvs update
+  svn update
   cd ..
   ./makerel base 2.0.x
   ./makeguirel gui 2.0.x
@@ -55,4 +58,4 @@ Assume release is in bacula/base bacula/gui bacula/docs bacula/rescue
   make
 - Upload new release doc to web site.
   Upload bacula.pdf to web site.
-      
+- Update news on web site.
index 3052449d111d0a4e0c8571fd32a9e1c83366707e..0960a59aebf65592109cd1200fb937fef66d5a19 100644 (file)
@@ -1,15 +1,7 @@
-/*
- *   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"
index a53f609d1ba352752be1d8906a00eaed673aa096..48be7c785c6236e0f61cd4cd905ab134f81eff7d 100644 (file)
@@ -176,9 +176,9 @@ static bool diecmd(UAContext *ua, const char *cmd)
 
 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());
       }
@@ -189,9 +189,9 @@ static bool jobscmd(UAContext *ua, const char *cmd)
 
 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());
       }
@@ -202,9 +202,9 @@ static bool filesetscmd(UAContext *ua, const char *cmd)
 
 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());
       }
@@ -217,7 +217,7 @@ static bool msgscmd(UAContext *ua, const char *cmd)
 {
    MSGS *msgs = NULL;
    LockRes();
-   while ( (msgs = (MSGS *)GetNextRes(R_MSGS, (RES *)msgs)) ) {
+   foreach_res(msgs, R_MSGS) {
       bsendmsg(ua, "%s\n", msgs->name());
    }
    UnlockRes();
@@ -226,9 +226,9 @@ static bool msgscmd(UAContext *ua, const char *cmd)
 
 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());
       }
@@ -239,9 +239,9 @@ static bool poolscmd(UAContext *ua, const char *cmd)
 
 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());
       }
index cce2821ff08b6ae1c17dc47b0b57a2e2454d2ea7..65df3d535cad6e7fa481fe8eeccf3393a2d1da3d 100644 (file)
@@ -1,21 +1,7 @@
-/*
- *
- *   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"
index bf99c057fc25f0deccc3d84f97794f46e527cb4c..ed89f32b0f32ceea9a391c53bead225aca24ab91 100644 (file)
@@ -1,15 +1,7 @@
-/*
- *
- *   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"
@@ -731,10 +731,12 @@ void add_prompt(UAContext *ua, const char *prompt)
  *               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;
@@ -753,12 +755,12 @@ int do_prompt(UAContext *ua, const char *automsg, const char *msg, char *prompt,
       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 */
@@ -769,7 +771,7 @@ int do_prompt(UAContext *ua, const char *automsg, const char *msg, char *prompt,
       }
       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);
          }
@@ -778,6 +780,7 @@ int do_prompt(UAContext *ua, const char *automsg, const char *msg, char *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"));
index 1ff7d51353fbb5f299c4f90da8173cbdf86155df..fc49f8e671464f1eb5c1c049d60a2844fa5db878 100644 (file)
@@ -702,20 +702,18 @@ static int cdcmd(UAContext *ua, TREE_CTX *tree)
    } 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;
 }
 
index cb78bc478f7f8826354e5ea64a9a000ee21f287b..dd7154002da7a97b996883de81233adc8f1358da 100644 (file)
@@ -90,26 +90,30 @@ public:
 
 };
 
-/* 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 */
index 38b4a0cf2b25ae0461db7e877ac2f0a5b05f6dc3..37af5b8e66e00aab8850d2692cef5f91c0a1a063 100644 (file)
 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 */
@@ -207,7 +180,6 @@ QStringList Console::get_list(char *cmd)
 bool Console::get_job_defaults(struct job_defaults &job_defs)
 {
    QString scmd;
-   char cmd[1000];
    int stat;
    char *def;
 
@@ -271,6 +243,8 @@ bool Console::get_job_defaults(struct job_defaults &job_defs)
          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(), 
@@ -280,6 +254,7 @@ bool Console::get_job_defaults(struct job_defaults &job_defs)
       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;
@@ -559,3 +534,19 @@ void Console::read_dir(int fd)
       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;
+}
+
index aa18014f4723c5e608c1763dbc5c2fac7008da57..1907f1c95bfe5116eb4e7f882cae371d729a6c15 100644 (file)
@@ -80,13 +80,15 @@ public:
    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;
@@ -99,7 +101,7 @@ public:
 
 
 public slots:
-   void connect(void);
+   void connect();                     
    void read_dir(int fd);
    int read(void);
    int write(const char *msg);
index f7627bdade2238708f748f002e630ffb7d40bd3e..6bfcb67a19589189473d1085b3f6a026d1c770f6 100644 (file)
 
 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();
 
@@ -56,11 +56,46 @@ MainWin::MainWin(QWidget *parent) : QMainWindow(parent)
    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) {
index 68d37bbb60af997c450d7a0b1f938754b03546c7..8001e9329f4ebddd3243aa00797590cfd701be99 100644 (file)
@@ -56,7 +56,8 @@ public:
    void set_status(const char *buf);
    void writeSettings();
    void readSettings();
-   void resetFocus();
+   void resetFocus() { lineEdit->setFocus(); };
+
 
 public slots:
    void input_line();
@@ -73,6 +74,7 @@ protected:
 
 private:
    void createConnections(); 
+   void createStackedWidgets();
 
 private:
    QString m_UserInput;
index 8303e605cce2d3bda615d34b01fea51e8a0c2eee..5c8b55b7f6908f0322f4dde15545c03f4379cd79 100644 (file)
    <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>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
+        <widget class="QLabel" name="label" >
+         <property name="text" >
+          <string>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
 p, li { white-space: pre-wrap; }
 &lt;/style>&lt;/head>&lt;body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
 &lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">Restore items list&lt;/span>&lt;/p>&lt;/body>&lt;/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>
index 268b2821eac02aa05a1d04c18a636af32702ff92..59ff9f4c92cbda7677f18854dce44fe9438ff494 100644 (file)
@@ -1,6 +1,11 @@
               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