From: <ibr...@us...> - 2013-04-03 22:46:42
|
Revision: 4606 http://sourceforge.net/p/tora/code/4606 Author: ibre5041 Date: 2013-04-03 22:46:38 +0000 (Wed, 03 Apr 2013) Log Message: ----------- Compilation time speedup. Modified Paths: -------------- branches/tora3/src/CMakeLists.txt branches/tora3/src/connection/tooraclesetting.cpp branches/tora3/src/core/tobackgroundlabel.cpp branches/tora3/src/core/tobrowserbasewidget.cpp branches/tora3/src/core/tochangeconnection.cpp branches/tora3/src/core/tomain.cpp branches/tora3/src/core/tomain.h branches/tora3/src/core/tomainwindow.cpp branches/tora3/src/core/tomainwindow.h branches/tora3/src/core/tonewconnection.cpp branches/tora3/src/core/totool.cpp branches/tora3/src/core/utils.cpp branches/tora3/src/docklets/toviewconnections.cpp branches/tora3/src/editor/tocustomlexer.cpp branches/tora3/src/editor/tohighlightedtexteditor.cpp branches/tora3/src/tests/test4window.cpp branches/tora3/src/tests/test4window.h branches/tora3/src/tools/tosandboxtool.cpp branches/tora3/src/tools/toscriptschemawidget.cpp branches/tora3/src/tools/toscripttreemodel.cpp Added Paths: ----------- branches/tora3/src/core/toconnectionregistry.cpp branches/tora3/src/core/toconnectionregistry.h branches/tora3/src/core/utils_part.cpp Modified: branches/tora3/src/CMakeLists.txt =================================================================== --- branches/tora3/src/CMakeLists.txt 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/CMakeLists.txt 2013-04-03 22:46:38 UTC (rev 4606) @@ -181,6 +181,7 @@ core/tobackground.h core/tobackgroundlabel.h core/toconnection.h + core/toconnectionregistry.h core/todockbar.h core/todocklet.h core/toglobalsetting.h @@ -391,6 +392,7 @@ core/tocache.cpp core/toconfiguration.cpp core/toconnection.cpp + core/toconnectionregistry.cpp core/toconnectionsub.cpp core/toconnectionsubloan.cpp core/toconnectionprovider.cpp @@ -413,6 +415,7 @@ core/totimer.cpp core/totreewidget.cpp core/utils.cpp + core/utils_part.cpp core/tosplash.cpp core/tonewconnection.cpp core/toconnectionimport.cpp @@ -739,11 +742,13 @@ core/toconfiguration.cpp core/totool.cpp core/toconnection.cpp + core/toconnectionregistry.cpp core/toconnectionprovider.cpp core/toconnectionsubloan.cpp core/toqvalue.cpp core/toglobalevent.cpp core/utils.cpp + core/utils_part.cpp core/totimer.cpp core/tomainwindow.cpp core/tocache.cpp @@ -756,6 +761,7 @@ core/moc_toworkspace.cxx core/moc_totool.cxx core/moc_toconnection.cxx + core/moc_toconnectionregistry.cxx core/moc_tomainwindow.cxx core/moc_toglobalevent.cxx core/moc_tocache.cxx @@ -814,38 +820,18 @@ # test4 SET(TEST4_SOURCES - core/toworkspace.cpp - #obsolete core/tosyntaxanalyzer.cpp core/toconfiguration.cpp - core/totool.cpp - core/toconnection.cpp - core/toconnectionprovider.cpp - core/toconnectionsubloan.cpp - core/toqvalue.cpp core/toglobalevent.cpp - core/utils.cpp - core/totimer.cpp + core/utils_part.cpp core/tomainwindow.cpp - core/tocache.cpp - core/tosql.cpp - #obsolete core/tosqlparse.cpp - core/toquery.cpp - #disabled parsing/tsqlparse.cpp editor/tocustomlexer.cpp editor/tohighlightedtexteditor.cpp editor/tomarkedtexteditor.cpp ) SET(TEST4_MOC_SOURCES tests/moc_test4window.cxx - core/moc_toworkspace.cxx - #obsolete core/moc_tosyntaxanalyzer.cxx - core/moc_totool.cxx - core/moc_toconnection.cxx core/moc_tomainwindow.cxx core/moc_toglobalevent.cxx - core/moc_tocache.cxx - core/moc_toquery.cxx - core/moc_totimer.cxx parsing/moc_tsqllexer.cxx ts_log/moc_toostream.cxx editor/moc_tocustomlexer.cxx Modified: branches/tora3/src/connection/tooraclesetting.cpp =================================================================== --- branches/tora3/src/connection/tooraclesetting.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/connection/tooraclesetting.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -42,12 +42,8 @@ #include "connection/tooraclesetting.h" #include "core/toconfiguration.h" #include "core/tologger.h" -//#include "core/toconnection.h" -//#include "core/toconnectionsub.h" -//#include "core/toconnectionsubloan.h" -//#include "core/toconnectionprovider.h" #include "core/utils.h" -#include "core/tomainwindow.h" +#include "core/toconnectionregistry.h" toOracleSetting::toOracleSetting(QWidget *parent) : QWidget(parent) Modified: branches/tora3/src/core/tobackgroundlabel.cpp =================================================================== --- branches/tora3/src/core/tobackgroundlabel.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/core/tobackgroundlabel.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -40,7 +40,7 @@ #include "core/tobackgroundlabel.h" #include "core/utils.h" -#include "core/tomainwindow.h" +#include "core/toconnectionregistry.h" #include "core/toconnection.h" #include <QMovie> Modified: branches/tora3/src/core/tobrowserbasewidget.cpp =================================================================== --- branches/tora3/src/core/tobrowserbasewidget.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/core/tobrowserbasewidget.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -41,7 +41,7 @@ #include "core/tobrowserbasewidget.h" #include "core/toresultdata.h" -#include "core/tomainwindow.h" +#include "core/toconnectionregistry.h" #include <QApplication> Modified: branches/tora3/src/core/tochangeconnection.cpp =================================================================== --- branches/tora3/src/core/tochangeconnection.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/core/tochangeconnection.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -41,6 +41,7 @@ #include "core/tochangeconnection.h" #include "core/toconnection.h" +#include "core/toconnectionregistry.h" #include "core/tomainwindow.h" #include "core/totool.h" #include "core/utils.h" Added: branches/tora3/src/core/toconnectionregistry.cpp =================================================================== --- branches/tora3/src/core/toconnectionregistry.cpp (rev 0) +++ branches/tora3/src/core/toconnectionregistry.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -0,0 +1,144 @@ + +/* BEGIN_COMMON_COPYRIGHT_HEADER + * + * TOra - An Oracle Toolkit for DBA's and developers + * + * Shared/mixed copyright is held throughout files in this product + * + * Portions Copyright (C) 2000-2001 Underscore AB + * Portions Copyright (C) 2003-2005 Quest Software, Inc. + * Portions Copyright (C) 2004-2009 Numerous Other Contributors + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; only version 2 of + * the License is valid for this program. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * 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 + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * As a special exception, you have permission to link this program + * with the Oracle Client libraries and distribute executables, as long + * as you follow the requirements of the GNU GPL in regard to all of the + * software in the executable aside from Oracle client libraries. + * + * Specifically you are not permitted to link this program with the + * Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. + * And you are not permitted to distribute binaries compiled against + * these libraries. + * + * You may link this product with any GPL'd Qt library. + * + * All trademarks belong to their respective owners. + * + * END_COMMON_COPYRIGHT_HEADER */ + +#include "core/toconnectionregistry.h" +#include "core/toconnection.h" +#include "core/utils.h" + +#include <QAction> + +bool toConnectionRegistry::isEmpty() const +{ + return m_ConnectionsList.empty(); +} + +void toConnectionRegistry::changeConnection(QAction *act) +{ + changeConnection(act->text()); +} + +void toConnectionRegistry::changeConnection(QString description) +{ + if( m_ConnectionsMap.contains(description)) + m_currentConnectionDescription = description; + else + throw QString("Unregistered connection(change): %1").arg(description); +} + +int toConnectionRegistry::rowCount(const QModelIndex &) const +{ + return m_ConnectionsList.size(); +} + +void toConnectionRegistry::addConnection(toConnection *conn) +{ + QString const& description = conn->description(); + conn->setParent(this); + + if(m_ConnectionsMap.contains(description)) + { + delete conn; + throw QString("Duplicit connection: %1").arg(description); + } + + if(m_ConnectionsList.empty()) + m_currentConnectionDescription = description; + + beginInsertRows(QModelIndex(), m_ConnectionsList.size(), m_ConnectionsList.size()); + m_ConnectionsMap.insert(description, conn); + m_ConnectionsList.append(conn); + endInsertRows(); +} + +void toConnectionRegistry::removeConnection(toConnection *conn) +{ + QString const& description = conn->description(); + + QList<QString> descriptions = m_ConnectionsMap.keys(conn); + if(descriptions.size() != 1 || !m_ConnectionsList.contains(conn)) + { + conn->setParent(this); + delete conn; + throw QString("Unregistered connection: %1").arg(description); + } + + int pos = m_ConnectionsList.indexOf(conn); + beginRemoveRows(QModelIndex(), pos, pos); + m_ConnectionsMap.remove(descriptions.at(0)); + m_ConnectionsList.removeAt(pos); + endRemoveRows(); +} + +QVariant toConnectionRegistry::data(const QModelIndex &idx, int role) const +{ + static QVariant nothing; + switch(role) + { + case Qt::DisplayRole: + return QVariant(m_ConnectionsList.at(idx.row())->description()); + case Qt::DecorationRole: + { + QString const& color = m_ConnectionsList.at(idx.row())->color(); + return QVariant(Utils::connectionColorPixmap(color)); + } + default: + return nothing; + } +} + +toConnection& toConnectionRegistry::currentConnection() +{ + if( m_ConnectionsMap.contains(m_currentConnectionDescription)) + return *m_ConnectionsMap.value(m_currentConnectionDescription); + throw tr("Can't find active connection"); +} + +toConnection& toConnectionRegistry::connection(const QString &str) +{ + if( m_ConnectionsMap.contains(str)) + return *m_ConnectionsMap.value(str); + throw tr("Couldn't find specified connectionts (%1)").arg(str); +} + +QList<toConnection*> const& toConnectionRegistry::connections(void) const +{ + return m_ConnectionsList; +} Added: branches/tora3/src/core/toconnectionregistry.h =================================================================== --- branches/tora3/src/core/toconnectionregistry.h (rev 0) +++ branches/tora3/src/core/toconnectionregistry.h 2013-04-03 22:46:38 UTC (rev 4606) @@ -0,0 +1,101 @@ + +/* BEGIN_COMMON_COPYRIGHT_HEADER + * + * TOra - An Oracle Toolkit for DBA's and developers + * + * Shared/mixed copyright is held throughout files in this product + * + * Portions Copyright (C) 2000-2001 Underscore AB + * Portions Copyright (C) 2003-2005 Quest Software, Inc. + * Portions Copyright (C) 2004-2009 Numerous Other Contributors + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; only version 2 of + * the License is valid for this program. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * 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 + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * As a special exception, you have permission to link this program + * with the Oracle Client libraries and distribute executables, as long + * as you follow the requirements of the GNU GPL in regard to all of the + * software in the executable aside from Oracle client libraries. + * + * Specifically you are not permitted to link this program with the + * Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. + * And you are not permitted to distribute binaries compiled against + * these libraries. + * + * You may link this product with any GPL'd Qt library. + * + * All trademarks belong to their respective owners. + * + * END_COMMON_COPYRIGHT_HEADER */ + +#ifndef TOCONNECTION_REGISTRY_H +#define TOCONNECTION_REGISTRY_H + +#include "core/tora_export.h" +#include "loki/Singleton.h" + +class toConnection; + +/** The connections that have been opened in TOra. */ +class TORA_EXPORT toConnectionRegistry : public QAbstractListModel +{ + Q_OBJECT; +public: + toConnectionRegistry() {}; + + bool isEmpty() const; + + /** Change current connection + */ + // TODO - duno how to implement this + // see void toChangeConnection::changeConnection(QAction *act) + //void changeConnection(void); + void changeConnection(QAction *act); // this one is not used yet + void changeConnection(QString); + + /** + * Get a list of currently open connections. + * @return List of connections. The returned list can then be used by + */ + QList<toConnection*> const& connections(void) const; + + /** Get a connection identified by a string. + * @return A reference to a connection. + * @exception QString If connection wasn't found. + */ + toConnection& connection(const QString &); + + /** + * Get the current database connection + * @return Reference to current connection. + */ + toConnection& currentConnection(void); + + void removeConnection(toConnection*); + + void addConnection(toConnection*); + + // QAbstractListModel interface + int rowCount(const QModelIndex &) const; + QVariant data(const QModelIndex &,int) const; + +private: + QString m_currentConnectionDescription; + QMap<QString, toConnection *> m_ConnectionsMap; + QList<toConnection *> m_ConnectionsList; +}; + +typedef Loki::SingletonHolder<toConnectionRegistry> toConnectionRegistrySing; + +#endif Modified: branches/tora3/src/core/tomain.cpp =================================================================== --- branches/tora3/src/core/tomain.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/core/tomain.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -47,6 +47,7 @@ #include "core/toconf.h" #include "core/toraversion.h" #include "core/toconnectionprovider.h" +#include "core/toconnectionregistry.h" #include "core/tonewconnection.h" #include "core/todockbar.h" #include "core/tomemoeditor.h" Modified: branches/tora3/src/core/tomain.h =================================================================== --- branches/tora3/src/core/tomain.h 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/core/tomain.h 2013-04-03 22:46:38 UTC (rev 4606) @@ -57,6 +57,7 @@ class QToolButton; class toBackgroundLabel; class toConnection; +class toConnectionRegistry; class toDockbar; class toDocklet; class toEditMenu; Modified: branches/tora3/src/core/tomainwindow.cpp =================================================================== --- branches/tora3/src/core/tomainwindow.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/core/tomainwindow.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -61,101 +61,3 @@ return NULL; } - -bool toConnectionRegistry::isEmpty() const -{ - return m_ConnectionsList.empty(); -} - -void toConnectionRegistry::changeConnection(QAction *act) -{ - changeConnection(act->text()); -} - -void toConnectionRegistry::changeConnection(QString description) -{ - if( m_ConnectionsMap.contains(description)) - m_currentConnectionDescription = description; - else - throw QString("Unregistered connection(change): %1").arg(description); -} - -int toConnectionRegistry::rowCount(const QModelIndex &) const -{ - return m_ConnectionsList.size(); -} - -void toConnectionRegistry::addConnection(toConnection *conn) -{ - QString const& description = conn->description(); - conn->setParent(this); - - if(m_ConnectionsMap.contains(description)) - { - delete conn; - throw QString("Duplicit connection: %1").arg(description); - } - - if(m_ConnectionsList.empty()) - m_currentConnectionDescription = description; - - beginInsertRows(QModelIndex(), m_ConnectionsList.size(), m_ConnectionsList.size()); - m_ConnectionsMap.insert(description, conn); - m_ConnectionsList.append(conn); - endInsertRows(); -} - -void toConnectionRegistry::removeConnection(toConnection *conn) -{ - QString const& description = conn->description(); - - QList<QString> descriptions = m_ConnectionsMap.keys(conn); - if(descriptions.size() != 1 || !m_ConnectionsList.contains(conn)) - { - conn->setParent(this); - delete conn; - throw QString("Unregistered connection: %1").arg(description); - } - - int pos = m_ConnectionsList.indexOf(conn); - beginRemoveRows(QModelIndex(), pos, pos); - m_ConnectionsMap.remove(descriptions.at(0)); - m_ConnectionsList.removeAt(pos); - endRemoveRows(); -} - -QVariant toConnectionRegistry::data(const QModelIndex &idx, int role) const -{ - static QVariant nothing; - switch(role) - { - case Qt::DisplayRole: - return QVariant(m_ConnectionsList.at(idx.row())->description()); - case Qt::DecorationRole: - { - QString const& color = m_ConnectionsList.at(idx.row())->color(); - return QVariant(Utils::connectionColorPixmap(color)); - } - default: - return nothing; - } -} - -toConnection& toConnectionRegistry::currentConnection() -{ - if( m_ConnectionsMap.contains(m_currentConnectionDescription)) - return *m_ConnectionsMap.value(m_currentConnectionDescription); - throw tr("Can't find active connection"); -} - -toConnection& toConnectionRegistry::connection(const QString &str) -{ - if( m_ConnectionsMap.contains(str)) - return *m_ConnectionsMap.value(str); - throw tr("Couldn't find specified connectionts (%1)").arg(str); -} - -QList<toConnection*> const& toConnectionRegistry::connections(void) const -{ - return m_ConnectionsList; -} Modified: branches/tora3/src/core/tomainwindow.h =================================================================== --- branches/tora3/src/core/tomainwindow.h 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/core/tomainwindow.h 2013-04-03 22:46:38 UTC (rev 4606) @@ -50,15 +50,8 @@ #include <QList> #include <QAbstractListModel> -class QMenu; -class QAction; -class QPlainTextEdit; -class toBackgroundLabel; -class toConnection; class toDockbar; class toDocklet; -class toLineChart; -class toToolWidget; class TORA_EXPORT toMainWindow : public QMainWindow { @@ -80,55 +73,4 @@ static toMainWindow* lookup(void); }; -/** The connections that have been opened in TOra. */ -class TORA_EXPORT toConnectionRegistry : public QAbstractListModel -{ - Q_OBJECT; -public: - toConnectionRegistry() {}; - - bool isEmpty() const; - - /** Change current connection - */ - // TODO - duno how to implement this - // see void toChangeConnection::changeConnection(QAction *act) - //void changeConnection(void); - void changeConnection(QAction *act); // this one is not used yet - void changeConnection(QString); - - /** - * Get a list of currently open connections. - * @return List of connections. The returned list can then be used by - */ - QList<toConnection*> const& connections(void) const; - - /** Get a connection identified by a string. - * @return A reference to a connection. - * @exception QString If connection wasn't found. - */ - toConnection& connection(const QString &); - - /** - * Get the current database connection - * @return Reference to current connection. - */ - toConnection& currentConnection(void); - - void removeConnection(toConnection*); - - void addConnection(toConnection*); - - // QAbstractListModel interface - int rowCount(const QModelIndex &) const; - QVariant data(const QModelIndex &,int) const; - -private: - QString m_currentConnectionDescription; - QMap<QString, toConnection *> m_ConnectionsMap; - QList<toConnection *> m_ConnectionsList; -}; - -typedef Loki::SingletonHolder<toConnectionRegistry> toConnectionRegistrySing; - #endif Modified: branches/tora3/src/core/tonewconnection.cpp =================================================================== --- branches/tora3/src/core/tonewconnection.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/core/tonewconnection.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -44,12 +44,12 @@ #include "core/toconf.h" #include "core/tohelp.h" #include "core/toconnectionprovider.h" +#include "core/toconnectionregistry.h" #include "core/toconnectionmodel.h" #include "core/toconnectionimport.h" #include "core/toconnection.h" #include "core/tooracleconst.h" #include "core/toconfiguration.h" -#include "core/tomainwindow.h" #include "icons/trash.xpm" Modified: branches/tora3/src/core/totool.cpp =================================================================== --- branches/tora3/src/core/totool.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/core/totool.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -47,6 +47,7 @@ #include "core/utils.h" #include "core/tologger.h" #include "core/toconnection.h" +#include "core/toconnectionregistry.h" #include "core/toworkspace.h" #include "core/totimer.h" #include "core/tomainwindow.h" Modified: branches/tora3/src/core/utils.cpp =================================================================== --- branches/tora3/src/core/utils.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/core/utils.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -81,10 +81,6 @@ #undef QT_TRANSLATE_NOOP #define QT_TRANSLATE_NOOP(x,y) QTRANS(x,y) -#define T_EOL_CRLF 0 -#define T_EOL_CR 1 -#define T_EOL_LF 2 - // toSQL::TOSQL_USERLIST is used to populate toResultSchema #if 0 @@ -432,23 +428,6 @@ "", "Teradata"); -QMainWindow* toQMainWindow() -{ - static QMainWindow *main = NULL; - if (main) - return main; - - QWidgetList widgets = qApp->topLevelWidgets(); - for (QWidgetList::iterator it = widgets.begin(); it != widgets.end(); it++) - { - main = dynamic_cast<QMainWindow *>((*it)); - if (main) - return main; - } - return NULL; - // TODO: throw something here -} - QString toSQLStripSpecifier(const QString &sql) { QString ret; @@ -850,274 +829,6 @@ Qt::QueuedConnection); } -// This code is taken from (Q)Scintilla source -void changeLineEnds(QByteArray * text, int eolModeSet) -{ - for (int pos = 0; pos < text->length(); pos++) - { - if (text->at(pos) == '\r') - { - if (text->at(pos + 1) == '\n') - { - // CRLF - if (eolModeSet == T_EOL_CR) - { - text->remove(pos + 1, 1); // Delete the LF - } - else if (eolModeSet == T_EOL_LF) - { - text->remove(pos, 1); // Delete the CR - } - else - { - pos++; - } - } - else - { - // CR - if (eolModeSet == T_EOL_CRLF) - { - text->insert(pos + 1, "\n"); // Insert LF - pos++; - } - else if (eolModeSet == T_EOL_LF) - { - text->insert(pos, "\n"); // Insert LF - text->remove(pos + 1, 1); // Delete CR - } - } - } - else if (text->at(pos) == '\n') - { - // LF - if (eolModeSet == T_EOL_CRLF) - { - text->insert(pos, "\r"); // Insert CR - pos++; - } - else if (eolModeSet == T_EOL_CR) - { - text->insert(pos, "\r"); // Insert CR - text->remove(pos + 1, 1); // Delete LF - } - } - } -} // changeLineEnds - -QString GetExtensions(void) -{ - static QRegExp repl(QString::fromLatin1("\\s*,\\s*")); - QString t(toConfigurationSingle::Instance().extensions()); - t.replace(repl, QString::fromLatin1(";;")); // multiple filters are separated by double semicolons - return t; -} - -static QString AddExt(QString t, const QString &filter) -{ - static QRegExp hasext(QString::fromLatin1("\\.[^\\/]*$")); - if (t.isEmpty()) - return t; - - toConfigurationSingle::Instance().setLastDir(t); - - if (hasext.indexIn(t) < 0) - { - static QRegExp findext(QString::fromLatin1("\\.[^ \t\r\n\\)\\|]*")); - int len = 0; - int pos = findext.indexIn(filter, 0); - len = findext.matchedLength(); - if (pos >= 0) - t += filter.mid(pos, len); - else - { - QFile file(t); - if (!file.exists()) - t += QString::fromLatin1(".sql"); - } - } - return t; -} - -/* Get encoding used to read/write files. -*/ -QTextCodec * toGetCodec(void) -{ - QString codecConf = toConfigurationSingle::Instance().encoding(); - if (codecConf == DEFAULT_ENCODING) - return QTextCodec::codecForLocale(); - else - return QTextCodec::codecForName(codecConf.toAscii()); -} // toGetCodec - -QString toExpandFile(const QString &file) -{ - QString ret(file); - QString home; - -//#ifdef Q_OS_WIN32 -// -// CRegistry registry; -// DWORD siz = 1024; -// char buffer[1024]; -// try -// { -// if (registry.GetStringValue(HKEY_LOCAL_MACHINE, -// "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", -// "Personal", -// buffer, siz)) -// { -// if (siz > 0) -// home = buffer; -// } -// } -// catch (...) -// { -// TLOG(1,toDecorator,__HERE__) << " Ignored exception." << std::endl; -// } -// -//#else - home = QDir::homePath(); -//#endif - - ret.replace(QRegExp(QString::fromLatin1("\\$HOME")), home); - return ret; -} - -QString toOpenFilename(const QString &filename, const QString &filter, QWidget *parent) -{ - QString t = filter; - QString retval; - - if (t.isEmpty()) - t = GetExtensions(); - - QFileInfo fi(filename); - if (!filename.isEmpty() && fi.absoluteDir().exists()) - retval = AddExt(TOFileDialog::getOpenFileName(parent, QObject::tr("Open File", "utils/toOpenFilename"), fi.absoluteFilePath(), t), t); - else - { - QString const& lastDir = toConfigurationSingle::Instance().lastDir(); - retval = AddExt(TOFileDialog::getOpenFileName(parent, QObject::tr("Open File", "utils/toOpenFilename"), lastDir, t), t); - } - if (!retval.isEmpty()) - toConfigurationSingle::Instance().setLastDir(retval); - return retval; -} - -QString toOpenFilename(const QString &filter, QWidget *parent) -{ - QFileInfo fi(toConfigurationSingle::Instance().lastDir()); - if ( fi.absoluteDir().exists()) - return toOpenFilename( fi.absolutePath(), filter, parent); - return toOpenFilename(QDir::currentPath(), filter, parent); -} - -QString toSaveFilename(const QString &filename, const QString &filter, QWidget *parent) -{ - QString t = filter; - if (t.isEmpty()) - t = GetExtensions(); - - QString dir = filename; - if (dir.isNull()) - dir = toConfigurationSingle::Instance().lastDir(); - - return AddExt(TOFileDialog::getSaveFileName(parent, QObject::tr("Save File", "utils/toSaveFilename"), dir, t), t); -} - -QString toReadFile(const QString &filename) -{ - QTextCodec *codec = toGetCodec(); - return codec->toUnicode(toReadFileB(filename)); -} - -QByteArray toReadFileB(const QString &filename) -{ - QString expanded = toExpandFile(filename); - // for some reason qrc:/ urls fail with QFile but are required for - // QTextBrowser - if (expanded.startsWith("qrc")) - expanded = expanded.right(expanded.length() - 3); - - QFile file(expanded); - if (!file.open(QIODevice::ReadOnly)) - throw QT_TRANSLATE_NOOP("toReadFile", "Couldn't open file %1.").arg(expanded); - - return file.readAll(); -} - -// saves a QString to filename, -// encoded according to the current locale settings -bool toWriteFile(const QString &filename, const QString &data) -{ - return toWriteFile(filename, data.toLocal8Bit()); -} - -// saves a QByteArray (binary data) to filename -bool toWriteFile(const QString &filename, const QByteArray &data) -{ - QString expanded = toExpandFile(filename); - QFile file(expanded); - if (!file.open(QIODevice::WriteOnly)) - { - TOMessageBox::warning( - toQMainWindow(), - QT_TRANSLATE_NOOP("toWriteFile", "File error"), - QT_TRANSLATE_NOOP( - "toWriteFile", - QString("Couldn't open %1 for writing").arg(filename).toAscii().constData())); - return false; - } - QTextCodec *codec = toGetCodec(); - - // Check if line end type should be changed to particular one - // Note that line end type can be changed manually via menu - QString forceLineEndSetting = toConfigurationSingle::Instance().forceLineEnd(); - if (forceLineEndSetting == "Linux" || - forceLineEndSetting == "Windows" || - forceLineEndSetting == "Mac") - { - QByteArray ba = data; - if (toConfigurationSingle::Instance().forceLineEnd() == "Linux") - changeLineEnds(&ba, T_EOL_LF); - else if (toConfigurationSingle::Instance().forceLineEnd() == "Windows") - changeLineEnds(&ba, T_EOL_CRLF); - else if (toConfigurationSingle::Instance().forceLineEnd() == "Mac") - changeLineEnds(&ba, T_EOL_CR); - file.write(codec->fromUnicode(ba)); - } - else - file.write(codec->fromUnicode(data)); - - if (file.error() != QFile::NoError) - { - TOMessageBox::warning( - toQMainWindow(), - QT_TRANSLATE_NOOP("toWriteFile", "File error"), - QT_TRANSLATE_NOOP("toWriteFile", "Couldn't write data to file")); - return false; - } - toStatusMessage(QT_TRANSLATE_NOOP("toWriteFile", "File saved successfully"), false, false); - return true; -} - -QString toFontToString(const QFont &fnt) -{ - return fnt.toString(); -} - -QFont toStringToFont(const QString &str) -{ - if (str.isEmpty()) - return QFont(QString::fromLatin1("Courier New"), 12); - QFont fnt; - if (fnt.fromString(str)) - return fnt; - - return QFont(QString::fromLatin1("Courier New"), 12); -} - QToolBar *toAllocBar(QWidget *parent, const QString &str) { QString db; @@ -1270,16 +981,6 @@ return QString::fromUtf8(arr); } -void toStatusMessage(const QString &str, bool save, bool log) -{ - // If there is no main widget yet (e.g. style init error) - // display error message in standard dialog. - if (toMainWindow::lookup()) - toGlobalEventSingle::Instance().showMessage(str, save, log); - else if (!str.isEmpty()) - QMessageBox::warning(toQMainWindow(), qApp->translate("toStatusMessage", "TOra Message"), str ); -} - QComboBox *toRefreshCreate(QWidget *parent, const char *name, const QString &def, QComboBox *item) { QComboBox *refresh; @@ -1565,13 +1266,4 @@ return true; } -/** Return next power of two for positive integer( 1=>2, 2=>4, 3=>4, 4=>8, 5=>8) */ -unsigned toNextPowerOfTwo(unsigned len) -{ - unsigned retval = 2; - while( len >>= 1) - retval <<= 1; - return retval; -} - } // namespace utils Added: branches/tora3/src/core/utils_part.cpp =================================================================== --- branches/tora3/src/core/utils_part.cpp (rev 0) +++ branches/tora3/src/core/utils_part.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -0,0 +1,363 @@ + +/* BEGIN_COMMON_COPYRIGHT_HEADER + * + * TOra - An Oracle Toolkit for DBA's and developers + * + * Shared/mixed copyright is held throughout files in this product + * + * Portions Copyright (C) 2000-2001 Underscore AB + * Portions Copyright (C) 2003-2005 Quest Software, Inc. + * Portions Copyright (C) 2004-2009 Numerous Other Contributors + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; only version 2 of + * the License is valid for this program. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * 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 + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * As a special exception, you have permission to link this program + * with the Oracle Client libraries and distribute executables, as long + * as you follow the requirements of the GNU GPL in regard to all of the + * software in the executable aside from Oracle client libraries. + * + * Specifically you are not permitted to link this program with the + * Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. + * And you are not permitted to distribute binaries compiled against + * these libraries. + * + * You may link this product with any GPL'd Qt library. + * + * All trademarks belong to their respective owners. + * + * END_COMMON_COPYRIGHT_HEADER */ + +#include "core/utils.h" +#include "core/toconf.h" +#include "core/toconfiguration.h" +#include "core/toglobalevent.h" +#include "core/tomainwindow.h" + +#include <QString> + +// A little magic to get lrefresh to work and get a check on qApp +#undef QT_TRANSLATE_NOOP +#define QT_TRANSLATE_NOOP(x,y) QTRANS(x,y) + +namespace Utils { + +QMainWindow* toQMainWindow() +{ + static QMainWindow *main = NULL; + if (main) + return main; + + QWidgetList widgets = qApp->topLevelWidgets(); + for (QWidgetList::iterator it = widgets.begin(); it != widgets.end(); it++) + { + main = dynamic_cast<QMainWindow *>((*it)); + if (main) + return main; + } + return NULL; + // TODO: throw something here +} + +// This code is taken from (Q)Scintilla source +#define T_EOL_CRLF 0 +#define T_EOL_CR 1 +#define T_EOL_LF 2 +void changeLineEnds(QByteArray * text, int eolModeSet) +{ + for (int pos = 0; pos < text->length(); pos++) + { + if (text->at(pos) == '\r') + { + if (text->at(pos + 1) == '\n') + { + // CRLF + if (eolModeSet == T_EOL_CR) + { + text->remove(pos + 1, 1); // Delete the LF + } + else if (eolModeSet == T_EOL_LF) + { + text->remove(pos, 1); // Delete the CR + } + else + { + pos++; + } + } + else + { + // CR + if (eolModeSet == T_EOL_CRLF) + { + text->insert(pos + 1, "\n"); // Insert LF + pos++; + } + else if (eolModeSet == T_EOL_LF) + { + text->insert(pos, "\n"); // Insert LF + text->remove(pos + 1, 1); // Delete CR + } + } + } + else if (text->at(pos) == '\n') + { + // LF + if (eolModeSet == T_EOL_CRLF) + { + text->insert(pos, "\r"); // Insert CR + pos++; + } + else if (eolModeSet == T_EOL_CR) + { + text->insert(pos, "\r"); // Insert CR + text->remove(pos + 1, 1); // Delete LF + } + } + } +} // changeLineEnds + +QString GetExtensions(void) +{ + static QRegExp repl(QString::fromLatin1("\\s*,\\s*")); + QString t(toConfigurationSingle::Instance().extensions()); + t.replace(repl, QString::fromLatin1(";;")); // multiple filters are separated by double semicolons + return t; +} + +static QString AddExt(QString t, const QString &filter) +{ + static QRegExp hasext(QString::fromLatin1("\\.[^\\/]*$")); + if (t.isEmpty()) + return t; + + toConfigurationSingle::Instance().setLastDir(t); + + if (hasext.indexIn(t) < 0) + { + static QRegExp findext(QString::fromLatin1("\\.[^ \t\r\n\\)\\|]*")); + int len = 0; + int pos = findext.indexIn(filter, 0); + len = findext.matchedLength(); + if (pos >= 0) + t += filter.mid(pos, len); + else + { + QFile file(t); + if (!file.exists()) + t += QString::fromLatin1(".sql"); + } + } + return t; +} + +/* Get encoding used to read/write files. +*/ +QTextCodec * toGetCodec(void) +{ + QString codecConf = toConfigurationSingle::Instance().encoding(); + if (codecConf == DEFAULT_ENCODING) + return QTextCodec::codecForLocale(); + else + return QTextCodec::codecForName(codecConf.toAscii()); +} // toGetCodec + +QString toExpandFile(const QString &file) +{ + QString ret(file); + QString home; + +//#ifdef Q_OS_WIN32 +// +// CRegistry registry; +// DWORD siz = 1024; +// char buffer[1024]; +// try +// { +// if (registry.GetStringValue(HKEY_LOCAL_MACHINE, +// "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", +// "Personal", +// buffer, siz)) +// { +// if (siz > 0) +// home = buffer; +// } +// } +// catch (...) +// { +// TLOG(1,toDecorator,__HERE__) << " Ignored exception." << std::endl; +// } +// +//#else + home = QDir::homePath(); +//#endif + + ret.replace(QRegExp(QString::fromLatin1("\\$HOME")), home); + return ret; +} + +QString toOpenFilename(const QString &filename, const QString &filter, QWidget *parent) +{ + QString t = filter; + QString retval; + + if (t.isEmpty()) + t = GetExtensions(); + + QFileInfo fi(filename); + if (!filename.isEmpty() && fi.absoluteDir().exists()) + retval = AddExt(TOFileDialog::getOpenFileName(parent, QObject::tr("Open File", "utils/toOpenFilename"), fi.absoluteFilePath(), t), t); + else + { + QString const& lastDir = toConfigurationSingle::Instance().lastDir(); + retval = AddExt(TOFileDialog::getOpenFileName(parent, QObject::tr("Open File", "utils/toOpenFilename"), lastDir, t), t); + } + if (!retval.isEmpty()) + toConfigurationSingle::Instance().setLastDir(retval); + return retval; +} + +QString toOpenFilename(const QString &filter, QWidget *parent) +{ + QFileInfo fi(toConfigurationSingle::Instance().lastDir()); + if ( fi.absoluteDir().exists()) + return toOpenFilename( fi.absolutePath(), filter, parent); + return toOpenFilename(QDir::currentPath(), filter, parent); +} + +QString toSaveFilename(const QString &filename, const QString &filter, QWidget *parent) +{ + QString t = filter; + if (t.isEmpty()) + t = GetExtensions(); + + QString dir = filename; + if (dir.isNull()) + dir = toConfigurationSingle::Instance().lastDir(); + + return AddExt(TOFileDialog::getSaveFileName(parent, QObject::tr("Save File", "utils/toSaveFilename"), dir, t), t); +} + +QString toReadFile(const QString &filename) +{ + QTextCodec *codec = toGetCodec(); + return codec->toUnicode(toReadFileB(filename)); +} + +QByteArray toReadFileB(const QString &filename) +{ + QString expanded = toExpandFile(filename); + // for some reason qrc:/ urls fail with QFile but are required for + // QTextBrowser + if (expanded.startsWith("qrc")) + expanded = expanded.right(expanded.length() - 3); + + QFile file(expanded); + if (!file.open(QIODevice::ReadOnly)) + throw QT_TRANSLATE_NOOP("toReadFile", "Couldn't open file %1.").arg(expanded); + + return file.readAll(); +} + +// saves a QString to filename, +// encoded according to the current locale settings +bool toWriteFile(const QString &filename, const QString &data) +{ + return toWriteFile(filename, data.toLocal8Bit()); +} + +// saves a QByteArray (binary data) to filename +bool toWriteFile(const QString &filename, const QByteArray &data) +{ + QString expanded = toExpandFile(filename); + QFile file(expanded); + if (!file.open(QIODevice::WriteOnly)) + { + TOMessageBox::warning( + toQMainWindow(), + QT_TRANSLATE_NOOP("toWriteFile", "File error"), + QT_TRANSLATE_NOOP( + "toWriteFile", + QString("Couldn't open %1 for writing").arg(filename).toAscii().constData())); + return false; + } + QTextCodec *codec = toGetCodec(); + + // Check if line end type should be changed to particular one + // Note that line end type can be changed manually via menu + QString forceLineEndSetting = toConfigurationSingle::Instance().forceLineEnd(); + if (forceLineEndSetting == "Linux" || + forceLineEndSetting == "Windows" || + forceLineEndSetting == "Mac") + { + QByteArray ba = data; + if (toConfigurationSingle::Instance().forceLineEnd() == "Linux") + changeLineEnds(&ba, T_EOL_LF); + else if (toConfigurationSingle::Instance().forceLineEnd() == "Windows") + changeLineEnds(&ba, T_EOL_CRLF); + else if (toConfigurationSingle::Instance().forceLineEnd() == "Mac") + changeLineEnds(&ba, T_EOL_CR); + file.write(codec->fromUnicode(ba)); + } + else + file.write(codec->fromUnicode(data)); + + if (file.error() != QFile::NoError) + { + TOMessageBox::warning( + toQMainWindow(), + QT_TRANSLATE_NOOP("toWriteFile", "File error"), + QT_TRANSLATE_NOOP("toWriteFile", "Couldn't write data to file")); + return false; + } + toStatusMessage(QT_TRANSLATE_NOOP("toWriteFile", "File saved successfully"), false, false); + return true; +} + +void toStatusMessage(const QString &str, bool save, bool log) +{ + // If there is no main widget yet (e.g. style init error) + // display error message in standard dialog. + if (toMainWindow::lookup()) + toGlobalEventSingle::Instance().showMessage(str, save, log); + else if (!str.isEmpty()) + QMessageBox::warning(toQMainWindow(), qApp->translate("toStatusMessage", "TOra Message"), str ); +} + +QString toFontToString(const QFont &fnt) +{ + return fnt.toString(); +} + +QFont toStringToFont(const QString &str) +{ + if (str.isEmpty()) + return QFont(QString::fromLatin1("Courier New"), 12); + QFont fnt; + if (fnt.fromString(str)) + return fnt; + + return QFont(QString::fromLatin1("Courier New"), 12); +} + +/** Return next power of two for positive integer( 1=>2, 2=>4, 3=>4, 4=>8, 5=>8) */ +unsigned toNextPowerOfTwo(unsigned len) +{ + unsigned retval = 2; + while( len >>= 1) + retval <<= 1; + return retval; +} + +} // namespace utils Modified: branches/tora3/src/docklets/toviewconnections.cpp =================================================================== --- branches/tora3/src/docklets/toviewconnections.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/docklets/toviewconnections.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -43,9 +43,9 @@ #include "core/toconnectionmodel.h" #include "core/tonewconnection.h" #include "core/toconnection.h" +#include "core/toconnectionregistry.h" #include "core/tooracleconst.h" #include "core/utils.h" -#include "core/tomainwindow.h" #include "core/toglobalevent.h" #include <QHeaderView> Modified: branches/tora3/src/editor/tocustomlexer.cpp =================================================================== --- branches/tora3/src/editor/tocustomlexer.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/editor/tocustomlexer.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -41,6 +41,7 @@ #include "editor/tocustomlexer.h" #include "parsing/tsqllexer.h" #include "core/utils.h" +#include "core/toconfiguration.h" #include <QDebug> #include <QColor> @@ -68,7 +69,7 @@ #elif defined(Q_OS_MAC) mono = QFont("Courier", 12); #else - mono = QFont("Bitstream Vera Sans Mono", 9); + mono = QFont(Utils::toStringToFont(toConfigurationSingle::Instance().codeFont())); #endif styleStack = QList<int>(); @@ -116,7 +117,7 @@ throw QString("Buffer allocation error"); bufferText = (char*) malloc(bufferLength); - if(bufferLength == NULL) + if(bufferText == NULL) throw QString("Buffer allocation error"); thread = new QThread(this); Modified: branches/tora3/src/editor/tohighlightedtexteditor.cpp =================================================================== --- branches/tora3/src/editor/tohighlightedtexteditor.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/editor/tohighlightedtexteditor.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -515,7 +515,7 @@ { try { - toConnection const& conn = toConnection::currentConnection(this); + //toConnection const& conn = toConnection::currentConnection(this); int curline, curcol; getCursorPosition (&curline, &curcol); Modified: branches/tora3/src/tests/test4window.cpp =================================================================== --- branches/tora3/src/tests/test4window.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/tests/test4window.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -40,7 +40,7 @@ * END_COMMON_COPYRIGHT_HEADER */ #include "tests/test4window.h" -#include "core/toworkspace.h" +//#include "core/toworkspace.h" #include "editor/tohighlightedtext.h" #include "editor/tocustomlexer.h" @@ -50,7 +50,7 @@ Test4Window::Test4Window() : Ui::Test4Window() - , Workspace(toWorkSpaceSingle::Instance()) + //, Workspace(toWorkSpaceSingle::Instance()) { Ui::Test4Window::setupUi(this); Modified: branches/tora3/src/tests/test4window.h =================================================================== --- branches/tora3/src/tests/test4window.h 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/tests/test4window.h 2013-04-03 22:46:38 UTC (rev 4606) @@ -65,7 +65,7 @@ virtual void closeEvent(QCloseEvent *event); private: - toWorkSpace &Workspace; +// toWorkSpace &Workspace; }; #endif Modified: branches/tora3/src/tools/tosandboxtool.cpp =================================================================== --- branches/tora3/src/tools/tosandboxtool.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/tools/tosandboxtool.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -1,7 +1,7 @@ #include "tools/tosandboxtool.h" #include "core/tochangeconnection.h" -#include "core/tomainwindow.h" +#include "core/toconnectionregistry.h" #include <QLayout> #include <QToolBar> Modified: branches/tora3/src/tools/toscriptschemawidget.cpp =================================================================== --- branches/tora3/src/tools/toscriptschemawidget.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/tools/toscriptschemawidget.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -44,7 +44,8 @@ #include "tools/toscripttreeitem.h" #include "core/utils.h" #include "core/tosql.h" -#include "core/tomainwindow.h" +#include "core/toquery.h" +#include "core/toconnectionregistry.h" #include "core/toglobalevent.h" static toSQL SQLSchemasMySQL("toScriptSchemaWidget:ExtractSchema", Modified: branches/tora3/src/tools/toscripttreemodel.cpp =================================================================== --- branches/tora3/src/tools/toscripttreemodel.cpp 2013-04-03 13:00:38 UTC (rev 4605) +++ branches/tora3/src/tools/toscripttreemodel.cpp 2013-04-03 22:46:38 UTC (rev 4606) @@ -43,7 +43,8 @@ #include "tools/toscripttreeitem.h" #include "core/utils.h" #include "core/tosql.h" -#include "core/tomainwindow.h" +#include "core/toquery.h" +#include "core/toconnectionregistry.h" toScriptTreeModel::toScriptTreeModel(QObject *parent) : QAbstractItemModel(parent) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |