#include <PersistenceManager.h>
Static Public Member Functions | |
| static QVariant | fromProperties (const QObject *) |
| Convert the properties of a QObject to a QVariant. | |
| static QUuid | getUuidFromProperties (const QObject *) |
| Gets the UUID of a QObject. | |
| static void | loadProperties (QObject *, QVariant) |
| Sets the properties of a QObject from a QVariant. | |
| static bool | loadWorkspace (QString filepath) |
| Loads the whole Application workspace from a CamiTK file. | |
| static bool | saveWorkspace (QString filepath) |
| Save the whole Application workspace including components, settings (e.g. | |
| static bool | setUuidInProperties (QObject *, QUuid) |
| Sets the UUID of a QObject. | |
| static void | updateVariantValueWhilePreservingType (QVariant &variant, QVariant &newValue, QString name="") |
| Update the variant value while trying to preserve its type. | |
Static Protected Member Functions | |
| static QVariant | fromComponents (QList< Component * >, QDir rootPath) |
| Converts component's filename and properties to QVariant. | |
| static bool | loadComponents (QVariant, QDir rootPath) |
| Loads/Open the components from the QVariant and update the property values accordingly. | |
| static QVariant | stringToVariant (QString value) |
| returns a valid QVariant for specific types corresponding to a specific string representation | |
| static QString | variantToString (const QVariant &variant) |
| returns a specific string representation of (limited list of) some specific QVariant types | |
|
staticprotected |
Converts component's filename and properties to QVariant.
| rootPath | Filenames of the components will be stored relative to this path (if rootPath is /tmp, filename /tmp/test/t.obj will be saved as test/t.obj) |
Referenced by saveWorkspace().
|
static |
Convert the properties of a QObject to a QVariant.
This function is used to easily implement PersistenceInterface for a custom class that derives from QObject and uses its property system. It reads the object's properties and returns them in a QVariant
References camitk::Property::getProperty(), camitk::Property::getReadOnly(), and variantToString().
Referenced by saveWorkspace(), camitk::Action::toVariant(), and camitk::Component::toVariant().
|
static |
Gets the UUID of a QObject.
This function is used to easily implement PersistenceInterface for a custom class that derives from QObject and uses its property system to store its unique identifier (QUuid). If the object does not have the "uuid" property, this returns an invalid QUuid
Referenced by camitk::Component::getUuid().
|
staticprotected |
Loads/Open the components from the QVariant and update the property values accordingly.
| rootPath | the root path to decipher the filename (which should be relative) |
References CAMITK_WARNING_ALT, camitk::Component::fromVariant(), and camitk::Application::open().
Referenced by loadWorkspace().
|
static |
Sets the properties of a QObject from a QVariant.
This function is used to easily implement PersistenceInterface for a custom class that derives from QObject and uses its property system. It sets the properties of the object from the content of a QVariant.
References updateVariantValueWhilePreservingType().
Referenced by camitk::Action::fromVariant(), camitk::Component::fromVariant(), camitk::PropertyObject::fromVariant(), and loadWorkspace().
|
static |
Loads the whole Application workspace from a CamiTK file.
This includes components, geometry (frames, transformations), window settings...
References CAMITK_WARNING_ALT, camitk::PropertyObject::fromVariant(), camitk::TransformationManager::fromVariant(), camitk::CamiTKFile::getContent(), camitk::Application::getMainWindow(), camitk::Application::getName(), camitk::Application::getPropertyObject(), camitk::Viewer::getPropertyObject(), camitk::CamiTKFile::getVersion(), camitk::Application::getViewer(), camitk::CamiTKFile::hasContent(), camitk::CamiTKFile::isValid(), camitk::CamiTKFile::load(), loadComponents(), loadProperties(), and camitk::CamiTKFile::version.
Referenced by camitk::Application::loadWorkspace().
|
static |
Save the whole Application workspace including components, settings (e.g.
viewers configuration, rendering options...), frames and transformations, action settings
References camitk::CamiTKFile::addContent(), fromComponents(), fromProperties(), camitk::Application::getAction(), camitk::Application::getMainWindow(), camitk::Application::getName(), camitk::Application::getPropertyObject(), camitk::Application::getTopLevelComponents(), camitk::Application::getViewers(), camitk::CamiTKFile::save(), camitk::PropertyObject::toVariant(), and camitk::TransformationManager::toVariant().
Referenced by camitk::Application::saveWorkspace().
|
static |
Sets the UUID of a QObject.
This function is used to easily implement PersistenceInterface for a custom class that derives from QObject and uses its property system to store its unique identifier (QUuid). The UUID will be stored in the "uuid" property.
Referenced by camitk::Component::setUuid().
|
staticprotected |
returns a valid QVariant for specific types corresponding to a specific string representation
This method use a specific string representation as produced by the variantToString(..) method to build a QVariant of the corresponding specific user type if possible.
The supported types are the same the one defined in the variantToString(..). See QSettings::stringToVariant https://codebrowser.dev/qt5/qtbase/src/corelib/io/qsettings.cpp.html#477
Referenced by updateVariantValueWhilePreservingType().
|
static |
Update the variant value while trying to preserve its type.
This function updates the value of the given variant using the value of the newValue QVariant while preserving the QVariant type defined in variant (when possible). Note that name is informational only abd used for debug reason to print a more comprehensible message when preserving the type of variant is not possible.
Example: myVariant = QVariant<QUrl>("http://example.com"); newVariantValue = QVariant<QString>("http://newerexample.com"); updatePreservingType(myVariant, newVariantValue, "my url"); oldVariant is now a QUrl (not a QString) but with the new content "http://newerexample.com"
This is useful as saving to JSON might lose the type e.g. QUrl -> QString, QUuid -> QString
To properly restore variants (e.g. Property or Settings), without modifying the QVariant types, the type must be infered from the existing variant.
WARNING: if the given variant does not have the same structure as the newValue, data may not be copied. e.g. copying a QList<QString> into a QString will result in an empty QString.
References CAMITK_TRACE_ALT, stringToVariant(), and updateVariantValueWhilePreservingType().
Referenced by loadProperties(), and updateVariantValueWhilePreservingType().
|
staticprotected |
returns a specific string representation of (limited list of) some specific QVariant types
The value of QRect and QByteArray values cannot be recovered directly from a QString if some specific conversion are not taken care of. For instance, as JSON has 6 predefined data types many QVariant types will be stored as QString or cannot be handle specifically during serialization and deserialization.
This methods reproduces the same principle as QSettings in order to use specific strings for specific QVariant type.
See QSettings::variantToString method https://codebrowser.dev/qt5/qtbase/src/corelib/io/qsettings.cpp.html#395
As for now only the following types are supported
Referenced by fromProperties().