diff options
Diffstat (limited to 'src/UiGuiSettings.cpp')
-rw-r--r-- | src/UiGuiSettings.cpp | 993 |
1 files changed, 993 insertions, 0 deletions
diff --git a/src/UiGuiSettings.cpp b/src/UiGuiSettings.cpp new file mode 100644 index 0000000..b231577 --- /dev/null +++ b/src/UiGuiSettings.cpp @@ -0,0 +1,993 @@ +/*************************************************************************** +* Copyright (C) 2006-2012 by Thomas Schweitzer * +* thomas-schweitzer(at)arcor.de * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License version 2.0 as * +* published by the Free Software Foundation. * +* * +* 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 in the file LICENSE.GPL; if not, write to the * +* Free Software Foundation, Inc., * +* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * +***************************************************************************/ + +#include "UiGuiSettings.h" +#include "SettingsPaths.h" + +#include <tqdatetime.h> +#include <tqdir.h> +#include <tqpoint.h> +#include <tqsettings.h> +#include <tqsize.h> +#include <tqwidget.h> + + +/* + \class UiGuiSettings + \brief Handles the settings of the program. Reads them on startup and saves them on exit. + Is a singleton class and can only be accessed via getInstance(). +*/ + +// Inits the single class instance pointer. +UiGuiSettings *UiGuiSettings::m_instance = nullptr; + +/* + \brief The constructor for the settings. +*/ +UiGuiSettings::UiGuiSettings() : TQObject() +{ + // Create the main application settings object from the UniversalIndentGUIrc file. + m_qsettings = new TQSettings(TQSettings::Ini); + // The next lines make user the settings are always stored in + // $HOME/.universalindentgui/universalindentguirc + m_qsettings->insertSearchPath(TQSettings::Unix, SettingsPaths::getSettingsPath()); + m_qsettings->setPath("UniversalIndentGUI", "UniversalIndentGUI", TQSettings::User); + // settings are stored in the universalindentguirc file, group UniversalIndentGUI + m_qsettings->beginGroup("universalindentgui/UniversalIndentGUI"); + + m_indenterDirectoryStr = SettingsPaths::getGlobalFilesPath() + "/indenters"; + readAvailableTranslations(); + loadSettings(); +} + +/* + \brief Returns the instance of the settings class. If no instance exists, one will be created. + */ +UiGuiSettings* UiGuiSettings::getInstance() +{ + if (!m_instance) + { + // Create the settings object, which loads all UiGui settings from a file. + m_instance = new UiGuiSettings(); + } + + return m_instance; +} + +/* + \brief Deletes the existing instance of UiGuiSettings and removes the created temp dir. + */ +void UiGuiSettings::deleteInstance() +{ + SettingsPaths::cleanAndRemoveTempDir(); + if (m_instance) + { + delete m_instance; + m_instance = nullptr; + } +} + +/* + \brief The destructor saves the settings to a file. + */ +UiGuiSettings::~UiGuiSettings() +{ + saveSettings(); + delete m_qsettings; +} + +/* + \brief Scans the translations directory for available translation files and + stores them in the TQList \a m_availableTranslations. + */ +void UiGuiSettings::readAvailableTranslations() +{ + TQStringList languageFileList; + + // English is the default language. A translation file does not exist but to have a menu entry, + // added here. + languageFileList << "universalindent_en.qm"; + + // Find all translation files in the "translations" directory. + TQDir translationDirectory = TQDir(SettingsPaths::getGlobalFilesPath() + "/translations"); + for (TQString &file : translationDirectory.entryList(TQString("universalindent_*.qm"))) + { + languageFileList << file; + } + + // Loop for each found translation file + for (TQString &languageShort : languageFileList) + { + // Remove the leading string "universalindent_" from the filename. + languageShort.remove(0, 16); + // Remove trailing file extension ".qm". + languageShort.truncate(languageShort.length() - 3); + + m_availableTranslations.append(languageShort); + } +} + +/* + \brief Returns a list of the mnemonics of the available translations. + */ +TQStringList& UiGuiSettings::getAvailableTranslations() +{ + return m_availableTranslations; +} + +/* + \brief Returns the value of the by \a settingsName defined setting as TQVariant. + + If the named setting does not exist, 0 is being returned. +*/ +TQVariant UiGuiSettings::getValueByName(const TQString &settingName) const +{ + // Test if the named setting really exists. + if (m_settings.contains(settingName)) + { + return m_settings[settingName]; + } + return TQVariant(0); +} + +/* + \brief Sets the value of the by \a settingsName defined setting to the value \a value. + + The to \a settingsName corresponding signal is emitted, if the value has changed. + */ +bool UiGuiSettings::setValueByName(const TQString &settingName, TQVariant value) +{ + // Test if the named setting really exists. + if (m_settings.contains(settingName)) + { + // Test if the new value is different to the one before. + if (m_settings[settingName] != value) + { + m_settings[settingName] = value; + // Emit the signal for the changed setting. + emitSignalForSetting(settingName); + } + return true; + } + return false; +} + +/*! + \brief Loads the settings for the main application. + + Settings are for example last selected indenter, last loaded source code file and so on. +*/ +void UiGuiSettings::loadSettings() +{ + // Read the version string saved in the settings file. + m_settings["VersionInSettingsFile"] = m_qsettings->readEntry("version", TQString::null); + + // Read windows last size and position from the settings file. + m_settings["WindowIsMaximized"] = m_qsettings->readBoolEntry("maximized", false); + m_settings["WindowPosition"] = m_qsettings->readEntry("position", "@Point(50, 50)"); + m_settings["WindowSize"] = m_qsettings->readEntry("size", "@Size(800, 600)"); + + // Read last selected encoding for the opened source code file. + m_settings["FileEncoding"] = m_qsettings->readEntry("encoding", "UTF-8"); + + // Read maximum length of list for recently opened files. + m_settings["RecentlyOpenedListSize"] = m_qsettings->readNumEntry("recentlyOpenedListSize", 5); + + // Read if last opened source code file should be loaded on startup. + m_settings["LoadLastOpenedFileOnStartup"] = m_qsettings->readBoolEntry( + "loadLastSourceCodeFileOnStartup", true); + + // Read last opened source code file from the settings file. + m_settings["LastOpenedFiles"] = m_qsettings->readEntry("lastSourceCodeFile", + m_indenterDirectoryStr + "/example.cpp"); + + // Read last selected indenter from the settings file. + int selectedIndenter = m_qsettings->readNumEntry("selectedIndenter", 0); + if (selectedIndenter < 0) + { + selectedIndenter = 0; + } + m_settings["SelectedIndenter"] = selectedIndenter; + + // Read if syntax highlighting is enabled. + m_settings["SyntaxHighlightningEnabled"] = m_qsettings->readBoolEntry( + "SyntaxHighlightningEnabled", true); + + // Read if white space characters should be displayed. + m_settings["WhiteSpaceIsVisible"] = m_qsettings->readBoolEntry("whiteSpaceIsVisible", false); + + // Read if indenter parameter tool tips are enabled. + m_settings["IndenterParameterTooltipsEnabled"] = m_qsettings->readBoolEntry( + "indenterParameterTooltipsEnabled", true); + + // Read the tab width from the settings file. + m_settings["TabWidth"] = m_qsettings->readNumEntry("tabWidth", 4); + + // Read the last selected language and stores the index it has in the list of available + // translations. + TQString language = m_qsettings->readEntry("language", "en"); + int idx = m_availableTranslations.findIndex(language); + if (idx < 0) + { + idx = m_availableTranslations.findIndex("en"); // "en" is always present + } + m_settings["Language"] = idx; + + // TODO - MainWindow::saveState() missing in TQt3 + // Read the main window state. + // m_settings["MainWindowState"] = m_qsettings->readEntry("MainWindowState", "@ByteArray()"); +} + +/*! + \brief Saves the settings for the main application. + + Settings are for example last selected indenter, last loaded source code file and so on. +*/ +void UiGuiSettings::saveSettings() +{ + // Write the version string saved in the settings file. + m_qsettings->writeEntry("version", m_settings["VersionInSettingsFile"].toString()); + + // Write windows last size and position from the settings file. + m_qsettings->writeEntry("maximized", m_settings["WindowIsMaximized"].toBool()); + m_qsettings->writeEntry("position", m_settings["WindowPosition"].toString()); + m_qsettings->writeEntry("size", m_settings["WindowSize"].toString()); + + // Write last selected encoding for the opened source code file. + m_qsettings->writeEntry("encoding", m_settings["FileEncoding"].toString()); + + // Write maximum length of list for recently opened files. + m_qsettings->writeEntry("recentlyOpenedListSize", m_settings["RecentlyOpenedListSize"].toInt()); + + // Write if last opened source code file should be loaded on startup. + m_qsettings->writeEntry("loadLastSourceCodeFileOnStartup", + m_settings["LoadLastOpenedFileOnStartup"].toBool()); + + // Write last opened source code file from the settings file. + m_qsettings->writeEntry("lastSourceCodeFile", m_settings["LastOpenedFiles"].toString()); + + // Write last selected indenter from the settings file. + m_qsettings->writeEntry("selectedIndenter", m_settings["SelectedIndenter"].toInt()); + + // Write if syntax highlighting is enabled. + m_qsettings->writeEntry("SyntaxHighlightningEnabled", + m_settings["SyntaxHighlightningEnabled"].toBool()); + + // Write if white space characters should be displayed. + m_qsettings->writeEntry("whiteSpaceIsVisible", m_settings["WhiteSpaceIsVisible"].toBool()); + + // Write if indenter parameter tool tips are enabled. + m_qsettings->writeEntry("indenterParameterTooltipsEnabled", + m_settings["IndenterParameterTooltipsEnabled"].toBool()); + + // Write the tab width from the settings file. + m_qsettings->writeEntry("tabWidth", m_settings["TabWidth"].toInt()); + + // Write the last selected language and stores the index it has in the list of available + m_qsettings->writeEntry("language", m_availableTranslations[m_settings["Language"].toInt()]); + + // TODO - MainWindow::saveState() missing in TQt3 + // Write the main window state. + //m_qsettings->writeEntry("MainWindowState", m_settings["MainWindowState"].toByteArray()); +} + +void UiGuiSettings::emitSignalForSetting(TQString settingName) +{ +} + +/* + \brief Register the by \a propertyName defined property of \a obj to be connected to the setting defined by \a settingName. + + The \a propertyName must be one of those that are listed in the TQt "Properties" documentation section of a TQt Object. + All further needed info is retrieved via the \a obj's MetaObject, like the to the property bound signal. + * / +bool UiGuiSettings::registerObjectProperty(TQObject *obj, const TQString &propertyName, + const TQString &settingName) +{ + const TQMetaObject *metaObject = obj->metaObject(); + bool connectSuccess = false; + + // Connect to the objects destroyed signal, so that it will be correctly unregistered. + connectSuccess = + connect(obj, SIGNAL(destroyed(TQObject*)), this, + SLOT(unregisterObjectProperty(TQObject*))); + + int indexOfProp = metaObject->indexOfProperty(qPrintable(propertyName)); + if (connectSuccess && indexOfProp > -1) + { + TQMetaProperty mProp = metaObject->property(indexOfProp); + + // Connect to the property's value changed signal. + if (mProp.hasNotifySignal()) + { + TQMetaMethod signal = mProp.notifySignal(); + //TQString teststr = qPrintable(SIGNAL() + TQString(signal.signature())); + // The command "SIGNAL() + TQString(signal.signature())" assembles the signal methods + // signature to a valid TQt SIGNAL. + connectSuccess = + connect(obj, qPrintable(SIGNAL() + TQString(signal.signature())), this, + SLOT(handleObjectPropertyChange())); + } + + if (connectSuccess) + { + m_registeredObjectProperties[obj] = TQStringList() << propertyName << settingName; + } + else + { + //TODO: Write a debug warning to the log. + disconnect(obj, SIGNAL(destroyed(TQObject*)), this, + SLOT(unregisterObjectProperty(TQObject*))); + return false; + } + + // If setting already exists, set the objects property to the setting value. + if (m_qsettings->contains("UniversalIndentGUI/" + settingName)) + { + mProp.write(obj, m_qsettings->value("UniversalIndentGUI/" + settingName)); + } + // Otherwise add the setting and set it to the value of the objects property. + else + { + m_qsettings->setValue("UniversalIndentGUI/" + settingName, mProp.read(obj)); + } + } + else + { + //TODO: Write a debug warning to the log. + disconnect(obj, SIGNAL(destroyed(TQObject*)), this, SLOT(unregisterObjectProperty(TQObject*))); + return false; + } + + return true; +} + +//* + \brief Assigns the by \a settingName defined setting value to the by \a propertyName defined property of \a obj. + + Returns true, if the value could be assigned, otherwise returns false, which is the case if settingName doesn't exist + within the settings or if the mentioned propertyName wasn't found for the \a obj. + * / +bool UiGuiSettings::setObjectPropertyToSettingValue(TQObject *obj, const TQString &propertyName, + const TQString &settingName) +{ + const TQMetaObject *metaObject = obj->metaObject(); + + int indexOfProp = metaObject->indexOfProperty(qPrintable(propertyName)); + if (indexOfProp > -1) + { + TQMetaProperty mProp = metaObject->property(indexOfProp); + + // If setting already exists, set the objects property to the setting value. + if (m_qsettings->contains("UniversalIndentGUI/" + settingName)) + { + mProp.write(obj, m_qsettings->value("UniversalIndentGUI/" + settingName)); + } + // The setting didn't exist so return that setting the objects property failed. + else + { + //TODO: Write a debug warning to the log. + return false; + } + } + else + { + //TODO: Write a debug warning to the log. + return false; + } + + return true; +} + +/* + \brief Searches the child TQObjects of \a obj for a property name and setting name definition within + their custom properties and sets each property to settings value. + + The custom properties, for which are searched, are "connectedPropertyName" and "connectedSettingName", + where "connectedPropertyName" is the name of a TQObject property as it is documented in the TQtDocs, and + "connectedSettingName" is the name of a setting here within UiGuiSettings. + + Returns true, if all found property and setting definitions could be successfully registered. + Returns false, if any of those registrations fails. + * / +bool UiGuiSettings::setObjectPropertyToSettingValueRecursive(TQObject *obj) +{ + return checkCustomPropertiesAndCallFunction(obj, &UiGuiSettings::setObjectPropertyToSettingValue); +} + +/* + \brief Assigns the by \a propertyName defined property's value of \a obj to the by \a settingName defined setting. + + If the \a settingName didn't exist yet, it will be created. + + Returns true, if the value could be assigned, otherwise returns false, which is the case if the mentioned + propertyName wasn't found for the \a obj. + * / +bool UiGuiSettings::setSettingToObjectPropertyValue(TQObject *obj, const TQString &propertyName, + const TQString &settingName) +{ + const TQMetaObject *metaObject = obj->metaObject(); + + int indexOfProp = metaObject->indexOfProperty(qPrintable(propertyName)); + if (indexOfProp > -1) + { + TQMetaProperty mProp = metaObject->property(indexOfProp); + + setValueByName(settingName, mProp.read(obj)); + } + else + { + //TODO: Write a debug warning to the log. + return false; + } + + return true; +} + +/* + \brief Searches the child TQObjects of \a obj for a property name and setting name definition within + their custom properties and sets each setting to the property value. + + The custom properties, for which are searched, are "connectedPropertyName" and "connectedSettingName", + where "connectedPropertyName" is the name of a TQObject property as it is documented in the TQtDocs, and + "connectedSettingName" is the name of a setting here within UiGuiSettings. If the settingName + didn't exist yet, it will be created. + + Returns true, if all found property and setting definitions could be successfully registered. + Returns false, if any of those registrations fails. + * / +bool UiGuiSettings::setSettingToObjectPropertyValueRecursive(TQObject *obj) +{ + return checkCustomPropertiesAndCallFunction(obj, &UiGuiSettings::setSettingToObjectPropertyValue); +} + +/* + \brief Iterates over all \a objs child TQObjects and checks whether they have the custom properties + "connectedPropertyName" and "connectedSettingName" set. If both are set, it invokes the \a callBackFunc + with both. + * / +bool UiGuiSettings::checkCustomPropertiesAndCallFunction(TQObject *obj, bool (UiGuiSettings::*callBackFunc)( + TQObject *obj, const TQString &propertyName, + const TQString &settingName)) +{ + bool success = true; + + // Find all widgets that have PropertyName and SettingName defined in their style sheet. + TQList<TQObject*> allObjects = obj->findChildren<TQObject*>(); + foreach(TQObject * object, allObjects) + { + TQString propertyName = object->property("connectedPropertyName").toString(); + TQString settingName = object->property("connectedSettingName").toString(); + + // If property and setting name were found, register that widget with the settings. + if (!propertyName.isEmpty() && !settingName.isEmpty()) + { + success &= (this->*callBackFunc)(object, propertyName, settingName); + } + } + + return success; +} + +/* + \brief The with a certain property registered \a obj gets unregistered. + * / +void UiGuiSettings::unregisterObjectProperty(TQObject *obj) +{ + if (m_registeredObjectProperties.contains(obj)) + { + const TQMetaObject *metaObject = obj->metaObject(); + TQString propertyName = m_registeredObjectProperties[obj].first(); + TQString settingName = m_registeredObjectProperties[obj].last(); + + bool connectSuccess = false; + int indexOfProp = metaObject->indexOfProperty(qPrintable(propertyName)); + if (indexOfProp > -1) + { + TQMetaProperty mProp = metaObject->property(indexOfProp); + + // Disconnect to the property's value changed signal. + if (mProp.hasNotifySignal()) + { + TQMetaMethod signal = mProp.notifySignal(); + // The command "SIGNAL() + TQString(signal.signature())" assembles the signal methods + // signature to a valid TQt SIGNAL. + connectSuccess = disconnect(obj, qPrintable(SIGNAL() + TQString( + signal.signature())), this, SLOT(handleObjectPropertyChange())); + } + } + m_registeredObjectProperties.remove(obj); + } +} + +/* + \brief Registers a slot form the \a obj by its \a slotName to be invoked, if the by \a settingName defined + setting changes. + + The registered slot may have no parameters or exactly one. If it accepts one parameter, whenever the setting + \a settingName changes the slot gets tried to be invoked with the settings value as parameter. This only works, + if the slot parameter is of the same type as the setting. + * / +bool UiGuiSettings::registerObjectSlot(TQObject *obj, const TQString &slotName, + const TQString &settingName) +{ + const TQMetaObject *metaObject = obj->metaObject(); + + bool connectSuccess = false; + // Connect to the objects destroyed signal, so that it will be correctly unregistered. + connectSuccess = + connect(obj, SIGNAL(destroyed(TQObject*)), this, SLOT(unregisterObjectSlot(TQObject*))); + + TQString normalizedSlotName = TQMetaObject::normalizedSignature(qPrintable(slotName)); + int indexOfMethod = metaObject->indexOfMethod(qPrintable(normalizedSlotName)); + if (connectSuccess && indexOfMethod > -1) + { + TQMetaMethod mMethod = metaObject->method(indexOfMethod); + //TQMetaMethod::Access access = mMethod.access(); + //TQMetaMethod::MethodType methType = mMethod.methodType(); + + // Since the method can at maximum be invoked with the setting value as argument, + // only methods taking max one argument are allowed. + if (mMethod.parameterTypes().size() <= 1) + { + m_registeredObjectSlots.insert(obj, TQStringList() << normalizedSlotName << settingName); + } + else + { + //TODO: Write a debug warning to the log. + disconnect(obj, SIGNAL(destroyed(TQObject*)), this, SLOT(unregisterObjectSlot(TQObject*))); + return false; + } + } + else + { + //TODO: Write a debug warning to the log. + disconnect(obj, SIGNAL(destroyed(TQObject*)), this, SLOT(unregisterObjectSlot(TQObject*))); + return false; + } + + return true; +} + +/* + \brief If \a obj, \a slotName and \a settingName are given, that certain connection is unregistered. + If only \a obj is given, all to this object registered slot-setting connections are unregistered. + * / +void UiGuiSettings::unregisterObjectSlot(TQObject *obj, const TQString &slotName, + const TQString &settingName) +{ + //const TQMetaObject *metaObject = obj->metaObject(); + TQString normalizedSlotName = TQMetaObject::normalizedSignature(qPrintable(slotName)); + TQMutableMapIterator<TQObject*, TQStringList> it(m_registeredObjectSlots); + while (it.hasNext()) + { + it.next(); + if (it.key() == obj && slotName.isEmpty() && settingName.isEmpty()) + { + it.remove(); + } + else if (it.key() == obj && it.value().first() == slotName && it.value().last() == settingName) + { + it.remove(); + } + } +} + +/* + \brief This private slot gets invoked whenever a registered objects property changes + and distributes the new value to all other to the same settingName registered objects. + * / +void UiGuiSettings::handleObjectPropertyChange() +{ + TQObject *obj = TQObject::sender(); + TQString className = obj->metaObject()->className(); + const TQMetaObject *metaObject = obj->metaObject(); + TQString propertyName = m_registeredObjectProperties[obj].first(); + TQString settingName = m_registeredObjectProperties[obj].last(); + + int indexOfProp = metaObject->indexOfProperty(qPrintable(propertyName)); + if (indexOfProp > -1) + { + TQMetaProperty mProp = metaObject->property(indexOfProp); + setValueByName(settingName, mProp.read(obj)); + } +} + +/* + \brief Sets the setting defined by \a settingName to \a value. + + When setting a changed value, all to this settingName registered objects get + the changed value set too. + If the \a settingName didn't exist yet, it will be created. + * / +void UiGuiSettings::setValueByName(const TQString &settingName, const TQVariant &value) +{ + // Do the updating only, if the setting was really changed. + if (m_qsettings->value("UniversalIndentGUI/" + settingName) != value) + { + m_qsettings->setValue("UniversalIndentGUI/" + settingName, value); + + // Set the new value for all registered object properties for settingName. + for (TQMap<TQObject*, TQStringList>::ConstIterator it = m_registeredObjectProperties.begin(); + it != m_registeredObjectProperties.end(); ++it) + { + if (it.value().last() == settingName) + { + TQObject *obj = it.key(); + const TQMetaObject *metaObject = obj->metaObject(); + TQString propertyName = it.value().first(); + + int indexOfProp = metaObject->indexOfProperty(qPrintable(propertyName)); + if (indexOfProp > -1) + { + TQMetaProperty mProp = metaObject->property(indexOfProp); + mProp.write(obj, value); + } + } + } + + // Invoke all registered object methods for settingName. + for (TQMap<TQObject*, TQStringList>::ConstIterator it = m_registeredObjectSlots.begin(); + it != m_registeredObjectSlots.end(); ++it) + { + if (it.value().last() == settingName) + { + TQObject *obj = it.key(); + const TQMetaObject *metaObject = obj->metaObject(); + TQString slotName = it.value().first(); + + int indexOfMethod = metaObject->indexOfMethod(qPrintable(slotName)); + if (indexOfMethod > -1) + { + TQMetaMethod mMethod = metaObject->method(indexOfMethod); + //TQMetaMethod::Access access = mMethod.access(); + //TQMetaMethod::MethodType methType = mMethod.methodType(); + + bool success = false; + + // Handle registered slots taking one parameter. + if (mMethod.parameterTypes().size() == 1) + { + if (mMethod.parameterTypes().first() == value.typeName()) + { + success = invokeMethodWithValue(obj, mMethod, value); + } + } + // Handle registered slots taking zero parameters. + else + { + success = mMethod.invoke(obj, TQt::DirectConnection); + } + + if (success == false) + { + // TODO: Write a warning to the log if no success. + } + } + } + } + } +} + +#include <tqbitarray.h> +#include <tqbitmap.h> +#include <tqbrush.h> +#include <tqcursor.h> +#include <tqdatetime.h> +#include <tqfont.h> +#include <tqicon.h> +#include <tqkeysequence.h> +#include <tqlocale.h> +#include <tqpalette.h> +#include <tqpen.h> +#include <tqsizepolicy.h> +#include <tqtextformat.h> +#include <tqtextlength.h> +#include <tqurl.h> +#if TQT_VERSION >= 0x040600 + #include <tqmatrix4x4.h> + #include <tqvector2d.h> +#endif + +bool UiGuiSettings::invokeMethodWithValue(TQObject *obj, TQMetaMethod mMethod, TQVariant value) +{ + switch (value.type()) + { + case TQVariant::BitArray: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQBitArray, value.toBitArray())); + } + + case TQVariant::Bitmap: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQBitmap, value.value<TQBitmap>())); + } + + case TQVariant::Bool: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(bool, value.toBool())); + } + + case TQVariant::Brush: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQBrush, value.value<TQBrush>())); + } + + case TQVariant::ByteArray: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQByteArray, value.toByteArray())); + } + + case TQVariant::Char: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQChar, value.toChar())); + } + + case TQVariant::Color: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQColor, value.value<TQColor>())); + } + + case TQVariant::Cursor: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQCursor, value.value<TQCursor>())); + } + + case TQVariant::Date: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQDate, value.toDate())); + } + + case TQVariant::DateTime: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQDateTime, value.toDateTime())); + } + + case TQVariant::Double: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(double, value.toDouble())); + } + + case TQVariant::Font: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQFont, value.value<TQFont>())); + } + + case TQVariant::Hash: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQVariantHash, value.toHash())); + } + + case TQVariant::Icon: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQIcon, value.value<TQIcon>())); + } + + case TQVariant::Image: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQImage, value.value<TQImage>())); + } + + case TQVariant::Int: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(int, value.toInt())); + } + + case TQVariant::KeySequence: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQKeySequence, + value.value<TQKeySequence>())); + } + + case TQVariant::Line: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQLine, value.toLine())); + } + + case TQVariant::LineF: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQLineF, value.toLineF())); + } + + case TQVariant::List: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQVariantList, value.toList())); + } + + case TQVariant::Locale: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQLocale, value.toLocale())); + } + + case TQVariant::LongLong: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(qlonglong, value.toLongLong())); + } + + case TQVariant::Map: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQVariantMap, value.toMap())); + } + + case TQVariant::Matrix: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQMatrix, value.value<TQMatrix>())); + } + + case TQVariant::Transform: + { + return mMethod.invoke(obj, TQt::DirectConnection, + Q_ARG(TQTransform, value.value<TQTransform>())); + } + +#if TQT_VERSION >= 0x040600 + case TQVariant::Matrix4x4: + { + return mMethod.invoke(obj, TQt::DirectConnection, + Q_ARG(TQMatrix4x4, value.value<TQMatrix4x4>())); + } + +#endif + case TQVariant::Palette: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQPalette, value.value<TQPalette>())); + } + + case TQVariant::Pen: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQPen, value.value<TQPen>())); + } + + case TQVariant::Pixmap: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQPixmap, value.value<TQPixmap>())); + } + + case TQVariant::Point: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQPoint, value.toPoint())); + } + + // case TQVariant::PointArray : + // return Q_ARG(TQPointArray, value.value<TQPointArray>()) ); + case TQVariant::PointF: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQPointF, value.toPointF())); + } + + case TQVariant::Polygon: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQPolygon, value.value<TQPolygon>())); + } + +#if TQT_VERSION >= 0x040600 + case TQVariant::Quaternion: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQQuaternion, + value.value<TQQuaternion>())); + } + +#endif + case TQVariant::Rect: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQRect, value.toRect())); + } + + case TQVariant::RectF: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQRectF, value.toRectF())); + } + + case TQVariant::RegExp: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQRegExp, value.toRegExp())); + } + + case TQVariant::Region: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQRegion, value.value<TQRegion>())); + } + + case TQVariant::Size: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQSize, value.toSize())); + } + + case TQVariant::SizeF: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQSizeF, value.toSizeF())); + } + + case TQVariant::SizePolicy: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQSizePolicy, + value.value<TQSizePolicy>())); + } + + case TQVariant::String: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQString, value.toString())); + } + + case TQVariant::StringList: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQStringList, value.toStringList())); + } + + case TQVariant::TextFormat: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQTextFormat, + value.value<TQTextFormat>())); + } + + case TQVariant::TextLength: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQTextLength, + value.value<TQTextLength>())); + } + + case TQVariant::Time: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQTime, value.toTime())); + } + + case TQVariant::UInt: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(uint, value.toUInt())); + } + + case TQVariant::ULongLong: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(qulonglong, value.toULongLong())); + } + + case TQVariant::Url: + { + return mMethod.invoke(obj, TQt::DirectConnection, Q_ARG(TQUrl, value.toUrl())); + } + +#if TQT_VERSION >= 0x040600 + case TQVariant::Vector2D: + { + return mMethod.invoke(obj, TQt::DirectConnection, + Q_ARG(TQVector2D, value.value<TQVector2D>())); + } + + case TQVariant::Vector3D: + { + return mMethod.invoke(obj, TQt::DirectConnection, + Q_ARG(TQVector3D, value.value<TQVector3D>())); + } + + case TQVariant::Vector4D: + { + return mMethod.invoke(obj, TQt::DirectConnection, + Q_ARG(TQVector4D, value.value<TQVector4D>())); + } + +#endif + default: + { + return false; + } + } +} +*/ + +#include "UiGuiSettings.moc" |