00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include <globalsearch/ui/abstracttab.h>
00018
00019 #include <globalsearch/ui/abstractdialog.h>
00020 #include <globalsearch/optbase.h>
00021
00022 #include <QtGui/QApplication>
00023
00024 #include <QtCore/QThread>
00025
00026 namespace GlobalSearch {
00027
00028 AbstractTab::AbstractTab( AbstractDialog *parent,
00029 OptBase *p ) :
00030 QObject( parent ),
00031 m_dialog(parent),
00032 m_opt(p),
00033 m_isInitialized(false)
00034 {
00035 m_tab_widget = new QWidget;
00036 }
00037
00038 void AbstractTab::initialize()
00039 {
00040
00041 connect(m_dialog, SIGNAL(tabsReadSettingsDirect(const QString &)),
00042 this, SLOT(readSettings(const QString &)),
00043 Qt::DirectConnection);
00044 connect(m_dialog, SIGNAL(tabsReadSettingsBlockingQueued(const QString &)),
00045 this, SLOT(readSettings(const QString &)),
00046 Qt::BlockingQueuedConnection);
00047 connect(m_dialog, SIGNAL(tabsWriteSettingsDirect(const QString &)),
00048 this, SLOT(writeSettings(const QString &)),
00049 Qt::DirectConnection);
00050 connect(m_dialog, SIGNAL(tabsWriteSettingsBlockingQueued(const QString &)),
00051 this, SLOT(writeSettings(const QString &)),
00052 Qt::BlockingQueuedConnection);
00053 connect(m_dialog, SIGNAL(tabsUpdateGUI()),
00054 this, SLOT(updateGUI()));
00055 connect(m_dialog, SIGNAL(tabsDisconnectGUI()),
00056 this, SLOT(disconnectGUI()));
00057 connect(m_dialog, SIGNAL(tabsLockGUI()),
00058 this, SLOT(lockGUI()));
00059 connect(this, SIGNAL(moleculeChanged(GlobalSearch::Structure*)),
00060 m_dialog, SIGNAL(moleculeChanged(GlobalSearch::Structure*)));
00061 connect(this, SIGNAL(startingBackgroundProcessing()),
00062 this, SLOT(setBusyCursor()),
00063 Qt::QueuedConnection);
00064 connect(this, SIGNAL(finishedBackgroundProcessing()),
00065 this, SLOT(clearBusyCursor()),
00066 Qt::QueuedConnection);
00067
00068 m_isInitialized = true;
00069 emit initialized();
00070 }
00071
00072 AbstractTab::~AbstractTab()
00073 {
00074 }
00075
00076 void AbstractTab::setBusyCursor()
00077 {
00078 Q_ASSERT_X(QThread::currentThread() == qApp->thread(), Q_FUNC_INFO,
00079 "This function cannot be called from an background thread. "
00080 "Emit AbstractTab::startingBackgroundProcessing instead.");
00081 qApp->setOverrideCursor( Qt::WaitCursor );
00082 }
00083
00084 void AbstractTab::clearBusyCursor()
00085 {
00086 Q_ASSERT_X(QThread::currentThread() == qApp->thread(), Q_FUNC_INFO,
00087 "This function cannot be called from an background thread. "
00088 "Emit AbstractTab::finishedBackgroundProcessing instead.");
00089 qApp->restoreOverrideCursor();
00090 }
00091
00092
00093 }