File indexing completed on 2024-05-12 17:05:50

0001 #ifndef oxygentabwidgetengine_h
0002 #define oxygentabwidgetengine_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 
0011 #include "oxygengenericengine.h"
0012 #include "oxygendatamap.h"
0013 #include "oxygentabwidgetdata.h"
0014 
0015 #include <gtk/gtk.h>
0016 
0017 namespace Oxygen
0018 {
0019     //! forward declaration
0020     class Animations;
0021 
0022     //! stores data associated to editable tabwidgetes
0023     /*!
0024     ensures that the text entry and the button of editable tabwidgetes
0025     gets hovered and focus flags at the same time
0026     */
0027     class TabWidgetEngine: public GenericEngine<TabWidgetData>
0028     {
0029 
0030         public:
0031 
0032         //! constructor
0033         TabWidgetEngine( Animations* widget ):
0034             GenericEngine<TabWidgetData>( widget )
0035             {}
0036 
0037         //! destructor
0038         virtual ~TabWidgetEngine( void )
0039         {}
0040 
0041         //!@name modifiers
0042         //@{
0043 
0044         //! returns hovered tab, if any
0045         void updateTabRect( GtkWidget* widget, int index, int x, int y, int w, int h )
0046         {
0047             GdkRectangle local = { x, y, w, h };
0048             return data().value( widget ).updateTabRect( widget, index, local );
0049         }
0050 
0051         //! returns hovered tab, if any
0052         void updateTabRect( GtkWidget* widget, int index, const GdkRectangle& r )
0053         { return data().value( widget ).updateTabRect( widget, index, r ); }
0054 
0055         //! returns hovered tab, if any
0056         void updateHoveredTab( GtkWidget* widget )
0057         { return data().value( widget ).updateHoveredTab( widget ); }
0058 
0059         //! true when drag is in progress
0060         void setDragInProgress( GtkWidget* widget, bool value )
0061         { data().value( widget ).setDragInProgress( value ); }
0062 
0063         //! toggle dirty state
0064         void toggleDirty( GtkWidget* widget )
0065         { data().value( widget ).toggleDirty(); }
0066 
0067         //! true when tabbar is dirty
0068         void setDirty( GtkWidget* widget, bool value )
0069         { data().value( widget ).setDirty( value ); }
0070 
0071         //@}
0072 
0073         //!@name accessors
0074         //@{
0075 
0076         //! returns hovered tab, if any
0077         int hoveredTab( GtkWidget* widget )
0078         { return data().value( widget ).hoveredTab(); }
0079 
0080         //! returns true if provided point is in one tab of the widget
0081         bool isInTab( GtkWidget* widget, int x, int y )
0082         { return data().value( widget ).isInTab( x, y ); }
0083 
0084         //! true when drag is in progress
0085         bool dragInProgress( GtkWidget* widget )
0086         { return data().value( widget ).dragInProgress(); }
0087 
0088         //! true when tabbar is dirty
0089         bool isDirty( GtkWidget* widget )
0090         { return data().value( widget ).isDirty(); }
0091 
0092         //@}
0093 
0094     };
0095 
0096 }
0097 
0098 #endif