From: Kouhei S. <kt...@us...> - 2006-09-24 13:03:30
|
Update of /cvsroot/ruby-gnome2/ruby-gnome2/gtksourceview/src In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv12993/src Modified Files: rbgtksourcetag.c rbgtksourcetagstyle.c Log Message: * src/rbgtksourcetagstyle.c: made Gtk::SourceTagStyle mutable. bug #1544362. * src/rbgtksourcetag.c: used alias and property instead of handmade implementation. * sample/test.rb: added a changing style example. Index: rbgtksourcetag.c =================================================================== RCS file: /cvsroot/ruby-gnome2/ruby-gnome2/gtksourceview/src/rbgtksourcetag.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- rbgtksourcetag.c 2 Oct 2005 18:40:34 -0000 1.2 +++ rbgtksourcetag.c 24 Sep 2006 13:03:27 -0000 1.3 @@ -20,13 +20,6 @@ #define _SELF(self) (GTK_SOURCE_TAG(RVAL2GOBJ(self))) -static VALUE -source_tag_get_style(self) - VALUE self; -{ - return GOBJ2RVAL(gtk_source_tag_get_style(_SELF(self))); -} - /* Defined as a property. GtkSourceTagStyle* gtk_source_tag_get_style (GtkSourceTag *tag); void gtk_source_tag_set_style (GtkSourceTag *tag, @@ -114,7 +107,8 @@ VALUE cPatternTag = G_DEF_CLASS (GTK_TYPE_PATTERN_TAG, "PatternTag", mGtk); - rb_define_method (cSourceTag, "style", source_tag_get_style, 0); + rb_define_alias (cSourceTag, "style", "tag_style"); + rb_define_alias (cSourceTag, "set_style", "set_tag_style"); rb_define_method (cPatternTag, "initialize", patterntag_new, 2); rb_define_method (cSyntaxTag, "initialize", syntaxtag_new, 3); Index: rbgtksourcetagstyle.c =================================================================== RCS file: /cvsroot/ruby-gnome2/ruby-gnome2/gtksourceview/src/rbgtksourcetagstyle.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- rbgtksourcetagstyle.c 2 Oct 2005 18:40:34 -0000 1.2 +++ rbgtksourcetagstyle.c 24 Sep 2006 13:03:27 -0000 1.3 @@ -16,14 +16,33 @@ */ #define _SELF(self) ((GtkSourceTagStyle*)RVAL2BOXED(self, GTK_TYPE_SOURCE_TAG_STYLE)) -#define ATTR_BOOL(name)\ -static VALUE \ -sourcetagstyle_ ## name (self)\ - VALUE self;\ -{\ - return CBOOL2RVAL(_SELF(self)->name);\ +#define RVAL2MASK(obj) (RVAL2GFLAGS(obj, GTK_TYPE_SOURCE_TAG_STYLE_MASK)) +#define MASK2RVAL(obj) (GFLAGS2RVAL(obj, GTK_TYPE_SOURCE_TAG_STYLE_MASK)) + +#define RVAL2COLOR(obj) ((GdkColor *)RVAL2BOXED(obj, GDK_TYPE_COLOR)) +#define COLOR2RVAL(obj) (BOXED2RVAL(obj, GDK_TYPE_COLOR)) + +#define ATTR_READER_BOOL(name) \ +static VALUE \ +sourcetagstyle_ ## name (self) \ + VALUE self; \ +{ \ + return CBOOL2RVAL(_SELF(self)->name); \ } +#define ATTR_WRITER_BOOL(name) \ +static VALUE \ +sourcetagstyle_set_ ## name (self, value) \ + VALUE self, value; \ +{ \ + _SELF(self)->name = RVAL2CBOOL(value); \ + return Qnil; \ +} + +#define ATTR_BOOL(name) \ + ATTR_READER_BOOL(name) \ + ATTR_WRITER_BOOL(name) + /* Class method: new * Returns: a newly created Gtk::SourceTagStyle object. */ @@ -35,13 +54,21 @@ return Qnil; } -ATTR_BOOL(is_default); +ATTR_READER_BOOL(is_default); static VALUE sourcetagstyle_mask(self) VALUE self; { - return UINT2NUM(_SELF(self)->mask); + return MASK2RVAL(_SELF(self)->mask); +} + +static VALUE +sourcetagstyle_set_mask(self, mask) + VALUE self, mask; +{ + _SELF(self)->mask = RVAL2MASK(mask); + return Qnil; } static VALUE @@ -49,7 +76,16 @@ VALUE self; { GdkColor color = _SELF(self)->foreground; - return BOXED2RVAL(&color, GDK_TYPE_COLOR); + return COLOR2RVAL(&color); +} + +static VALUE +sourcetagstyle_set_foreground(self, rb_color) + VALUE self, rb_color; +{ + GdkColor *new_color = RVAL2COLOR(rb_color); + memcpy(&(_SELF(self)->foreground), new_color, sizeof(GdkColor)); + return Qnil; } static VALUE @@ -57,7 +93,16 @@ VALUE self; { GdkColor color = _SELF(self)->foreground; - return BOXED2RVAL(&color, GDK_TYPE_COLOR); + return COLOR2RVAL(&color); +} + +static VALUE +sourcetagstyle_set_background(self, rb_color) + VALUE self, rb_color; +{ + GdkColor *new_color = RVAL2COLOR(rb_color); + memcpy(&(_SELF(self)->background), new_color, sizeof(GdkColor)); + return Qnil; } ATTR_BOOL(italic); @@ -80,6 +125,18 @@ rb_define_method(tagstyle, "underline?", sourcetagstyle_underline, 0); rb_define_method(tagstyle, "strikethrough?", sourcetagstyle_strikethrough, 0); + rb_define_method(tagstyle, "set_mask", sourcetagstyle_set_mask, 1); + rb_define_method(tagstyle, "set_foreground", + sourcetagstyle_set_foreground, 1); + rb_define_method(tagstyle, "set_background", + sourcetagstyle_set_background, 1); + rb_define_method(tagstyle, "set_italic", sourcetagstyle_set_italic, 1); + rb_define_method(tagstyle, "set_bold", sourcetagstyle_set_bold, 1); + rb_define_method(tagstyle, "set_underline", + sourcetagstyle_set_underline, 1); + rb_define_method(tagstyle, "set_strikethrough", + sourcetagstyle_set_strikethrough, 1); + /* GtkSourceTagStyleMask */ G_DEF_CLASS(GTK_TYPE_SOURCE_TAG_STYLE_MASK, "Mask", tagstyle); G_DEF_CONSTANTS(tagstyle, GTK_TYPE_SOURCE_TAG_STYLE_MASK, "GTK_SOURCE_TAG_STYLE_"); |