Sophie

Sophie

distrib > Mandriva > 2011.0 > x86_64 > by-pkgid > e4e5aca55b6d7244e6bae95bf4fde3ca > files > 370

lib64edelib-devel-2.0-1.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>edelib: Foreign callbacks</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />



</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">edelib
   &#160;<span id="projectnumber">2.0.0</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.6.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Foreign callbacks</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__foreigncallback.html#ga840d063f335a061e140d960b810438d1">foreign_callback_add</a> (Fl_Window *win, const char *id, void(*cb)(Fl_Window *, void *), void *data=0)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__foreigncallback.html#gad48379cb761d8ad355a1eb04b2f58979">foreign_callback_remove</a> (void(*cb)(Fl_Window *, void *))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__foreigncallback.html#ga72602b02281f732ee2fd56cca1e77ec8">foreign_callback_call</a> (const char *id)</td></tr>
</table>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga840d063f335a061e140d960b810438d1"></a><!-- doxytag: member="edelib::foreign_callback_add" ref="ga840d063f335a061e140d960b810438d1" args="(Fl_Window *win, const char *id, void(*cb)(Fl_Window *, void *), void *data=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__foreigncallback.html#ga840d063f335a061e140d960b810438d1">edelib::foreign_callback_add</a> </td>
          <td>(</td>
          <td class="paramtype">Fl_Window *&#160;</td>
          <td class="paramname"><em>win</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(Fl_Window *, void *)&#160;</td>
          <td class="paramname"><em>cb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>data</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><a class="el" href="group__foreigncallback.html#ga840d063f335a061e140d960b810438d1">foreign_callback_add()</a>, <a class="el" href="group__foreigncallback.html#gad48379cb761d8ad355a1eb04b2f58979">foreign_callback_remove()</a> and <a class="el" href="group__foreigncallback.html#ga72602b02281f732ee2fd56cca1e77ec8">foreign_callback_call()</a> functions provides a simple and lightweight mechanism for calling functions in other applications. For example, one application can change some settings and store it in known file and request other application to update itself by reading it.</p>
<p>These functions can be used as alternative to D-BUS calls in simple cases (and reduce dependency on D-BUS libraries), but should not be used where D-BUS is appropriate, like sending additional data to remote functions.</p>
<p>Each foreign callback is associated with <em>id</em>, a some string value used as calling method from external application. That value can be anything, ranging from application name to some random character; the only requirement is that external caller has the same string value. Here is one example that will print some text in receiver file: </p>
<div class="fragment"><pre class="fragment">   <span class="comment">// receiver.cpp</span>
   <span class="keywordtype">void</span> receive_cb(Fl_Window *win) {
     puts(<span class="stringliteral">&quot;Function called&quot;</span>);
   }

   <span class="keywordtype">int</span> main() {
     Fl_Window *win = <span class="keyword">new</span> Fl_Window(300, 300, <span class="stringliteral">&quot;Sample foreign callback&quot;</span>);
     <span class="comment">// initialization code and etc.</span>
     <a class="code" href="group__foreigncallback.html#ga840d063f335a061e140d960b810438d1">foreign_callback_add</a>(win, <span class="stringliteral">&quot;my-cool-app&quot;</span>, receive_cb);
     <span class="keywordflow">return</span> Fl::run();
   }
</pre></div><div class="fragment"><pre class="fragment">   <span class="comment">// sender.cpp</span>
   <span class="keywordtype">int</span> main() {
     <a class="code" href="group__foreigncallback.html#ga72602b02281f732ee2fd56cca1e77ec8">foreign_callback_call</a>(<span class="stringliteral">&quot;my-cool-app&quot;</span>);
     <span class="keywordflow">return</span> 0;
   }
</pre></div><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000018">Todo:</a></b></dt><dd>Add some better examples</dd></dl>
<p>Because foreign callback functions shares static internal data and the data is not locked, the best way to initialize foreign callbacks is before windows are shown in single application; with this no X messages will be sent and you are assured nothing will be called unexpectedly.</p>
<p><a class="el" href="group__foreigncallback.html#ga840d063f335a061e140d960b810438d1">foreign_callback_add()</a> and <a class="el" href="group__foreigncallback.html#ga72602b02281f732ee2fd56cca1e77ec8">foreign_callback_call()</a> will open X display if not so.</p>
<p>Because these functions depends on FLTK and X, they are part of libedelib_gui library. </p>

</div>
</div>
<a class="anchor" id="ga72602b02281f732ee2fd56cca1e77ec8"></a><!-- doxytag: member="edelib::foreign_callback_call" ref="ga72602b02281f732ee2fd56cca1e77ec8" args="(const char *id)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__foreigncallback.html#ga72602b02281f732ee2fd56cca1e77ec8">edelib::foreign_callback_call</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>id</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Call foreign function by registered string id. </p>

</div>
</div>
<a class="anchor" id="gad48379cb761d8ad355a1eb04b2f58979"></a><!-- doxytag: member="edelib::foreign_callback_remove" ref="gad48379cb761d8ad355a1eb04b2f58979" args="(void(*cb)(Fl_Window *, void *))" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__foreigncallback.html#gad48379cb761d8ad355a1eb04b2f58979">edelib::foreign_callback_remove</a> </td>
          <td>(</td>
          <td class="paramtype">void(*)(Fl_Window *, void *)&#160;</td>
          <td class="paramname"><em>cb</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Remove already registered callback if exists. </p>

</div>
</div>
</div><!-- contents -->


<hr class="footer"/><address class="footer"><small>
Generated on Tue Jun 5 2012 17:49:02 for edelib by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>

</body>
</html>