Just committed the DataFrameModel class. Use qdataFrameModel() to construct it. qdataFrame() to get the data.frame back out. See comments in the dataframe.R file.<br><br>I&#39;ll be shifting focus away from Qt for a couple weeks and towards the plumbr package, which will provide mutable, dynamic tabular data models, mostly in support of qtpaint and interactive graphics in general.<br>
<br><div class="gmail_quote">On Thu, Apr 15, 2010 at 6:42 PM, Michael Lawrence <span dir="ltr">&lt;<a href="mailto:michafla@gene.com">michafla@gene.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br><br><div class="gmail_quote"><div class="im">On Thu, Apr 15, 2010 at 4:28 PM, John Verzani <span dir="ltr">&lt;<a href="mailto:verzani@math.csi.cuny.edu" target="_blank">verzani@math.csi.cuny.edu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Dear Michael,<br><br>I haven&#39;t wrapped my head around roles yet, so maybe this is nonsense, but a few things came to mind:<br><br>* the character vector storing roles might be expanded to a list for objects that are have two classes. I&#39;m thinking of the case of dates, which some times take on a class of  &quot;POSIXt&quot;  &quot;POSIXct&quot;<br>

</blockquote></div><div><br>The character vectors have nothing to do with classes. I will code this up over the weekend and you&#39;ll understand what I mean.<br> <br></div><div class="im"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">


* Will there be a conversion back to a data frame as well? (The model just uses text if I&#39;m not mistaken)<br><font color="#888888"><br></font></blockquote></div><div><br>The data.frame will be stored with the model, so it can be easily extracted. A bigger problem is that the DataFrameModel class is not defined at the Smoke level. Right now it is returned as a pointer cast to its parent, QAbstractTableModel. That means we can&#39;t distinguish it to know that we can just yank out the DF.<br>

</div><div><div></div><div class="h5"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><font color="#888888"><br>--John</font><div><div></div>
<div><br><br><div class="gmail_quote">
On Thu, Apr 15, 2010 at 1:45 PM, Michael Lawrence <span dir="ltr">&lt;<a href="mailto:lawrence.michael@gene.com" target="_blank">lawrence.michael@gene.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">I started working on this today. A simple table model is easy to implement. The design of the Qt item model framework is different from GtkTreeView, in that there is a 1-1 correspondence between model and view columns, except each model column yields different data depending on the specified &quot;role&quot;. GTK+ mapped attributes of view columns (similar to roles) to separate model columns. The 1-1 mapping in Qt is nice, but at the R level, we just have a data.frame, so considering roles will take some thought.<br>



<br>Right now I think that we will take a data.frame, along with a character vector for each role indicating the mapping. And a colnames argument that specifies which columns actually become columns in the model. With sensible defaults this should be simple for the use case of just displaying the data.frame as text. <br>


<div><div></div><div>
<br><div class="gmail_quote">On Wed, Apr 14, 2010 at 1:43 PM, John Verzani <span dir="ltr">&lt;<a href="mailto:verzani@math.csi.cuny.edu" target="_blank">verzani@math.csi.cuny.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">



Thanks Michael. WIll check it out. Yes, I definitely miss rGtkDataFrame for qtbase. My gWidgetsQt versions that use the table widget are really slow even for moderately sized data sets. --John<div><div></div><div>
<br><br><div class="gmail_quote">
On Wed, Apr 14, 2010 at 1:11 PM, Michael Lawrence <span dir="ltr">&lt;<a href="mailto:lawrence.michael@gene.com" target="_blank">lawrence.michael@gene.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">




Alright, I think it&#39;s fixed in svn. Was deleting the QStandardItem, even though Qt owned it (in the model). Unfortunately, Qt has fairly ad-hoc memory ownership policies compared to GTK+. <br><br>Also, in this simple case, you might find cb$insertItem(i-1, letters[i]) to be easier than explicitly creating the QStandardItem.<br>





<br>At some point we will need vectorized functions for populating data models like rGtkDataFrame.<br><font color="#888888"><br>Michael</font><div><div></div><div><br><br><div class="gmail_quote">On Wed, Apr 14, 2010 at 9:48 AM, Michael Lawrence <span dir="ltr">&lt;<a href="mailto:michafla@gene.com" target="_blank">michafla@gene.com</a>&gt;</span> wrote:<br>





<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><br><br><div class="gmail_quote"><div>On Wed, Apr 14, 2010 at 7:41 AM, John Verzani <span dir="ltr">&lt;<a href="mailto:verzani@math.csi.cuny.edu" target="_blank">verzani@math.csi.cuny.edu</a>&gt;</span> wrote:<br>





<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
I am having trouble consistently getting a combobox to behave properly. In particular, with this test case I rarely get past 40 before the process dies. Am I setting up the combobox completely wrong? (I&#39;ve tried  using setItemText but that failed as well and I don&#39;t think my issue is having so many widgets open.)<br>







<br><br clear="all">library(qtbase)<br><br>testit &lt;- function(i) {<br>  cb &lt;- Qt$QComboBox()<br>  mod &lt;- cb$model()<br>  <br>  ## set values<br>  sapply(seq_along(letters), function(i) {<br>    item &lt;- Qt$QStandardItem(letters[i])<br>







    mod$setItem(i-1, item)<br>  })<br>  <br>  cb$setCurrentIndex(2)<br>  cat(i, cb$model()$item(2)$text(), &quot;\n&quot;)<br>}<br><br><br>## <br>for(i in 1:1000) {<br>  out &lt;- try(testit(i), silent=TRUE)<br>  if(inherits(out, &quot;try-error&quot;)) {<br>







    print(i)<br>    stop(i)<br>  }<br>}<br><br>## eventually dies but not consistently, e.g:<br>...<br>8 c <br>[1] 9<br>Error in eval.with.vis(expr, envir, enclos) : <br>  Error in cat(i, cb$model()$item(2)$text(), &quot;\n&quot;) : <br>







  attempt to apply non-function<br><br>(Basically what happens is all items in the model are set to NULL, so the call to the text method fails.)<br><br></blockquote></div><div><br>Yea it looks like corruption somewhere. No idea where though, will have to look into it.<br>






<br>Thanks,<br>Michael<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><br>&gt; sessionInfo()<br>R version 2.10.1 (2009-12-14) <br>






i486-pc-linux-gnu <br>
<br>locale:<br>[1] en_US.UTF-8<br><br>attached base packages:<br>[1] stats     graphics  grDevices utils     datasets  methods   base     <br><br>other attached packages:<br>[1] qtbase_0.6-2<br><font color="#888888"><br>






-- <br>John Verzani<br>
Chair, Department of Mathematics<br>College of Staten Island, CUNY<br><a href="mailto:verzani@math.csi.cuny.edu" target="_blank">verzani@math.csi.cuny.edu</a><br>
</font><br></div>_______________________________________________<br>
Qtinterfaces-devel mailing list<br>
<a href="mailto:Qtinterfaces-devel@lists.r-forge.r-project.org" target="_blank">Qtinterfaces-devel@lists.r-forge.r-project.org</a><br>
<a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/qtinterfaces-devel" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/qtinterfaces-devel</a><br>
<br></blockquote></div><br>
</blockquote></div><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>John Verzani<br>Chair, Department of Mathematics<br>College of Staten Island, CUNY<br><a href="mailto:verzani@math.csi.cuny.edu" target="_blank">verzani@math.csi.cuny.edu</a><br>





</div></div></blockquote></div><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>John Verzani<br>Chair, Department of Mathematics<br>College of Staten Island, CUNY<br><a href="mailto:verzani@math.csi.cuny.edu" target="_blank">verzani@math.csi.cuny.edu</a><br>



</div></div></blockquote></div></div></div><br>
</blockquote></div><br>