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

0001 #ifndef oxygensignal_h
0002 #define oxygensignal_h
0003 
0004 /*
0005 * this file is part of the oxygen gtk engine
0006 * SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0007 *
0008 * SPDX-License-Identifier: LGPL-2.0-or-later
0009 */
0010 
0011 #include <gtk/gtk.h>
0012 #include <cassert>
0013 #include <string>
0014 
0015 namespace Oxygen
0016 {
0017     //! handles gtk signal connections
0018     class Signal
0019     {
0020         public:
0021 
0022         //! constructor
0023         Signal( void ):
0024             _id(0),
0025             _object(0L)
0026         {}
0027 
0028         //! destructor
0029         virtual ~Signal( void )
0030         {}
0031 
0032         //! true if connected
0033         bool isConnected( void ) const
0034         { return _id > 0 && _object; }
0035 
0036         //! connect
0037         bool connect( GObject*, const std::string&, GCallback, gpointer, bool after=false );
0038 
0039         //! disconnect
0040         void disconnect( void );
0041 
0042         private:
0043 
0044         //! signal id
0045         guint _id;
0046 
0047         //! connected object
0048         GObject* _object;
0049 
0050     };
0051 
0052 }
0053 #endif