1 #ifndef oxygenhoverengine_h
2 #define oxygenhoverengine_h
3 /*
4 * this file is part of the oxygen gtk engine
5 * Copyright (c) 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
6 * Copyright (c) 2010 Ruslan Kabatsayev <b7.10110111@gmail.com>
7 *
8 * This  library is free  software; you can  redistribute it and/or
9 * modify it  under  the terms  of the  GNU Lesser  General  Public
10 * License  as published  by the Free  Software  Foundation; either
11 * version 2 of the License, or(at your option ) any later version.
12 *
13 * This library is distributed  in the hope that it will be useful,
14 * but  WITHOUT ANY WARRANTY; without even  the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License  along  with  this library;  if not,  write to  the Free
20 * Software Foundation, Inc., 51  Franklin St, Fifth Floor, Boston,
21 * MA 02110-1301, USA.
22 */
23 
24 #include "oxygengenericengine.h"
25 #include "oxygendatamap.h"
26 #include "oxygenhoverdata.h"
27 
28 #include <gtk/gtk.h>
29 
30 namespace Oxygen
31 {
32     //! forward declaration
33     class Animations;
34 
35     //! stores data associated to editable comboboxes
36     /*!
37     ensures that the text entry and the button of editable comboboxes
38     gets hovered and focus flags at the same time
39     */
40     class HoverEngine: public GenericEngine<HoverData>
41     {
42 
43         public:
44 
45         //! constructor
HoverEngine(Animations * parent)46         HoverEngine( Animations* parent ):
47             GenericEngine<HoverData>( parent )
48             {}
49 
50         //! destructor
~HoverEngine(void)51         virtual ~HoverEngine( void )
52         {}
53 
54         //! register widget
registerWidget(GtkWidget * widget)55         virtual bool registerWidget( GtkWidget* widget )
56         { return registerWidget( widget, false ); }
57 
58         //! register widget
registerWidget(GtkWidget * widget,bool updateOnHover)59         virtual bool registerWidget( GtkWidget* widget, bool updateOnHover )
60         {
61             if( GenericEngine<HoverData>::registerWidget( widget ) )
62             {
63                 data().value(widget).setUpdateOnHover( updateOnHover );
64                 return true;
65             } else return false;
66 
67         }
68 
69         //! true if widget is hovered
hovered(GtkWidget * widget)70         bool hovered( GtkWidget* widget )
71         { return data().value( widget ).hovered(); }
72 
73         //! set hover state
setHovered(GtkWidget * widget,bool value)74         bool setHovered( GtkWidget* widget, bool value )
75         { return data().value( widget ).setHovered( widget, value ); }
76 
77     };
78 
79 }
80 
81 #endif
82