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