Revision: 4720
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4720&view=rev
Author:   jdh2358
Date:     2007-12-13 08:06:59 -0800 (Thu, 13 Dec 2007)

Log Message:
-----------
moved optional rec2* packages out of mlab and into toolkits

Modified Paths:
--------------
    trunk/matplotlib/API_CHANGES
    trunk/matplotlib/CODING_GUIDE
    trunk/matplotlib/examples/figimage_demo.py
    trunk/matplotlib/lib/matplotlib/image.py
    trunk/matplotlib/lib/matplotlib/mlab.py
    trunk/matplotlib/src/_backend_agg.cpp
    trunk/matplotlib/src/_image.cpp

Modified: trunk/matplotlib/API_CHANGES
===================================================================
--- trunk/matplotlib/API_CHANGES        2007-12-13 16:04:14 UTC (rev 4719)
+++ trunk/matplotlib/API_CHANGES        2007-12-13 16:06:59 UTC (rev 4720)
@@ -1,3 +1,8 @@
+    Moved rec2gtk to matplotlib.toolkits.gtktools
+
+    Moved rec2excel to matplotlib.toolkits.exceltools
+
+
     Removed, dead/experimental ExampleInfo, Namespace and Importer
     code from matplotlib/__init__.py
 0.91.1 Released

Modified: trunk/matplotlib/CODING_GUIDE
===================================================================
--- trunk/matplotlib/CODING_GUIDE       2007-12-13 16:04:14 UTC (rev 4719)
+++ trunk/matplotlib/CODING_GUIDE       2007-12-13 16:06:59 UTC (rev 4720)
@@ -113,6 +113,16 @@
 .emacs will cause emacs to strip trailing white space on save for
 python, C and C++
 
+
+When importing modules from the matplotlib namespace
+
+  import matplotlib.cbook as cbook   # DO
+  from matplotlib import cbook       #DONT
+
+because the latter is ambiguous whether cbook is a module or a
+function to the new developer.  The former makes it explcit that you
+are importing a module or package.
+
 ; and similarly for c++-mode-hook and c-mode-hook
 (add-hook 'python-mode-hook
           (lambda ()

Modified: trunk/matplotlib/examples/figimage_demo.py
===================================================================
--- trunk/matplotlib/examples/figimage_demo.py  2007-12-13 16:04:14 UTC (rev 
4719)
+++ trunk/matplotlib/examples/figimage_demo.py  2007-12-13 16:06:59 UTC (rev 
4720)
@@ -13,7 +13,7 @@
 im1 = figimage(Z, xo=50,  yo=0)
 im2 = figimage(Z, xo=100, yo=100, alpha=.8)
 #gray()  # overrides current and sets default
-#savefig('figimage_demo')
+savefig('figimage_demo')
 
 show()
 

Modified: trunk/matplotlib/lib/matplotlib/image.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/image.py    2007-12-13 16:04:14 UTC (rev 
4719)
+++ trunk/matplotlib/lib/matplotlib/image.py    2007-12-13 16:06:59 UTC (rev 
4720)
@@ -23,6 +23,7 @@
 from matplotlib._image import *
 
 class AxesImage(martist.Artist, cm.ScalarMappable):
+    zorder = 1
 
     def __init__(self, ax,
                  cmap = None,
@@ -517,18 +518,21 @@
         self.update_dict['array'] = True
 
 class FigureImage(martist.Artist, cm.ScalarMappable):
+    zorder = 1
     def __init__(self, fig,
                  cmap = None,
                  norm = None,
                  offsetx = 0,
                  offsety = 0,
                  origin=None,
+                 **kwargs
                  ):
 
         """
         cmap is a colors.Colormap instance
         norm is a colors.Normalize instance to map luminance to 0-1
 
+        kwargs are an optional list of Artist keyword args
         """
         martist.Artist.__init__(self)
         cm.ScalarMappable.__init__(self, norm, cmap)
@@ -537,6 +541,7 @@
         self.figure = fig
         self.ox = offsetx
         self.oy = offsety
+        self.update(kwargs)
 
     def contains(self, mouseevent):
         """Test whether the mouse event occured within the image.

Modified: trunk/matplotlib/lib/matplotlib/mlab.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/mlab.py     2007-12-13 16:04:14 UTC (rev 
4719)
+++ trunk/matplotlib/lib/matplotlib/mlab.py     2007-12-13 16:06:59 UTC (rev 
4720)
@@ -48,13 +48,13 @@
 
    * rec2csv          : store record array in CSV file
    * rec2excel        : store record array in excel worksheet - required 
pyExcelerator
-   * rec2gtk          : put record array in GTK treeview - requires gtk
+
    * csv2rec          : import record array from CSV file with type inspection
    * rec_append_field : add a field/array to record array
    * rec_drop_fields  : drop fields from record array
    * rec_join         : join two record arrays on sequence of fields
 
-For the rec viewer clases (rec2csv, rec2excel and rec2gtk), there are
+For the rec viewer clases (rec2csv, rec2excel), there are
 a bunch of Format objects you can pass into the functions that will do
 things like color negative values red, set percent formatting and
 scaling, etc.
@@ -1978,7 +1978,7 @@
     join record arrays r1 and r2 on key; key is a tuple of field
     names.  if r1 and r2 have equal values on all the keys in the key
     tuple, then their fields will be merged into a new record array
-    containing the union of the fields of r1 and r2
+    containing the intersection of the fields of r1 and r2
     """
 
     for name in key:
@@ -2343,373 +2343,5 @@
         writer.writerow([func(val) for func, val in zip(funcs, row)])
     fh.close()
 
-# if pyExcelerator is installed, provide an excel view
-try:
-    import pyExcelerator as excel
-except ImportError:
-    pass
-else:
 
-    def xlformat_factory(format):
-        """
-        copy the format, perform any overrides, and attach an xlstyle instance
-        copied format is returned
-        """
-        format = copy.deepcopy(format)
 
-
-
-        xlstyle = excel.XFStyle()
-        if isinstance(format, FormatFloat):
-            zeros = ''.join(['0']*format.precision)
-            xlstyle.num_format_str = '#,##0.%s;[RED]-#,##0.%s'%(zeros, zeros)
-        elif isinstance(format, FormatInt):
-            xlstyle.num_format_str = '#,##;[RED]-#,##'
-        elif isinstance(format, FormatPercent):
-            zeros = ''.join(['0']*format.precision)
-            xlstyle.num_format_str = '0.%s%%;[RED]-0.%s%%'%(zeros, zeros)
-            format.scale = 1.
-        else:
-            xlstyle = None
-
-        format.xlstyle = xlstyle
-
-        return format
-
-    def rec2excel(r, ws, formatd=None, rownum=0, colnum=0):
-        """
-        save record array r to excel pyExcelerator worksheet ws
-        starting at rownum.  if ws is string like, assume it is a
-        filename and save to it
-
-        start writing at rownum, colnum
-
-        formatd is a dictionary mapping dtype name -> FormatXL instances
-
-        The next rownum after writing is returned
-        """
-
-        autosave = False
-        if cbook.is_string_like(ws):
-            filename = ws
-            wb = excel.Workbook()
-            ws = wb.add_sheet('worksheet')
-            autosave = True
-
-
-        if formatd is None:
-            formatd = dict()
-
-        formats = []
-        font = excel.Font()
-        font.bold = True
-
-        stylehdr = excel.XFStyle()
-        stylehdr.font = font
-
-        for i, name in enumerate(r.dtype.names):
-            dt = r.dtype[name]
-            format = formatd.get(name)
-            if format is None:
-                format = defaultformatd.get(dt.type, FormatObj())
-
-            format = xlformat_factory(format)
-            ws.write(rownum, colnum+i, name, stylehdr)
-            formats.append(format)
-
-        rownum+=1
-
-
-        ind = npy.arange(len(r.dtype.names))
-        for row in r:
-            for i in ind:
-                val = row[i]
-                format = formats[i]
-                val = format.toval(val)
-                if format.xlstyle is None:
-                    ws.write(rownum, colnum+i, val)
-                else:
-                    if safe_isnan(val):
-                        ws.write(rownum, colnum+i, 'NaN')
-                    else:
-                        ws.write(rownum, colnum+i, val, format.xlstyle)
-            rownum += 1
-
-        if autosave:
-            wb.save(filename)
-        return rownum
-
-
-
-
-# if gtk is installed, provide a gtk view
-try:
-    import gtk, gobject
-except ImportError:
-    pass
-except RuntimeError:
-    pass
-else:
-
-
-    def gtkformat_factory(format, colnum):
-        """
-        copy the format, perform any overrides, and attach an gtk style attrs
-
-
-        xalign = 0.
-        cell = None
-
-        """
-
-        format = copy.copy(format)
-        format.xalign = 0.
-        format.cell = None
-
-        def negative_red_cell(column, cell, model, thisiter):
-            val = model.get_value(thisiter, colnum)
-            try: val = float(val)
-            except: cell.set_property('foreground', 'black')
-            else:
-                if val<0:
-                    cell.set_property('foreground', 'red')
-                else:
-                    cell.set_property('foreground', 'black')
-
-
-        if isinstance(format, FormatFloat) or isinstance(format, FormatInt):
-            format.cell = negative_red_cell
-            format.xalign = 1.
-        elif isinstance(format, FormatDate):
-            format.xalign = 1.
-        return format
-
-
-
-    class SortedStringsScrolledWindow(gtk.ScrolledWindow):
-        """
-        A simple treeview/liststore assuming all columns are strings.
-        Supports ascending/descending sort by clicking on column header
-        """
-
-        def __init__(self, colheaders, formatterd=None):
-            """
-            xalignd if not None, is a dict mapping col header to xalignent 
(default 1)
-
-            formatterd if not None, is a dict mapping col header to a 
ColumnFormatter
-            """
-
-
-            gtk.ScrolledWindow.__init__(self)
-            self.colheaders = colheaders
-            self.seq = None # not initialized with accts
-            self.set_shadow_type(gtk.SHADOW_ETCHED_IN)
-            self.set_policy(gtk.POLICY_AUTOMATIC,
-                            gtk.POLICY_AUTOMATIC)
-
-            types = [gobject.TYPE_STRING] * len(colheaders)
-            model = self.model = gtk.ListStore(*types)
-
-
-            treeview = gtk.TreeView(self.model)
-            treeview.show()
-            treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
-            treeview.set_rules_hint(True)
-
-
-            class Clicked:
-                def __init__(self, parent, i):
-                    self.parent = parent
-                    self.i = i
-                    self.num = 0
-
-                def __call__(self, column):
-                    ind = []
-                    dsu = []
-                    for rownum, thisiter in enumerate(self.parent.iters):
-                        val = model.get_value(thisiter, self.i)
-                        try: val = float(val.strip().rstrip('%'))
-                        except ValueError: pass
-                        if npy.isnan(val): val = npy.inf # force nan to sort 
uniquely
-                        dsu.append((val, rownum))
-                    dsu.sort()
-                    if not self.num%2: dsu.reverse()
-
-                    vals, otherind = zip(*dsu)
-                    ind.extend(otherind)
-
-                    self.parent.model.reorder(ind)
-                    newiters = []
-                    for i in ind:
-                        newiters.append(self.parent.iters[i])
-                    self.parent.iters = newiters[:]
-                    for i, thisiter in enumerate(self.parent.iters):
-                        key = tuple([self.parent.model.get_value(thisiter, j) 
for j in range(len(colheaders))])
-                        self.parent.rownumd[i] = key
-
-                    self.num+=1
-
-
-            if formatterd is None:
-                formatterd = dict()
-
-            formatterd = formatterd.copy()
-
-            for i, header in enumerate(colheaders):
-                renderer = gtk.CellRendererText()
-                if header not in formatterd:
-                    formatterd[header] = ColumnFormatter()
-                formatter = formatterd[header]
-
-                column = gtk.TreeViewColumn(header, renderer, text=i)
-                renderer.set_property('xalign', formatter.xalign)
-                column.connect('clicked', Clicked(self, i))
-                column.set_property('clickable', True)
-
-                if formatter.cell is not None:
-                    column.set_cell_data_func(renderer, formatter.cell)
-
-                treeview.append_column(column)
-
-
-
-            self.formatterd = formatterd
-            self.lastcol = column
-            self.add(treeview)
-            self.treeview = treeview
-            self.clear()
-
-        def clear(self):
-            self.iterd = dict()
-            self.iters = []        # an ordered list of iters
-            self.rownumd = dict()  # a map from rownum -> symbol
-            self.model.clear()
-            self.datad = dict()
-
-
-        def flat(self, row):
-            seq = []
-            for i,val in enumerate(row):
-                formatter = self.formatterd.get(self.colheaders[i])
-                seq.extend([i,formatter.tostr(val)])
-            return seq
-
-        def __delete_selected(self, *unused): # untested
-
-
-            keyd = dict([(thisiter, key) for key, thisiter in 
self.iterd.values()])
-            for row in self.get_selected():
-                key = tuple(row)
-                thisiter = self.iterd[key]
-                self.model.remove(thisiter)
-                del self.datad[key]
-                del self.iterd[key]
-                self.iters.remove(thisiter)
-
-            for i, thisiter in enumerate(self.iters):
-                self.rownumd[i] = keyd[thisiter]
-
-
-
-        def delete_row(self, row):
-            key = tuple(row)
-            thisiter = self.iterd[key]
-            self.model.remove(thisiter)
-
-
-            del self.datad[key]
-            del self.iterd[key]
-            self.rownumd[len(self.iters)] = key
-            self.iters.remove(thisiter)
-
-            for rownum, thiskey in self.rownumd.items():
-                if thiskey==key: del self.rownumd[rownum]
-
-        def add_row(self, row):
-            thisiter = self.model.append()
-            self.model.set(thisiter, *self.flat(row))
-            key = tuple(row)
-            self.datad[key] = row
-            self.iterd[key] = thisiter
-            self.rownumd[len(self.iters)] = key
-            self.iters.append(thisiter)
-
-        def update_row(self, rownum, newrow):
-            key = self.rownumd[rownum]
-            thisiter = self.iterd[key]
-            newkey = tuple(newrow)
-
-            self.rownumd[rownum] = newkey
-            del self.datad[key]
-            del self.iterd[key]
-            self.datad[newkey] = newrow
-            self.iterd[newkey] = thisiter
-
-
-            self.model.set(thisiter, *self.flat(newrow))
-
-        def get_row(self, rownum):
-            key = self.rownumd[rownum]
-            return self.datad[key]
-
-        def get_selected(self):
-            selected = []
-            def foreach(model, path, iter, selected):
-                selected.append(model.get_value(iter, 0))
-
-            self.treeview.get_selection().selected_foreach(foreach, selected)
-            return selected
-
-
-
-    def rec2gtk(r, formatd=None, rownum=0, autowin=True):
-        """
-        save record array r to excel pyExcelerator worksheet ws
-        starting at rownum.  if ws is string like, assume it is a
-        filename and save to it
-
-        formatd is a dictionary mapping dtype name -> FormatXL instances
-
-        This function creates a SortedStringsScrolledWindow (derived
-        from gtk.ScrolledWindow) and returns it.  if autowin is True,
-        a gtk.Window is created, attached to the
-        SortedStringsScrolledWindow instance, shown and returned.  If
-        autowin=False, the caller is responsible for adding the
-        SortedStringsScrolledWindow instance to a gtk widget and
-        showing it.
-        """
-
-
-
-        if formatd is None:
-            formatd = dict()
-
-        formats = []
-        for i, name in enumerate(r.dtype.names):
-            dt = r.dtype[name]
-            format = formatd.get(name)
-            if format is None:
-                format = defaultformatd.get(dt.type, FormatObj())
-            #print 'gtk fmt factory', i, name, format, type(format)
-            format = gtkformat_factory(format, i)
-            formatd[name] = format
-
-
-        colheaders = r.dtype.names
-        scroll = SortedStringsScrolledWindow(colheaders, formatd)
-
-        ind = npy.arange(len(r.dtype.names))
-        for row in r:
-            scroll.add_row(row)
-
-
-        if autowin:
-            win = gtk.Window()
-            win.set_default_size(800,600)
-            win.add(scroll)
-            win.show_all()
-            scroll.win = win
-
-        return scroll
-
-

Modified: trunk/matplotlib/src/_backend_agg.cpp
===================================================================
--- trunk/matplotlib/src/_backend_agg.cpp       2007-12-13 16:04:14 UTC (rev 
4719)
+++ trunk/matplotlib/src/_backend_agg.cpp       2007-12-13 16:06:59 UTC (rev 
4720)
@@ -251,7 +251,7 @@
   alphaMaskRenderingBuffer = new agg::rendering_buffer;
   alphaMaskRenderingBuffer->attach(alphaBuffer, width, height, stride);
   alphaMask = new alpha_mask_type(*alphaMaskRenderingBuffer);
-  //jdh
+
   pixfmtAlphaMask = new agg::pixfmt_gray8(*alphaMaskRenderingBuffer);
   rendererBaseAlphaMask = new renderer_base_alpha_mask_type(*pixfmtAlphaMask);
   rendererAlphaMask = new renderer_alpha_mask_type(*rendererBaseAlphaMask);
@@ -441,7 +441,6 @@
   GCAgg gc = GCAgg(args[0], dpi);
   facepair_t face = _get_rgba_face(args[1], gc.alpha);
 
-
   double l = Py::Float( args[2] );
   double b = Py::Float( args[3] );
   double w = Py::Float( args[4] );
@@ -2022,7 +2021,6 @@
     delete [] fillCache;
   delete [] strokeCache;
 
-  //jdh
   _VERBOSE("RendererAgg::_draw_markers_cache done");
   return Py::Object();
 
@@ -2200,6 +2198,7 @@
   agg::span_allocator<agg::gray8> gray_span_allocator;
   image_span_gen_type image_span_generator(gray_span_allocator,
                                           srcbuf, 0, interpolator, filter);
+
   span_gen_type output_span_generator(&image_span_generator, gc.color);
   renderer_type ri(*rendererBase, output_span_generator);
   //agg::rasterizer_scanline_aa<> rasterizer;

Modified: trunk/matplotlib/src/_image.cpp
===================================================================
--- trunk/matplotlib/src/_image.cpp     2007-12-13 16:04:14 UTC (rev 4719)
+++ trunk/matplotlib/src/_image.cpp     2007-12-13 16:06:59 UTC (rev 4720)
@@ -297,7 +297,7 @@
 
 Py::Object
 Image::get_matrix(const Py::Tuple& args) {
-  _VERBOSE("Image::get_size");
+  _VERBOSE("Image::get_matrix");
 
   args.verify_length(0);
 
@@ -565,7 +565,7 @@
 
 Py::Object
 Image::get_size_out(const Py::Tuple& args) {
-  _VERBOSE("Image::get_size");
+  _VERBOSE("Image::get_size_out");
 
   args.verify_length(0);
 


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

-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to