1 #ifndef SEEN_SP_COLOR_NOTEBOOK_H
2 #define SEEN_SP_COLOR_NOTEBOOK_H
4 /*
5 * A notebook with RGB, CMYK, CMS, HSL, and Wheel pages
6 *
7 * Author:
8 * Lauris Kaplinski <lauris@kaplinski.com>
9 *
10 * Copyright (C) 2001-2002 Lauris Kaplinski
11 *
12 * This code is in public domain
13 */
15 #include <gtk/gtkvbox.h>
16 #include <gtk/gtknotebook.h>
17 #include <gtk/gtkentry.h>
18 #include "../color.h"
19 #include "sp-color-selector.h"
21 #include <glib.h>
25 struct SPColorNotebook;
27 class ColorNotebook: public ColorSelector
28 {
29 public:
30 ColorNotebook( SPColorSelector* csel );
31 virtual ~ColorNotebook();
33 virtual void init();
35 SPColorSelector* getCurrentSelector();
36 void switchPage( GtkNotebook *notebook, GtkNotebookPage *page, guint page_num );
38 GtkWidget* addPage( GType page_type, guint submode );
39 void removePage( GType page_type, guint submode );
40 GtkWidget* getPage( GType page_type, guint submode );
42 gint menuHandler( GdkEvent* event );
44 protected:
45 static void _rgbaEntryChangedHook( GtkEntry* entry, SPColorNotebook *colorbook );
46 static void _entryGrabbed( SPColorSelector *csel, SPColorNotebook *colorbook );
47 static void _entryDragged( SPColorSelector *csel, SPColorNotebook *colorbook );
48 static void _entryReleased( SPColorSelector *csel, SPColorNotebook *colorbook );
49 static void _entryChanged( SPColorSelector *csel, SPColorNotebook *colorbook );
50 static void _entryModified( SPColorSelector *csel, SPColorNotebook *colorbook );
52 virtual void _colorChanged();
54 void _rgbaEntryChanged( GtkEntry* entry );
55 void _updateRgbaEntry( const SPColor& color, gfloat alpha );
57 gboolean _updating : 1;
58 gboolean _updatingrgba : 1;
59 gboolean _dragging : 1;
60 gulong _switchId;
61 gulong _entryId;
62 GtkWidget *_book;
63 GtkWidget *_rgbal, *_rgbae; /* RGBA entry */
64 GtkWidget *_p; /* Color preview */
65 GtkWidget *_btn;
66 GtkWidget *_popup;
67 GPtrArray *_trackerList;
69 private:
70 // By default, disallow copy constructor and assignment operator
71 ColorNotebook( const ColorNotebook& obj );
72 ColorNotebook& operator=( const ColorNotebook& obj );
73 };
77 #define SP_TYPE_COLOR_NOTEBOOK (sp_color_notebook_get_type ())
78 #define SP_COLOR_NOTEBOOK(o) (GTK_CHECK_CAST ((o), SP_TYPE_COLOR_NOTEBOOK, SPColorNotebook))
79 #define SP_COLOR_NOTEBOOK_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_NOTEBOOK, SPColorNotebookClass))
80 #define SP_IS_COLOR_NOTEBOOK(o) (GTK_CHECK_TYPE ((o), SP_TYPE_COLOR_NOTEBOOK))
81 #define SP_IS_COLOR_NOTEBOOK_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_NOTEBOOK))
83 struct SPColorNotebook {
84 SPColorSelector parent; /* Parent */
85 };
87 struct SPColorNotebookClass {
88 SPColorSelectorClass parent_class;
90 void (* grabbed) (SPColorNotebook *rgbsel);
91 void (* dragged) (SPColorNotebook *rgbsel);
92 void (* released) (SPColorNotebook *rgbsel);
93 void (* changed) (SPColorNotebook *rgbsel);
94 };
96 GType sp_color_notebook_get_type(void);
98 GtkWidget *sp_color_notebook_new (void);
100 /* void sp_color_notebook_set_mode (SPColorNotebook *csel, SPColorNotebookMode mode); */
101 /* SPColorNotebookMode sp_color_notebook_get_mode (SPColorNotebook *csel); */
105 #endif // SEEN_SP_COLOR_NOTEBOOK_H
107 /*
108 Local Variables:
109 mode:c++
110 c-file-style:"stroustrup"
111 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
112 indent-tabs-mode:nil
113 fill-column:99
114 End:
115 */
116 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :