Revision: 448
          http://rpy.svn.sourceforge.net/rpy/?rev=448&view=rev
Author:   lgautier
Date:     2008-03-19 14:53:51 -0700 (Wed, 19 Mar 2008)

Log Message:
-----------
- removed the limitation of subset index/vectors to be R objects
(they can be built on the fly by the mapping function)
- added a directory for demos
- added a simple GTK GUI to list packages and vignettes (the search buttons are 
obviously not having any effect)

Modified Paths:
--------------
    branches/rpy_nextgen/rpy/robjects/__init__.py

Added Paths:
-----------
    branches/rpy_nextgen/demos/
    branches/rpy_nextgen/demos/radmin.py

Added: branches/rpy_nextgen/demos/radmin.py
===================================================================
--- branches/rpy_nextgen/demos/radmin.py                                (rev 0)
+++ branches/rpy_nextgen/demos/radmin.py        2008-03-19 21:53:51 UTC (rev 
448)
@@ -0,0 +1,206 @@
+import pygtk
+pygtk.require('2.0')
+import gtk
+import rpy.robjects as robjects
+
+
+
+class LibraryPanel(object):
+
+    cell = gtk.CellRendererText()
+    cell.set_property('cell-background', 'black')
+    cell.set_property('foreground', 'white')
+    
+    def __init__(self, parent):
+        self._table = gtk.ListStore(str, str, str)
+        self.updateInstalledLibraries()
+        self._treeView = gtk.TreeView(model = self._table)
+        self._valueColumns = [gtk.TreeViewColumn('Package'),
+                              gtk.TreeViewColumn('Installed'),
+                              gtk.TreeViewColumn('Available')]
+        self._valueCells = []
+        for col_i, col in enumerate(self._valueColumns):
+            self._treeView.append_column(col)
+            cr = gtk.CellRendererText()
+            col.pack_start(cr, True)
+            self._valueCells.append(cr)
+            col.set_attributes(cr, text=col_i)
+        parent.add(self._treeView)
+
+    def updateInstalledLibraries(self):
+        self._table.clear()
+        installedLibraries = robjects.r["installed.packages"]()
+        nrows = robjects.r.nrow(installedLibraries)[0]
+        ncols = robjects.r.ncol(installedLibraries)[0]
+        for i in range(1, nrows._sexp[0]+1):
+            row = []
+            pack = installedLibraries.subset(i, 1)._sexp[0]
+            row.append(pack)
+            pack = installedLibraries.subset(i, 3)._sexp[0]
+            row.append(pack)
+            pack = installedLibraries.subset(i, 4)._sexp[0]
+            row.append(pack)
+            self._table.append(row)
+
+    def show(self):
+        self._treeView.show()
+
+class VignetteExplorer(object):
+
+    def __init__(self, parent):
+        self._table = gtk.ListStore(str, str, str)
+        self.updateKnownVignettes()
+        self._treeView = gtk.TreeView(model = self._table)
+        self._valueColumns = [gtk.TreeViewColumn('Package'),
+                              gtk.TreeViewColumn('Item'),
+                              gtk.TreeViewColumn('Title')]
+        self._valueCells = []
+        for col_i, col in enumerate(self._valueColumns):
+            self._treeView.append_column(col)
+            cr = gtk.CellRendererText()
+            col.pack_start(cr, True)
+            self._valueCells.append(cr)
+            col.set_attributes(cr, text=col_i)
+        parent.add(self._treeView)
+        self.parent = parent
+
+    def updateKnownVignettes(self):
+        self._table.clear()
+        vignettes = robjects.r["vignette"]().subset("results")[0]
+        nrows = robjects.r.nrow(vignettes)[0]
+        ncols = robjects.r.ncol(vignettes)[0]
+        for i in range(1, nrows._sexp[0]+1):
+            row = []
+            pack = vignettes.subset(i, 1)._sexp[0]
+            row.append(pack)
+            pack = vignettes.subset(i, 3)._sexp[0]
+            row.append(pack)
+            pack = vignettes.subset(i, 4)._sexp[0]
+            row.append(pack)
+            self._table.append(row)
+    def show(self):
+        self._treeView.show()
+
+class DocumentationExplorer(object):
+
+    def __init__(self, parent):
+        self._table = gtk.ListStore(str, str, str)
+        self.updateRelevantDoc("foo")
+        self._treeView = gtk.TreeView(model = self._table)
+        self._valueColumns = [gtk.TreeViewColumn('Topic'),
+                              gtk.TreeViewColumn('Title'),
+                              gtk.TreeViewColumn('Package'),]
+        self._valueCells = []
+        for col_i, col in enumerate(self._valueColumns):
+            self._treeView.append_column(col)
+            cr = gtk.CellRendererText()
+            col.pack_start(cr, True)
+            self._valueCells.append(cr)
+            col.set_attributes(cr, text=col_i)
+        parent.add(self._treeView)
+        self.parent = parent
+
+    def updateRelevantDoc(self, string):
+        self._table.clear()
+        matches = robjects.r["help.search"](string).subset("matches")[0]
+        #import pdb; pdb.set_trace()
+        nrows = robjects.r.nrow(matches)[0]
+        ncols = robjects.r.ncol(matches)[0]
+        for i in range(1, nrows._sexp[0]+1):
+            row = []
+            pack = matches.subset(i, 1)._sexp[0]
+            row.append(pack)
+            pack = matches.subset(i, 2)._sexp[0]
+            row.append(pack)
+            pack = matches.subset(i, 3)._sexp[0]
+            row.append(pack)
+            self._table.append(row)
+    def show(self):
+        self._treeView.show()
+
+class Main(object):
+
+    def __init__(self):
+        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+
+        window.set_title("R")
+        window.connect("delete_event", self.delete_event)
+        window.connect("destroy", self.destroy)
+        window.set_size_request(350, 450)
+
+        notebook = gtk.Notebook()
+        notebook.set_tab_pos(gtk.POS_LEFT)
+        notebook.set_show_tabs(True)
+        notebook.show()
+        #vbox = gtk.VBox(homogeneous=False, spacing=0)
+        #vbox.show()
+
+        # libraries/packages
+        vbox_lib = gtk.VBox(homogeneous=False, spacing=0)
+        vbox_lib.show()
+        sbox_lib = gtk.HBox(homogeneous=False, spacing=0)
+        sbox_lib.show()
+        sentry_lib = gtk.Entry()
+        sentry_lib.show()
+        sbox_lib.add(sentry_lib)
+        sbutton_lib = gtk.Button("Search")
+        sbutton_lib.show()
+        sbox_lib.add(sbutton_lib)
+        vbox_lib.pack_start(sbox_lib, expand=False, fill=False, padding=0)
+
+        s_window_lib = gtk.ScrolledWindow()
+        s_window_lib.set_policy(gtk.POLICY_AUTOMATIC, 
+                                gtk.POLICY_AUTOMATIC)
+        s_window_lib.show()
+        libPanel = LibraryPanel(s_window_lib)
+        libPanel.show()
+        vbox_lib.add(s_window_lib)
+        notebook.append_page(vbox_lib, gtk.Label("Libraries"))
+
+        # vignettes
+        vbox_vig = gtk.VBox(homogeneous=False, spacing=0)
+        vbox_vig.show()
+        sbox_vig = gtk.HBox(homogeneous=False, spacing=0)
+        sbox_vig.show()
+        sentry_vig = gtk.Entry()
+        sentry_vig.show()
+        sbox_vig.add(sentry_vig)
+        sbutton_vig = gtk.Button("Search")
+        sbutton_vig.show()
+        sbox_vig.add(sbutton_vig)
+        vbox_vig.pack_start(sbox_vig, expand=False, fill=False, padding=0)
+
+        scrolled_window = gtk.ScrolledWindow()
+        scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, 
+                                   gtk.POLICY_AUTOMATIC)
+        scrolled_window.show()
+        vigPanel = VignetteExplorer(scrolled_window)
+        vigPanel.show()
+        vbox_vig.add(scrolled_window)
+        notebook.append_page(vbox_vig, gtk.Label("Vignettes"))
+
+        # doc
+        s_window = gtk.ScrolledWindow()
+        s_window.set_policy(gtk.POLICY_AUTOMATIC, 
+                                   gtk.POLICY_AUTOMATIC)
+        s_window.show()
+        docPanel = DocumentationExplorer(s_window)
+        docPanel.show()
+        notebook.append_page(s_window, gtk.Label("Documentation"))
+
+        # search 
+        #window.add(vbox)
+        window.add(notebook)
+
+        window.show()
+
+    def delete_event(self, widget, event, data=None):
+        return False
+
+    def destroy(self, widget, data=None):
+        gtk.main_quit()
+
+w = Main()
+gtk.main()
+
+


Property changes on: branches/rpy_nextgen/demos/radmin.py
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: branches/rpy_nextgen/rpy/robjects/__init__.py
===================================================================
--- branches/rpy_nextgen/rpy/robjects/__init__.py       2008-03-17 21:12:38 UTC 
(rev 447)
+++ branches/rpy_nextgen/rpy/robjects/__init__.py       2008-03-19 21:53:51 UTC 
(rev 448)
@@ -104,9 +104,12 @@
            - an index is itself a vector of elements to select
         """
         
-        for a in args:
-            if not isinstance(a, Rvector):
-                raise(TypeError("Subset only take R vectors"))
+        #for a in args:
+        #    if not isinstance(a, Rvector):
+        #        raise(TypeError("Subset only take R vectors"))
+        args = [mapperPy2R(x) for x in args]
+        for k, v in kwargs.itervalues():
+            args[k] = mapperPy2R(v)
         
         res = r["["](*([self._sexp, ] + [x._sexp for x in args]), **kwargs)
         return res


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
rpy-list mailing list
rpy-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rpy-list

Reply via email to