[ruby-gnome2-doc-cvs] [Hiki] update - How to Implement Ruby-GNOME2

Back to archive index

ruby-****@sourc***** ruby-****@sourc*****
2004年 4月 15日 (木) 22:30:05 JST


-------------------------
REMOTE_ADDR = 217.224.147.179
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/de/?How+to+Implement+Ruby-GNOME2
-------------------------
  =Code f$B(B Ruby-GNOME2 schreiben - aber wie?
  Dieses Dokument erkl$BgS(Bt, wie eine Erweiterung f$B(B Ruby-GNOME2 zu schreiben ist.
  
  ==Signale und Eigenschaften
  Zugriffsmethoden (((*set*))/((*get*))) f$B(B Eigenschaften werden automatisch generiert. Signale werden ebenso direkt von GLib::Instantiatable#signal_connect behandelt. Sie m$B(Bsen also nicht von Hand geschrieben werden.
  
  ==$B\b(Berholte Klassen/Methoden
  Im Englischen obsolete oder deprecated genannt, sind $B|b(Berholte Klassen auszusparen.
  
  ==Makros
  Es gibt einige Makros, die das Schreiben einer neuen Klasse oder Methode deutlich erleichtern. Fast alle dieser Makros befinden sich in den Header-Dateien glib/src/rbgobject.h, rbglib.h und gtk/src/rbgtk.h.
  
  === Klassen und Interfaces definieren
  Von diesen Makros wird in den Init_*()-Funktionen Gebrauch gemacht.
  
  --- G_DEF_CLASS(gtype, name, module)
  --- G_DEF_CLASS2(gtype, name, module, mark, free)
      Definiert eine Klasse. Um die "mark"- und "free"-Funktionen selbst definieren zu k$Bvn(Bnen, steht 
      G_DEF_CLASS2 zur Verf$B|g(Bung. Es wird eine neue Ruby-Klasse zur$B|c(Bkgegeben.
  
  --- G_DEF_CLASS3(gtype_name, name, module)
      Definiert eine Klasse dynamisch. N$B|t(Bzlich f$B|r(B private gtype-Klassen wie GdkScreenX11 oder
      GdkWindowImplWin32. Diese Funktion hat keinen R$B|c(Bkgabewert. Solche Klassen k$Bvn(Bnen die Methoden und 
      Konstanten nicht selbst definieren. Sie tauchen dort auf, wo eine Methode, die den private gtype erzeugt, 
      von einem Ruby-Skript aufgerufen wird.
  
  --- G_DEF_INTERFACE(gtype, name, module)
  --- G_DEF_INTERFACE2(gtype, name, module, mark, free)
      Definiert ein Modul. G_DEF_INTERFACE2 steht zur Verf$B|g(Bung, um die mark- und free-Funktionen selbst 
      definieren zu k$Bvn(Bnen.
      
  --- void rbgobj_boxed_not_copy_obj(GType gtype)
-     Benutzen Sie diese Methode, wenn das in einer GBox befindliche Objekt w$Bdh(Brend seiner RVALUE-Umwandlung nicht 
+     Benutzen Sie diese Methode, wenn Sie ein GBoxed-Objekt w$Bdh(Brend seiner RVALUE-Umwandlung nicht 
      kopiert werden soll (was z.B. bei GBOXED2RVAL oder G_INITIALIZE der Fall ist).
  
- -- Objekte initialisieren
+ === Objekte initialisieren
  Diese Makros werden in den ((*initialize*))-Methoden benutzt:
  
  --- G_INITIALIZE(obj, cobj)
  --- RBGTK_INITIALIZE(obj,gtkobj)
  --- RBGST_INITIALIZE(obj,gstobj)
      Initialisiert ein Objekt. Wenn die Klasse von GtkObject abstammt, muss RBGTK_INITIALIZE verwandt werden. Wenn die 
      Klasse von GstObject abstammt, muss entsprechend RBGST_INITIALIZE verwandt werden.
  
  === Umwandlungen: Ruby <-> Glib/Gtk
  --- RVAL2GOBJ(obj)
  --- GOBJ2RVAL(gobj)
      VALUE(GLib::Object) <-> GObject
  
  --- RVAL2BOXED(obj)
  --- BOXED2RVAL(cobj, gtype)
      VALUE(GLib::Boxed) <-> GBoxed
  
  --- RVAL2CSTR(v)
  --- CSTR2RVAL(s)
      VALUE(String) <-> gchar*
  
  --- RVAL2CBOOL(v)
  --- CBOOL2RVAL(b)
      VALUE(true or false) <-> gboolean
  
  --- GVAL2RVAL(v)
      GValue(GLib::Value) -> RValue. 
  RVAL2GVAL(v) existiert noch nicht. Um einen RValue in einen GValue umzuwandeln, k$Bvn(Bnen Sie rbgobj_rvalue_to_gvalue() verwenden:
    GValue gval = {0,};
    g_value_init(&gval, RVAL2GTYPE(value));
    
    rbgobj_rvalue_to_gvalue(value, &gval);
    /* then use gval... */
  
  --- GEV2RVAL(ev)
  --- RVAL2GEV(ev)
      VALUE(Gtk::Event) <-> GtkEvent
  
  --- GLIST2ARY(list)
  --- GSLIT2ARY(list)
      GList/GSList of GObject -> Array
  
  --- GLIST2ARY2(list)
  --- GSLIT2ARY2(list)
      GList/GSList of GBoxed -> Array
+ 
+ === Umwandlungen: RGObjClassInfo <-> GType, Ruby class/instance
+ --- CLASS2CINFO(klass)
+     Class -> RGObjClassInfo
+ --- GTYPE2CINFO(gtype)
+     GType -> RGObjClassInfo
+ --- RVAL2CINFO(obj)
+     VALUE -> RGObjClassInfo
+ 
+ === Umwandlungen: GType <-> Ruby class/instance
+ --- GTYPE2CLASS(gtype)
+     GType -> Class
+ --- CLASS2GTYPE(klass)
+     Class -> GType
+ --- RVAL2GTYPE(obj)
+     VALUE -> GType





ruby-gnome2-cvs メーリングリストの案内
Back to archive index