File indexing completed on 2024-05-12 05:34:32

0001 #ifndef oxygenbaseengine_h
0002 #define oxygenbaseengine_h
0003 /*
0004 * this file is part of the oxygen gtk engine
0005 * SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0006 *
0007 * SPDX-License-Identifier: LGPL-2.0-or-later
0008 */
0009 
0010 #include <gtk/gtk.h>
0011 #include <vector>
0012 
0013 namespace Oxygen
0014 {
0015 
0016     //! forward declaration
0017     class Animations;
0018 
0019     //! base class for all engines
0020     /*! engines map pointers to GtkWidget to some data, needed for animations */
0021     class BaseEngine
0022     {
0023         public:
0024 
0025         //! constructor
0026         BaseEngine( Animations* parent ):
0027             _parent( parent ),
0028             _enabled( true )
0029         {}
0030 
0031         virtual ~BaseEngine()
0032         {}
0033 
0034         //! register widget
0035         virtual bool registerWidget( GtkWidget* widget );
0036 
0037         //! unregister widget
0038         virtual void unregisterWidget( GtkWidget* ) = 0;
0039 
0040         //! engine list
0041         typedef std::vector< BaseEngine* > List;
0042 
0043         //! enable state
0044         /*! returns true if changed */
0045         virtual bool setEnabled( bool value )
0046         {
0047             if( _enabled == value ) return false;
0048             _enabled = value;
0049             return true;
0050         }
0051 
0052         //! enable state
0053         bool enabled( void ) const
0054         { return _enabled; }
0055 
0056         protected:
0057 
0058         //! returns parent
0059         virtual Animations& parent( void ) const
0060         { return *_parent; }
0061 
0062         private:
0063 
0064         //! parent
0065         Animations* _parent;
0066 
0067         //! enable flag
0068         bool _enabled;
0069 
0070     };
0071 
0072 }
0073 
0074 #endif