Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 0be7620be6a1578fbd49765844864a01 > files > 261

ocaml-lablgtk2-doc-2.14.0-2mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="Start" href="index.html">
<link rel="previous" href="GAction.html">
<link rel="next" href="GToolbox.html">
<link rel="Up" href="index.html">
<title>LablGTK : GUtil</title>
</head>
<body>
<div class="navbar"><a href="GAction.html">Previous</a>
&nbsp;<a href="index.html">Up</a>
&nbsp;<a href="GToolbox.html">Next</a>
</div>
<center><h1>Module <a href="type_GUtil.html">GUtil</a></h1></center>
<br>
<pre><span class="keyword">module</span> GUtil: <code class="code">sig</code> <a href="GUtil.html">..</a> <code class="code">end</code></pre><a name="3_UtilityclassesforprogrammingwithGTKobjects"></a>
<h3>Utility classes for programming with GTK objects</h3><br>
<hr width="100%">
<pre><span class="keyword">val</span> <a name="VALprint_widget"></a>print_widget : <code class="type">Format.formatter -> #<a href="GObj.widget.html">GObj.widget</a> -> unit</code></pre><div class="info">
A nice function to use with <code class="code">#install_printer</code><br>
</div>
<br>
The memo class provides an easy way to remember the real class of
   a widget.
   Insert all widgets of class in one single <code class="code">t memo</code>, and you can then
   recover their original ML object with <code class="code">#find</code>.<br>
<pre><span class="keyword">class</span> <a name="TYPEmemo"></a><code class="type">[< get_oid : int; .. >]</code> <a href="GUtil.memo.html">memo</a> : <code class="type">unit -> </code><code class="code">object</code> <a href="GUtil.memo.html">..</a> <code class="code">end</code></pre><br><br>
<a name="4_TheMLsignalmechanism"></a>
<h4>The ML signal mechanism</h4>
   It allows one to add GTK-like signals to arbitrary objects.<br>
<pre><span class="keyword">val</span> <a name="VALnext_callback_id"></a>next_callback_id : <code class="type">unit -> <a href="GtkSignal.html#TYPEid">GtkSignal.id</a></code></pre><pre><span class="keyword">class</span> <a name="TYPEsignal"></a><code class="type">['a]</code> <a href="GUtil.signal.html">signal</a> : <code class="type">unit -> </code><code class="code">object</code> <a href="GUtil.signal.html">..</a> <code class="code">end</code></pre><br><br>
As with GTK signals, you can use <code class="code">GtkSignal.stop_emit</code> inside a
   callback to prevent other callbacks from being called.<br>
<pre><span class="keyword">class</span> <a name="TYPEml_signals"></a><span class="keyword">virtual</span> <a href="GUtil.ml_signals.html">ml_signals</a> : <code class="type">(<a href="GtkSignal.html#TYPEid">GtkSignal.id</a> -> bool) list -> </code><code class="code">object</code> <a href="GUtil.ml_signals.html">..</a> <code class="code">end</code></pre><br><pre><span class="keyword">class</span> <a name="TYPEadd_ml_signals"></a><span class="keyword">virtual</span> <a href="GUtil.add_ml_signals.html">add_ml_signals</a> : <code class="type">'a <a href="Gtk.html#TYPEobj">Gtk.obj</a> -> (<a href="GtkSignal.html#TYPEid">GtkSignal.id</a> -> bool) list -> </code><code class="code">object</code> <a href="GUtil.add_ml_signals.html">..</a> <code class="code">end</code></pre><br><br>
To add ML signals to a LablGTK object:
<pre><code class="code">   class mywidget_signals obj ~mysignal1 ~mysignal2 = object
     inherit somewidget_signals obj
     inherit add_ml_signals obj [mysignal1#disconnect; mysignal2#disconnect]
     method mysignal1 = mysignal1#connect ~after
     method mysignal2 = mysignal2#connect ~after
   end

   class mywidget obj = object (self)
     inherit somewidget obj
     val mysignal1 = new signal obj
     val mysignal2 = new signal obj
     method connect = new mywidget_signals obj ~mysignal1 ~mysignal2
     method call1 = mysignal1#call
     method call2 = mysignal2#call
   end
</code></pre>
   You can also add ML signals to an arbitrary object; just inherit
   from <code class="code">ml_signals</code> in place of <code class="code">widget_signals</code>+<code class="code">add_ml_signals</code>.
<pre><code class="code"> 
  class mysignals ~mysignal1 ~mysignal2 = object
     inherit ml_signals [mysignal1#disconnect; mysignal2#disconnect]
     method mysignal1 = mysignal1#connect ~after
     method mysignal2 = mysignal2#connect ~after
   end
</code></pre><br>
<br>
<a name="4_Propagatingstatemodifications"></a>
<h4>Propagating state modifications</h4>
   The variable class provides an easy way to propagate state modifications.
   A new variable is created by <code class="code">new variable init</code>. The <code class="code">#set</code> method just
   calls the <code class="code">set</code> signal, which by default only calls <code class="code">real_set</code>.
   <code class="code">real_set</code> sets the variable and calls <code class="code">changed</code> when needed.
   Deep equality is used to compare values, but check is only done if
   there are callbacks for <code class="code">changed</code>.<br>
<pre><span class="keyword">class</span> <a name="TYPEvariable_signals"></a><code class="type">['a]</code> <a href="GUtil.variable_signals.html">variable_signals</a> : <code class="type">set:'a <a href="GUtil.signal.html">signal</a> -> changed:'a <a href="GUtil.signal.html">signal</a> -> </code><code class="code">object</code> <a href="GUtil.variable_signals.html">..</a> <code class="code">end</code></pre><br><pre><span class="keyword">class</span> <a name="TYPEvariable"></a><code class="type">['a]</code> <a href="GUtil.variable.html">variable</a> : <code class="type">'a -> </code><code class="code">object</code> <a href="GUtil.variable.html">..</a> <code class="code">end</code></pre><br></body></html>