tAdded preview panel, it's in a separate window, however - cross-stitch - interactively turn images into patterns for cross stitching
 (HTM) git clone git://src.adamsgaard.dk/cross-stitch
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit df5c2e0a88206408ff029ff93dfe729a8919a025
 (DIR) parent d37e43fe9fd4de97dbbe3164bb52d209bb210ab4
 (HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
       Date:   Fri, 14 Feb 2014 20:34:05 +0100
       
       Added preview panel, it's in a separate window, however
       
       Diffstat:
         M cross-stitch.py                     |      51 +++++++++++++++++++++++++------
       
       1 file changed, 42 insertions(+), 9 deletions(-)
       ---
 (DIR) diff --git a/cross-stitch.py b/cross-stitch.py
       t@@ -5,15 +5,20 @@ import argparse
        import scipy.ndimage
        import scipy.misc
        import scipy.cluster
       -import numpy as np
       +import numpy
        import matplotlib
       -import matplotlib.pyplot as plt
       +matplotlib.use('WXAgg')
       +import matplotlib.figure
       +import matplotlib.backends
       +import matplotlib.backends.backend_wxagg
       +#import matplotlib.pyplot as plt
        import wx
        
        class CrossStitch:
        
            def __init__(self):
       -        pass
       +        self.img = numpy.zeros(3)
       +        self.read_image("fiskeren.jpg")
        
            def read_image(self, infile):
                try:
       t@@ -38,25 +43,54 @@ class CrossStitch:
                self.img = tmp.reshape(self.img.shape[0], self.img.shape[1], 3)
        
            def save_image(self, filename):
       -        fig = plt.figure()
       -        imgplot = plt.imshow(self.img)
       +        fig = matplotlib.pyplot.figure()
       +        imgplot = matplotlib.pyplot.imshow(self.img)
                imgplot.set_interpolation('nearest')
       -        plt.grid()
       -        plt.savefig(filename)
       +        matplotlib.pyplot.grid()
       +        matplotlib.pyplot.savefig(filename)
       +
       +    def image(self):
       +        return self.img
       +
       +class CanvasPanel(wx.Panel):
       +
       +    def __init__(self, parent, cs):
       +        wx.Panel.__init__(self, parent)
       +        self.figure = matplotlib.figure.Figure()
       +        self.axes = self.figure.add_subplot(111)
       +        self.canvas = matplotlib.backends.backend_wxagg.FigureCanvasWxAgg(\
       +                self, -1, self.figure)
       +        self.sizer = wx.BoxSizer(wx.VERTICAL)
       +        self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
       +        self.SetSizer(self.sizer)
       +        self.Fit()
       +
       +    def set_csobj(self, csobj):
       +        self.cs = csobj
       +
       +    def draw(self):
       +        self.axes.imshow(self.cs.image())
       +        self.axes.grid()
        
        
        class MainScreen(wx.Frame):
        
            def __init__(self, *args, **kwargs):
                super(MainScreen, self).__init__(*args, **kwargs)
       -        self.InitUI()
                self.cs = CrossStitch()
       +        self.InitUI()
        
            def InitUI(self):
        
                self.InitMenu()
                #self.InitToolbar()
        
       +        preview = wx.Frame(self)
       +        panel = CanvasPanel(preview, 'preview')
       +        panel.set_csobj(self.cs)
       +        panel.draw()
       +        preview.Show()
       +
                self.SetSize((600, 400))
                self.SetTitle('Main menu')
                self.Centre()
       t@@ -96,7 +130,6 @@ class MainScreen(wx.Frame):
                self.Bind(wx.EVT_TOOL, self.OnQuit, qtool)
        
                toolbar.Realize()
       -        
        
        
            def OnQuit(self, e):