File indexing completed on 2024-05-05 05:34:57

0001 /*
0002     this file is part of the oxygen gtk engine
0003     SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0004     SPDX-FileCopyrightText: 2010 Ruslan Kabatsayev <b7.10110111@gmail.com>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #include "oxygenversion.h"
0010 #include "../src/oxygendefines.h"
0011 #include "config.h"
0012 
0013 #include <iostream>
0014 #include <sstream>
0015 #include <glib-object.h>
0016 #include <gtk/gtk.h>
0017 
0018 namespace Oxygen
0019 {
0020 
0021     //____________________________________________
0022     std::string Version::gtkVersion( void )
0023     {
0024         std::ostringstream buffer;
0025         buffer << gtk_major_version<< "." << gtk_minor_version << "." << gtk_micro_version;
0026         return buffer.str();
0027     }
0028 
0029     //____________________________________________
0030     std::string Version::libVersion( void )
0031     {
0032         // load type for oxygen version container
0033         GType type( g_type_from_name( OXYGEN_VERSION_TYPE_NAME ) );
0034         if( !type ) return std::string();
0035 
0036         // load quark
0037         GQuark quark( g_quark_try_string( OXYGEN_VERSION_QUARK_NAME ) );
0038         if( !quark ) return std::string();
0039 
0040         // retrieve data from type
0041         gpointer data( g_type_get_qdata( type, quark ) );
0042         return data ? std::string( static_cast<const char*>( data ) ):std::string();
0043 
0044     }
0045 
0046     //____________________________________________
0047     void Version::print( void )
0048     {
0049 
0050         std::cout << "gtk: " << gtkVersion() << std::endl;
0051 
0052         const std::string libraryVersion( libVersion() );
0053         if( !libraryVersion.empty() )
0054         { std::cout << "oxygen-gtk: " << libraryVersion << std::endl; }
0055 
0056         std::cout << "oxygen-gtk-demo: " << OXYGEN_VERSION << std::endl;
0057 
0058     }
0059 }