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
+ modify it under the terms of version three of the GNU Affero General Public
License as published by the Free Software Foundation and included
in the file LICENSE.
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
+ You should have received a copy of the GNU Affero 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.
treeWidget->setColumnCount(1);
treeWidget->setHeaderLabel( tr("Select Page") );
treeWidget->setContextMenuPolicy(Qt::ActionsContextMenu);
- // tabWidget->setTabsClosable(true); /* wait for QT 4.5 */
+ tabWidget->setTabsClosable(true); /* wait for QT 4.5 */
createPages();
resetFocus(); /* lineEdit->setFocus() */
foreach(Console *console, m_consoleHash) {
console->connect_dir();
}
+ /*
+ * Note, the notifier is now a global flag, although each notifier
+ * can be individually turned on and off at a socket level. Once
+ * the notifier is turned off, we don't accept anything from anyone
+ * this prevents unwanted messages from getting into the input
+ * dialogs such as restore that read from the director and "know"
+ * what to expect.
+ */
+ m_notify = true;
m_currentConsole = (Console*)getFromHash(m_firstItem);
QTimer::singleShot(2000, this, SLOT(popLists()));
if (m_miscDebug) {
* Create instances in alphabetic order of the rest
* of the classes that will by default exist under each Director.
*/
-// new bRestore();
+ new bRestore();
new Clients();
new FileSet();
new Jobs();
new MediaList();
new MediaView();
new Storage();
- if (m_openBrowser)
+ if (m_openBrowser) {
new restoreTree();
- if (m_openDirStat)
+ }
+ if (m_openDirStat) {
new DirStat();
-
+ }
treeWidget->expandItem(topItem);
tabWidget->setCurrentWidget(m_currentConsole);
}
connect(treeWidget, SIGNAL(itemClicked(QTreeWidgetItem *, int)), this, SLOT(treeItemClicked(QTreeWidgetItem *, int)));
connect(treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(treeItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)));
connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(stackItemChanged(int)));
+ connect(tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(closePage(int)));
connect(actionQuit, SIGNAL(triggered()), app, SLOT(closeAllWindows()));
connect(actionLabel, SIGNAL(triggered()), this, SLOT(labelButtonClicked()));
connect(actionRun, SIGNAL(triggered()), this, SLOT(runButtonClicked()));
connect(actionRestore, SIGNAL(triggered()), this, SLOT(restoreButtonClicked()));
connect(actionUndock, SIGNAL(triggered()), this, SLOT(undockWindowButton()));
connect(actionToggleDock, SIGNAL(triggered()), this, SLOT(toggleDockContextWindow()));
- connect(actionClosePage, SIGNAL(triggered()), this, SLOT(closePage()));
+ connect(actionClosePage, SIGNAL(triggered()), this, SLOT(closeCurrentPage()));
connect(actionPreferences, SIGNAL(triggered()), this, SLOT(setPreferences()));
connect(actionRepopLists, SIGNAL(triggered()), this, SLOT(repopLists()));
connect(actionReloadRepop, SIGNAL(triggered()), this, SLOT(reloadRepopLists()));
disconnect(treeWidget, SIGNAL(itemClicked(QTreeWidgetItem *, int)), this, SLOT(treeItemClicked(QTreeWidgetItem *, int)));
disconnect(treeWidget, SIGNAL( currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(treeItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)));
disconnect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(stackItemChanged(int)));
+ disconnect(tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(closePage(int)));
disconnect(actionQuit, SIGNAL(triggered()), app, SLOT(closeAllWindows()));
disconnect(actionLabel, SIGNAL(triggered()), this, SLOT(labelButtonClicked()));
disconnect(actionRun, SIGNAL(triggered()), this, SLOT(runButtonClicked()));
disconnect(actionRestore, SIGNAL(triggered()), this, SLOT(restoreButtonClicked()));
disconnect(actionUndock, SIGNAL(triggered()), this, SLOT(undockWindowButton()));
disconnect(actionToggleDock, SIGNAL(triggered()), this, SLOT(toggleDockContextWindow()));
- disconnect(actionClosePage, SIGNAL(triggered()), this, SLOT(closePage()));
+ disconnect(actionClosePage, SIGNAL(triggered()), this, SLOT(closeCurrentPage()));
disconnect(actionPreferences, SIGNAL(triggered()), this, SLOT(setPreferences()));
disconnect(actionRepopLists, SIGNAL(triggered()), this, SLOT(repopLists()));
disconnect(actionReloadRepop, SIGNAL(triggered()), this, SLOT(reloadRepopLists()));
*/
void MainWin::waitEnter()
{
- if (m_waitState){
- if (mainWin->m_connDebug)
- Pmsg0(000, "Should Never Get Here DANGER DANGER, for now I'll return\n");
+ if (m_waitState || m_isClosing) {
return;
}
m_waitState = true;
*/
void MainWin::waitExit()
{
- m_waitState = false;
+ if (!m_waitState || m_isClosing) {
+ return;
+ }
if (mainWin->m_connDebug) Pmsg0(000, "Exiting Wait State\n");
- if (m_waitTreeItem != treeWidget->currentItem())
+ if (m_waitTreeItem && (m_waitTreeItem != treeWidget->currentItem())) {
treeWidget->setCurrentItem(m_waitTreeItem);
+ }
if (m_doConnect) {
connectSignals();
connectConsoleSignals();
}
app->restoreOverrideCursor();
+ m_waitState = false;
}
void MainWin::connectConsoleSignals()
/* Is this a page that has been inserted into the hash */
if (getFromHash(item)) {
Pages* page = getFromHash(item);
- int stackindex=tabWidget->indexOf(page);
+ int stackindex = tabWidget->indexOf(page);
if (stackindex >= 0) {
tabWidget->setCurrentWidget(page);
}
+ page->dockPage();
/* run the virtual function in case this class overrides it */
page->PgSeltreeWidgetClicked();
+ } else {
+ Dmsg0(000, "Page not in hash");
}
}
}
/* set the value for the currently active console */
int stackindex = tabWidget->indexOf(nextPage);
- if (!nextPage->isOnceDocked()) {
- nextPage->dockPage();
- }
+ nextPage->firstUseDock();
/* Is this page currently on the stack or is it undocked */
if (stackindex >= 0) {
return m_widgethash.value(page);
}
+void MainWin::closeCurrentPage()
+{
+ closePage(-1);
+}
+
/*
* Function to respond to action on page selector context menu to close the
* current window.
*/
-void MainWin::closePage()
+void MainWin::closePage(int item)
{
- QTreeWidgetItem *currentitem = treeWidget->currentItem();
+ QTreeWidgetItem *currentitem;
+ Pages *page;
+
+ if (item >= 0) {
+ page = (Pages *)tabWidget->widget(item);
+ } else {
+ currentitem = treeWidget->currentItem();
+ /* Is this a page that has been inserted into the hash */
+ if (getFromHash(currentitem)) {
+ page = getFromHash(currentitem);
+ }
+ }
- /* Is this a page that has been inserted into the hash */
- if (getFromHash(currentitem)) {
- Pages* page = getFromHash(currentitem);
+ if (page) {
if (page->isCloseable()) {
page->closeStackPage();
+ } else {
+ page->hidePage();
}
}
}
settings.endGroup();
settings.beginGroup("JobList");
m_recordLimitCheck = settings.value("recordLimitCheck", true).toBool();
- m_recordLimitVal = settings.value("recordLimitVal", 150).toInt();
+ m_recordLimitVal = settings.value("recordLimitVal", 50).toInt();
m_daysLimitCheck = settings.value("daysLimitCheck", false).toBool();
m_daysLimitVal = settings.value("daysLimitVal", 28).toInt();
settings.endGroup();