From: <ibr...@us...> - 2014-02-17 11:19:36
|
Revision: 5077 http://sourceforge.net/p/tora/code/5077 Author: ibre5041 Date: 2014-02-17 11:19:27 +0000 (Mon, 17 Feb 2014) Log Message: ----------- default config options Modified Paths: -------------- trunk/tora/extlibs/libermodel/dotgraph.cpp trunk/tora/extlibs/libermodel/dotgraph.h trunk/tora/src/core/main.cpp trunk/tora/src/core/tobrowserbasewidget.cpp trunk/tora/src/core/tobrowserbasewidget.h trunk/tora/src/core/toconfigurationpriv.cpp trunk/tora/src/core/toglobalsetting.cpp trunk/tora/src/core/toresultdrawing.cpp trunk/tora/src/docklets/toquerymodel.cpp trunk/tora/src/tools/tobrowser.cpp trunk/tora/src/tools/tobrowser.h trunk/tora/src/tools/tobrowsertablewidget.cpp Modified: trunk/tora/extlibs/libermodel/dotgraph.cpp =================================================================== --- trunk/tora/extlibs/libermodel/dotgraph.cpp 2014-02-16 16:19:04 UTC (rev 5076) +++ trunk/tora/extlibs/libermodel/dotgraph.cpp 2014-02-17 11:19:27 UTC (rev 5077) @@ -904,9 +904,30 @@ void DotGraph::setLayoutCommandPath(QString const&p) { - s_layoutCommandPath = p + QDir::separator(); + QFileInfo path(p); + if (path.isExecutable() && path.isDir()) + s_layoutCommandPath = p + QDir::separator(); + else + s_layoutCommandPath = ""; }; +bool DotGraph::hasValidPath() +{ +#if defined(Q_OS_UNIX) +#define _BIN_SUFFIX "" + QFileInfo usrBinDot("/usr/bin/dot"); + if (usrBinDot.isFile() && usrBinDot.isExecutable()) + return true; +#elif defined(Q_OS_WIN) +#define _BIN_SUFFIX ".exe" +#endif + QFileInfo dot(s_layoutCommandPath + "dot"_BIN_SUFFIX); + if (dot.isFile() && dot.isExecutable()) + return true; + else + return false; +} + QString DotGraph::s_layoutCommandPath; ///#include "dotgraph.moc" Modified: trunk/tora/extlibs/libermodel/dotgraph.h =================================================================== --- trunk/tora/extlibs/libermodel/dotgraph.h 2014-02-16 16:19:04 UTC (rev 5076) +++ trunk/tora/extlibs/libermodel/dotgraph.h 2014-02-17 11:19:27 UTC (rev 5077) @@ -118,6 +118,7 @@ #endif static void setLayoutCommandPath(QString const&p); + static bool hasValidPath(); public Q_SLOTS: void removeNodeNamed(const QString& nodeName); Modified: trunk/tora/src/core/main.cpp =================================================================== --- trunk/tora/src/core/main.cpp 2014-02-16 16:19:04 UTC (rev 5076) +++ trunk/tora/src/core/main.cpp 2014-02-17 11:19:27 UTC (rev 5077) @@ -268,9 +268,8 @@ } // end splash #ifdef TORA_EXPERIMENTAL - + DotGraph::setLayoutCommandPath(toConfigurationSingle::Instance().graphvizHome()); #endif - DotGraph::setLayoutCommandPath(toConfigurationSingle::Instance().graphvizHome()); try { Modified: trunk/tora/src/core/tobrowserbasewidget.cpp =================================================================== --- trunk/tora/src/core/tobrowserbasewidget.cpp 2014-02-16 16:19:04 UTC (rev 5076) +++ trunk/tora/src/core/tobrowserbasewidget.cpp 2014-02-17 11:19:27 UTC (rev 5077) @@ -60,12 +60,12 @@ return ret; } -void toBrowserBaseWidget::addTab(QWidget * page, const QString & label) +int toBrowserBaseWidget::addTab(QWidget * page, const QString & label) { // show must go *before* QTabWidget::addTab() to prevent // widgets glitches in the other tabs. page->setVisible(true); - QTabWidget::addTab(page, label); + int pos = QTabWidget::addTab(page, label); toResult * r = dynamic_cast<toResult*>(page); @@ -81,6 +81,7 @@ "widget objectName is already used; page objectName must be unique"); m_tabs[page->objectName()] = r; + return pos; } void toBrowserBaseWidget::changeParams(const QString & schema, const QString & object, const QString & type) Modified: trunk/tora/src/core/tobrowserbasewidget.h =================================================================== --- trunk/tora/src/core/tobrowserbasewidget.h 2014-02-16 16:19:04 UTC (rev 5076) +++ trunk/tora/src/core/tobrowserbasewidget.h 2014-02-17 11:19:27 UTC (rev 5077) @@ -109,7 +109,7 @@ \param page a toResult and QWidget inherited object. \param label a text label for tab caption. */ - virtual void addTab(QWidget * page, const QString & label); + virtual int addTab(QWidget * page, const QString & label); /*! \brief Set type of object being handled This is required for some result displaying classes (for example extractor). If Modified: trunk/tora/src/core/toconfigurationpriv.cpp =================================================================== --- trunk/tora/src/core/toconfigurationpriv.cpp 2014-02-16 16:19:04 UTC (rev 5076) +++ trunk/tora/src/core/toconfigurationpriv.cpp 2014-02-17 11:19:27 UTC (rev 5077) @@ -80,7 +80,18 @@ m_oracleHome = s.value(CONF_ORACLE_HOME, "").toString(); m_mysqlHome = s.value(CONF_MYSQL_HOME, "").toString(); m_pgsqlHome = s.value(CONF_PGSQL_HOME, "").toString(); - m_graphvizHome = s.value("GV_HOME", "").toString(); + + { + QString defaultGvHome; +#if defined(Q_OS_WIN32) + defaultGvHome = "C:/Program Files/Graphviz 2.28/bin"; +#elif defined(Q_OS_WIN64) + defaultGvHome = "C:/Program Files(x86)/Graphviz 2.28/bin"; +#else + defaultGvHome = "/usr/bin" +#endif + m_graphvizHome = s.value("GV_HOME", defaultGvHome).toString(); + } // Options (1st column) m_changeConnection = s.value(CONF_CHANGE_CONNECTION, true).toBool(); m_savePassword = s.value(CONF_SAVE_PWD, DEFAULT_SAVE_PWD).toBool(); Modified: trunk/tora/src/core/toglobalsetting.cpp =================================================================== --- trunk/tora/src/core/toglobalsetting.cpp 2014-02-16 16:19:04 UTC (rev 5076) +++ trunk/tora/src/core/toglobalsetting.cpp 2014-02-17 11:19:27 UTC (rev 5077) @@ -263,12 +263,27 @@ void toGlobalSetting::graphvizBrowse(void) { - QString str = TOFileDialog::getExistingDirectory(this, tr("Graphviz installation"), GraphvizHome->text()); + QString defaultGvHome; +#if defined(Q_OS_WIN32) + defaultGvHome = "C:/Program Files/Graphviz 2.28/bin"; +#elif defined(Q_OS_WIN64) + defaultGvHome = "C:/Program Files(x86)/Graphviz 2.28/bin"; +#else + defaultGvHome = "/usr/bin" +#endif + + QDir gvDir(GraphvizHome->text()); + if(GraphvizHome->text().isEmpty() || !gvDir.exists() || !gvDir.isReadable()) + gvDir = defaultGvHome; + QString str = TOFileDialog::getExistingDirectory(this, tr("Graphviz installation"), gvDir.absolutePath()); if (str.isEmpty()) return; QFileInfo bindot(str + QDir::separator() + "bin", DOT); - if( bindot.isExecutable()) + QFileInfo dot(str + QDir::separator(), DOT); + if( bindot.isExecutable() && bindot.isFile()) GraphvizHome->setText(bindot.absoluteDir().absolutePath()); + else if( dot.isExecutable() && dot.isFile()) + GraphvizHome->setText(dot.absoluteDir().absolutePath()); else TOMessageBox::warning( toMainWindow::lookup(), Modified: trunk/tora/src/core/toresultdrawing.cpp =================================================================== --- trunk/tora/src/core/toresultdrawing.cpp 2014-02-16 16:19:04 UTC (rev 5076) +++ trunk/tora/src/core/toresultdrawing.cpp 2014-02-17 11:19:27 UTC (rev 5077) @@ -47,7 +47,37 @@ #include <QtGui/QToolBar> #include <QtGui/QAction> +class MySlider : public QSlider +{ +public: + explicit MySlider(QWidget *parent = 0) : QSlider(parent) {}; + explicit MySlider(Qt::Orientation orientation, QWidget *parent = 0) : QSlider(orientation, parent) {}; +protected: + void mousePressEvent ( QMouseEvent * event ) + { + QStyleOptionSlider opt; + initStyleOption(&opt); + QRect sr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this); + if (event->button() == Qt::LeftButton && + sr.contains(event->pos()) == false) + { + int newVal; + if (orientation() == Qt::Vertical) + newVal = minimum() + ((maximum()-minimum()) * (height()-event->y())) / height(); + else + newVal = minimum() + ((maximum()-minimum()) * event->x()) / width(); + + if (invertedAppearance() == true) + setValue( maximum() - newVal ); + else + setValue(newVal); + + event->accept(); + } + QSlider::mousePressEvent(event); } +}; + // BIG FAT WARNING - this query causes: ORA-07445: exception encountered: core dump [lnxmin()+2384] [SIGSEGV] // on 11gR1. Use "alter session set OPTIMIZER_FEATURES_ENABLE='10.2.0.4';" as a workaround // Note: the query is not bi-directional @@ -133,7 +163,7 @@ toolbar->addSeparator(); - slider = new QSlider(Qt::Horizontal, toolbar); + slider = new MySlider(Qt::Horizontal, toolbar); slider->setMinimum(1); slider->setMaximum(10); slider->setTickPosition(QSlider::TicksAbove); Modified: trunk/tora/src/docklets/toquerymodel.cpp =================================================================== --- trunk/tora/src/docklets/toquerymodel.cpp 2014-02-16 16:19:04 UTC (rev 5076) +++ trunk/tora/src/docklets/toquerymodel.cpp 2014-02-17 11:19:27 UTC (rev 5077) @@ -141,12 +141,7 @@ //m_widget->graph()->update(); } -#ifdef Q_OS_WIN - QFileInfo dot(toConfigurationSingle::Instance().graphvizHome() + QDir::separator() + "bin" + QDir::separator() + "dot.exe"); -#else - QFileInfo dot("/usr/bin/dot"); -#endif - if (dot.isExecutable()) + if (DotGraph::hasValidPath()) { m_timerID = startTimer(5000); } else { Modified: trunk/tora/src/tools/tobrowser.cpp =================================================================== --- trunk/tora/src/tools/tobrowser.cpp 2014-02-16 16:19:04 UTC (rev 5076) +++ trunk/tora/src/tools/tobrowser.cpp 2014-02-17 11:19:27 UTC (rev 5077) @@ -1510,12 +1510,12 @@ refresh(); } -void toBrowser::addTab(QSplitter * page, const QString & label, bool enable) +int toBrowser::addTab(QSplitter * page, const QString & label, bool enable) { page->setVisible(enable); if (!enable) - return; - m_mainTab->addTab(page, label); + return -1; + return m_mainTab->addTab(page, label); } QString toBrowser::currentItemText(int col) Modified: trunk/tora/src/tools/tobrowser.h =================================================================== --- trunk/tora/src/tools/tobrowser.h 2014-02-16 16:19:04 UTC (rev 5076) +++ trunk/tora/src/tools/tobrowser.h 2014-02-17 11:19:27 UTC (rev 5077) @@ -159,7 +159,7 @@ \param label text to display as a tab title \param enable true when it should be visible. False on missing feature. */ - void addTab(QSplitter * page, const QString & label, bool enable); + int addTab(QSplitter * page, const QString & label, bool enable); virtual bool canHandle(const toConnection &conn); Modified: trunk/tora/src/tools/tobrowsertablewidget.cpp =================================================================== --- trunk/tora/src/tools/tobrowsertablewidget.cpp 2014-02-16 16:19:04 UTC (rev 5076) +++ trunk/tora/src/tools/tobrowsertablewidget.cpp 2014-02-17 11:19:27 UTC (rev 5077) @@ -53,6 +53,7 @@ #include "core/toresultdrawing.h" #include "dotgraphview.h" +#include "dotgraph.h" Util::RegisterInFactory<toBrowserTableWidget, toBrowserWidgetFactory, toCache::CacheEntryType> regToBrowserTableWidget(toCache::TABLE); @@ -485,18 +486,22 @@ referencesView->hide(); #ifdef TORA_EXPERIMENTAL -#ifdef Q_OS_WIN - QFileInfo dot(toConfigurationSingle::Instance().graphvizHome() + QDir::separator() + "bin" + QDir::separator() + "dot.exe"); -#else - QFileInfo dot("/usr/bin/dot"); + { + int pos = 0; + if (c.providerIs("Oracle")) + pos = addTab(schemaView, "&Schema"); + else + schemaView->hide(); + if (!DotGraph::hasValidPath()) + { + schemaView->setDisabled(true); + schemaView->blockSignals(true); + if (pos) + setTabEnabled(pos, false); + } + } #endif - if (c.providerIs("Oracle") && dot.isExecutable()) - addTab(schemaView, "&Schema"); - else - schemaView->hide(); -#endif - if (c.providerIs("Oracle")) addTab(grantsView, "&Grants"); else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |