commit 06aa11d93b666ae5b56ff83ede15d2a10adb010c
parent df5c2e0a88206408ff029ff93dfe729a8919a025
Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Fri, 14 Feb 2014 22:50:08 +0100
Open file works, image processing functions work from menu
Diffstat:
M | cross-stitch.py | | | 86 | ++++++++++++++++++++++++++++++++++++++++++++----------------------------------- |
1 file changed, 48 insertions(+), 38 deletions(-)
diff --git a/cross-stitch.py b/cross-stitch.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-import sys
+import sys, os
import argparse
import scipy.ndimage
import scipy.misc
@@ -18,7 +18,6 @@ class CrossStitch:
def __init__(self):
self.img = numpy.zeros(3)
- self.read_image("fiskeren.jpg")
def read_image(self, infile):
try:
@@ -52,46 +51,21 @@ class CrossStitch:
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.cs = CrossStitch()
self.InitUI()
+ self.contentNotSaved = False
def InitUI(self):
self.InitMenu()
#self.InitToolbar()
+ self.InitPreview()
- preview = wx.Frame(self)
- panel = CanvasPanel(preview, 'preview')
- panel.set_csobj(self.cs)
- panel.draw()
- preview.Show()
-
- self.SetSize((600, 400))
+ self.SetSize((600, 600))
self.SetTitle('Main menu')
self.Centre()
self.Show(True)
@@ -126,26 +100,62 @@ class MainScreen(wx.Frame):
def InitToolbar(self):
toolbar = self.CreateToolBar()
- qtool = toolbar.AddLabelTool(wx.ID_EXIT, 'Quit', wx.Bitmap('textit.png'))
+ qtool = toolbar.AddLabelTool(wx.ID_EXIT, 'Quit',
+ wx.Bitmap('textit.png'))
self.Bind(wx.EVT_TOOL, self.OnQuit, qtool)
toolbar.Realize()
+ def InitPreview(self):
+ 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 DrawPreview(self):
+ self.axes.grid(True)
+ self.axes.imshow(self.cs.image(), interpolation='nearest')
+ self.canvas.draw()
- def OnQuit(self, e):
+ def OnQuit(self, event):
self.Close()
- def OnOpen(self, e):
- self.cs.read_image("fiskeren.jpg")
-
- def OnSave(self, e):
+ def OnOpen(self, event):
+ if self.contentNotSaved:
+ if wx.MessageBox('Current image is not saved! Proceed?',
+ 'Please confirm', wx.ICON_QUESTION | wx.YES_NO, self) == \
+ wx.NO:
+ return
+
+ self.dirname = ''
+ openFileDialog = wx.FileDialog(self, 'Open image file', self.dirname,
+ '', 'JEPG files (*.jpg)|*.jpg',
+ wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
+
+ if openFileDialog.ShowModal() == wx.ID_OK:
+ self.filename = openFileDialog.GetFilename()
+ self.dirname = openFileDialog.GetDirectory()
+ self.cs.read_image(openFileDialog.GetPath())
+ self.DrawPreview()
+ openFileDialog.Destroy()
+
+ def OnSave(self, event):
self.cs.save_image("fisker-pattern.png")
+ self.contentNotSaved = False
- def OnDownSample(self, e):
+ def OnDownSample(self, event):
self.cs.down_sample(80)
+ self.contentNotSaved = True
+ self.DrawPreview()
- def OnLimitColors(self, e):
+ def OnLimitColors(self, event):
self.cs.limit_colors(16)
+ self.contentNotSaved = True
+ self.DrawPreview()