1 #include <gtk/gtk.h>
2 #include "ge-support.h"
3 
4 typedef struct _ThiniceRcStyle ThiniceRcStyle;
5 typedef struct _ThiniceRcStyleClass ThiniceRcStyleClass;
6 
7 #define THINICE_TYPE_RC_STYLE              (thinice_rc_style_get_type ())
8 #define THINICE_RC_STYLE(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), THINICE_TYPE_RC_STYLE, ThiniceRcStyle))
9 #define THINICE_RC_STYLE_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), THINICE_TYPE_RC_STYLE, ThiniceRcStyleClass))
10 #define THINICE_IS_RC_STYLE(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), THINICE_TYPE_RC_STYLE))
11 #define THINICE_IS_RC_STYLE_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), THINICE_TYPE_RC_STYLE))
12 #define THINICE_RC_STYLE_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), THINICE_TYPE_RC_STYLE, ThiniceRcStyleClass))
13 
14 typedef enum {
15   THINICE_FLAG_SCROLLBAR_TYPE      = 1 << 0,
16   THINICE_FLAG_SCROLLBAR_MARKS     = 1 << 1,
17   THINICE_FLAG_SCROLL_BUTTON_MARKS = 1 << 2,
18   THINICE_FLAG_HANDLEBOX_MARKS     = 1 << 3,
19   THINICE_FLAG_MARK_TYPE1          = 1 << 4,
20   THINICE_FLAG_MARK_TYPE2          = 1 << 5,
21   THINICE_FLAG_PANED_DOTS          = 1 << 6
22 } ThiniceRcFlags;
23 
24 struct _ThiniceRcStyle
25 {
26   GtkRcStyle parent_instance;
27 
28   ThiniceRcFlags flags;
29   guint scrollbar_type:1;
30   guint scrollbar_marks:1;
31   guint scroll_button_marks:1;
32   guint handlebox_marks:1;
33   guint mark_type1;
34   guint mark_type2;
35   guint paned_dots;
36 };
37 
38 struct _ThiniceRcStyleClass
39 {
40   GtkRcStyleClass parent_class;
41 };
42 
43 GE_INTERNAL void  thinice_rc_style_register_types (GTypeModule *module);
44 GE_INTERNAL GType thinice_rc_style_get_type       (void);
45 
46 /* Default stuff */
47 #define DEFAULT_SCROLLSHAPE       SCROLL_SHAPED
48 #define DEFAULT_SCROLLBARMARKS    MARKS_ON
49 #define DEFAULT_SCROLLBUTTONMARKS MARKS_ON
50 #define DEFAULT_HANDLEBOXMARKS    MARKS_ON
51 #define DEFAULT_MARKTYPE1         MARKS_SLASH
52 #define DEFAULT_MARKTYPE2         MARKS_INVSLASH
53 #define DEFAULT_PANEDDOTS         PANED_DOTSFULL
54 
55 #define DEFAULT_SCROLLTHUMB_SIZE  12
56 #define DEFAULT_MIN_SLIDER_SIZE   9
57 #define SMALLEST_HANDLE           17
58 
59 enum
60   {
61     TOKEN_RECTSCROLLBAR = G_TOKEN_LAST + 1,
62     TOKEN_SCROLLBARMARKS,
63     TOKEN_SCROLLBUTTONMARKS,
64     TOKEN_HANDLEBOXMARKS,
65     TOKEN_MARKTYPE1,
66     TOKEN_MARKTYPE2,
67     TOKEN_PANEDDOTS,
68 
69     TOKEN_TRUE,
70     TOKEN_FALSE,
71 
72     TOKEN_NOTHING,
73     TOKEN_SLASH,
74     TOKEN_INVSLASH,
75     TOKEN_DOT,
76     TOKEN_INVDOT,
77     TOKEN_ARROW,
78 
79     TOKEN_FULL,
80     TOKEN_SOME,
81     TOKEN_NONE
82   };
83 
84 enum
85   {
86     SCROLL_RECT = 0,
87     SCROLL_SHAPED = 1,
88 
89     MARKS_OFF = 0,
90     MARKS_ON = 1,
91 
92     MARKS_NOTHING = 0,
93     MARKS_SLASH = 1,
94     MARKS_INVSLASH = 2,
95     MARKS_DOT = 3,
96     MARKS_INVDOT = 4,
97     MARKS_ARROW = 5,
98 
99     PANED_DOTSFULL = 0,
100     PANED_DOTSSOME = 1,
101     PANED_DOTSNONE = 2
102   };
103 
104