~blue-shell-next/carbon-gtk/master

« back to all changes in this revision

Viewing changes to src/animations/oxygencomboboxentryengine.h

  • Committer: David Edmundson
  • Date: 2015-02-11 15:48:54 UTC
  • Revision ID: git-v1:ed61428ce6f52c8b8551e5efd0cdc4f2ad956719
RenameĀ files

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef oxygencomboboxentryengine_h
2
 
#define oxygencomboboxentryengine_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
 
*
7
 
* This  library is free  software; you can  redistribute it and/or
8
 
* modify it  under  the terms  of the  GNU Lesser  General  Public
9
 
* License  as published  by the Free  Software  Foundation; either
10
 
* version 2 of the License, or(at your option ) any later version.
11
 
*
12
 
* This library is distributed  in the hope that it will be useful,
13
 
* but  WITHOUT ANY WARRANTY; without even  the implied warranty of
14
 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
 
* Lesser General Public License for more details.
16
 
*
17
 
* You should have received a copy of the GNU Lesser General Public
18
 
* License  along  with  this library;  if not,  write to  the Free
19
 
* Software Foundation, Inc., 51  Franklin St, Fifth Floor, Boston,
20
 
* MA 02110-1301, USA.
21
 
*/
22
 
 
23
 
 
24
 
#include "oxygengenericengine.h"
25
 
#include "oxygendatamap.h"
26
 
#include "oxygencomboboxentrydata.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 comboboxentryes
36
 
    /*!
37
 
    ensures that the text entry and the button of editable comboboxentryes
38
 
    gets hovered and focus flags at the same time
39
 
    */
40
 
    class ComboBoxEntryEngine: public GenericEngine<ComboBoxEntryData>
41
 
    {
42
 
 
43
 
        public:
44
 
 
45
 
        //! constructor
46
 
        ComboBoxEntryEngine( Animations* widget ):
47
 
            GenericEngine<ComboBoxEntryData>( widget )
48
 
            {}
49
 
 
50
 
        //! destructor
51
 
        virtual ~ComboBoxEntryEngine( void )
52
 
        {}
53
 
 
54
 
        //!@name modifiers
55
 
        //@{
56
 
 
57
 
        //! assign button to data matching widget
58
 
        void setButton( GtkWidget* widget, GtkWidget* value )
59
 
        { data().value( widget ).setButton( value ); }
60
 
 
61
 
        //! assign entry to data matching widget
62
 
        void setEntry( GtkWidget* widget, GtkWidget* value )
63
 
        { data().value( widget ).setEntry( value ); }
64
 
 
65
 
        //! button focus
66
 
        void setButtonFocus( GtkWidget* widget, bool value )
67
 
        { data().value( widget ).setButtonFocus( value ); }
68
 
 
69
 
         //! button focus
70
 
        void setButtonHovered( GtkWidget* widget, bool value )
71
 
        { data().value( widget ).setButtonHovered( value ); }
72
 
 
73
 
        //! entry focus
74
 
        void setEntryFocus( GtkWidget* widget, bool value )
75
 
        { data().value( widget ).setEntryFocus( value ); }
76
 
 
77
 
        //@}
78
 
 
79
 
        //!@name accessors
80
 
        //@{
81
 
 
82
 
        //! returns pressed combobox if any
83
 
        inline GtkWidget* find( GtkWidget* );
84
 
 
85
 
        //! true if either button or entry has focus
86
 
        bool hasFocus( GtkWidget* widget )
87
 
        { return data().value( widget ).hasFocus(); }
88
 
 
89
 
        //! true if comboBox is hovered
90
 
        bool hovered( GtkWidget* widget )
91
 
        { return data().value( widget ).hovered(); }
92
 
 
93
 
        //@}
94
 
 
95
 
    };
96
 
 
97
 
    //_________________________________________________
98
 
    GtkWidget* ComboBoxEntryEngine::find( GtkWidget* value )
99
 
    {
100
 
        GtkWidget* topLevel( gtk_widget_get_toplevel( value ) );
101
 
        DataMap<ComboBoxEntryData>::Map& dataMap( data().map() );
102
 
        for( DataMap<ComboBoxEntryData>::Map::iterator iter = dataMap.begin(); iter != dataMap.end(); iter++ )
103
 
        {
104
 
            if( iter->second.pressed() )
105
 
            {
106
 
                iter->second.setList( topLevel );
107
 
                return iter->first;
108
 
            }
109
 
        }
110
 
 
111
 
        for( DataMap<ComboBoxEntryData>::Map::iterator iter = dataMap.begin(); iter != dataMap.end(); iter++ )
112
 
        { if( iter->second.list() == topLevel ) return iter->first; }
113
 
 
114
 
        return 0L;
115
 
 
116
 
    }
117
 
 
118
 
}
119
 
 
120
 
#endif