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

Back to archive index

ruby-****@sourc***** ruby-****@sourc*****
2004年 4月 13日 (火) 23:39:38 JST


-------------------------
REMOTE_ADDR = 217.82.199.31
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.
  
- === Define class/interface
+ === 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 
+     kopiert werden soll (was z.B. bei GBOXED2RVAL oder G_INITIALIZE der Fall ist).
  
-    -- unvollst$Bdn(Bdig!
+ -- 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





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