<br><br><div class="gmail_quote">On Fri, Nov 13, 2009 at 11:17 AM, Deepayan Sarkar <span dir="ltr">&lt;<a href="mailto:deepayan.sarkar@gmail.com">deepayan.sarkar@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Fri, Nov 13, 2009 at 6:15 AM, Michael Lawrence &lt;<a href="mailto:lawremi@gmail.com">lawremi@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; On Fri, Nov 13, 2009 at 5:56 AM, Deepayan Sarkar &lt;<a href="mailto:deepayan.sarkar@gmail.com">deepayan.sarkar@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi (Michael, mostly),<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m at the stage where I&#39;m happy with updates to qtutils, which is<br>
&gt;&gt; basically all R code, using signals etc.<br>
&gt;&gt;<br>
&gt;&gt; My next target is qtdevices, i.e., a traditional R graphics device<br>
&gt;&gt; using QGraphicsScene. Is this feasible at this point? I&#39;ve checked in<br>
&gt;&gt; a few relevant questions in qtbase/questions.txt, the first couple of<br>
&gt;&gt; which would help me plan my next steps:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;  o Can we use user-written classes (defined in C++) from R yet? e.g.,<br>
&gt;&gt;   RSyntaxHighlighter<br>
&gt;&gt;<br>
&gt;<br>
&gt; Yes, this is possible. Check out, for example, the class wizard demo.<br>
<br>
</div>So you&#39;re saying that it should be possible to translate a C++ class<br>
to R, right?<br>
<br></blockquote><div><br>Most likely, yes.<br> <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
It would also be useful to have an existing C++ class wrapped<br>
directly, as with the Qt classes. How much work is involved in having<br>
that set up? This must be a common enough problem.<br>
<div class="im"><br></div></blockquote><div><br>This is a problem and is a major hang-up for qtpaint. Essentially, we need to generate the smoke metadata/bindings for every class we define in C++. Otherwise, instances of the class are not compatible with Smoke (which is usually important when you are extending a Qt class). <br>
<br>For qtpaint, I&#39;m working on getting the infrastructure in place for generating Smoke for some of the classes (like Layer), though I think I&#39;ll still just directly bind the painting interface, since Painter just derives from QObject, and we do not need those methods.<br>
 <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im">
&gt;&gt;  o Related question: Let&#39;s say I want to manipulate a QWidget in<br>
&gt;&gt;   native code; e.g.<br>
&gt;&gt;<br>
&gt;&gt;   In R:<br>
&gt;&gt;<br>
&gt;&gt;      edit &lt;- Qt$QTextEdit()<br>
&gt;&gt;<br>
&gt;&gt;   The in C++:<br>
&gt;&gt;<br>
&gt;&gt;      QTextEdit *editor = getPointer(edit);<br>
&gt;&gt;      RSyntaxHighlighter *highlighter =<br>
&gt;&gt;          new RSyntaxHighlighter(editor-&gt;document());<br>
&gt;&gt;<br>
&gt;&gt;   unwrapQWidget() doesn&#39;t work obviously, as it uses the old model.<br>
&gt;&gt;   What would be the equivalent in the new world?  If this is<br>
&gt;&gt;   available, then we probably get some flexibility in using both the<br>
&gt;&gt;   old and new models together, even if we can&#39;t easily make new C++<br>
&gt;&gt;   classes available in R.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt; This would be unwrapSmoke().<br>
<br>
</div>This needs to go into qtbase.h to be used from other packages, right?<br>
<br>
BTW, are you getting a crash with<br>
<br>
&gt; library(qtbase)<br>
&gt; Qt$QStringList<br>
<br>
 *** caught segfault ***<br>
address (nil), cause &#39;memory not mapped&#39;<br>
<br>
Traceback:<br>
 1: .Call(qt_qmethods, x)<br>
 2: qmethods(cl)<br>
 3: qsmokeClass(lib, className)<br>
 4: function () {    class &lt;- qsmokeClass(lib, className)    rm(list =<br>
className, envir = lib)    assign(className, class, lib)<br>
lockBinding(className, lib)    class}()<br>
<font color="#888888"><br>
-Deepayan<br>
</font></blockquote></div><br>