tadded dialogs for downsampling and color limit - 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 2dba3ebed51594bb4b433b377c3f1c8d664f44d3
 (DIR) parent 837beae0660c1a09a79f0caddf44c06d97c000f8
 (HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
       Date:   Sat, 15 Feb 2014 00:14:50 +0100
       
       added dialogs for downsampling and color limit
       
       Diffstat:
         M cross-stitch.py                     |      98 +++++++++----------------------
       
       1 file changed, 27 insertions(+), 71 deletions(-)
       ---
 (DIR) diff --git a/cross-stitch.py b/cross-stitch.py
       t@@ -52,52 +52,14 @@ class CrossStitch:
                return self.img
        
        
       -class DownSampleDialog(wx.Dialog):
       -
       -    def __init__(self, *args, **kw):
       -        super(DownSampleDialog, self).__init__(*args, **kw)
       -
       -        self.InitUI()
       -        self.SetSize((250, 200))
       -        self.SetTitle('Downsample image')
       -
       -    def InitUI(self):
       -
       -        pnl = wx.Panel(self)
       -        vbox = wx.BoxSizer(wx.VERTICAL)
       -
       -        sb = wx.StaticBox(pnl, label='New width')
       -        sbs = wx.StaticBoxSizer(sb, orient=wx.VERTICAL)
       -        sbs.Add(wx.Radiobutton(pnl, label='120 squares'))
       -        sbs.Add(wx.Radiobutton(pnl, label='80 squares', style=wx.RB_GROUP))
       -        sbs.Add(wx.Radiobutton(pnl, label='40 squares'))
       -
       -        hbox1 = wx.BoxSizer(wx.HORIZONTAL)
       -        hbox1.Add(wx.RadioButton(pnl, label='Custom'))
       -        hbox1.Add(wx.TextCtrl(pnl), flag=wx.LEFT, border=5)
       -        sbs.Add(hbox1)
       -
       -        pnl.SetSizer(sbs)
       -
       -        hbox2 = wx.BoxSizer(wx.HORIZONTAL)
       -        okButton = wx.Button(self, label='Ok')
       -        closeButton = wx.Button(self, label='Close')
       -        hbox2.Add(okButton)
       -        hbox2.Add(closeButton, flag=wx.LEFT, border=5)
       -
       -        vbox.Add(pnl, proportion=1, flag=wx.ALL|wx.EXPAND, border=5)
       -        vbox.Add(hbox2, flag=wx.ALIGN_CENTER|wx.TOP|wx.BOTTOM, border=10)
       -
       -        self.SetSiezr(vbox)
       -
       -
       -        okButton.Bind(wx.EVT_BUTTON, self.OnClose)
       -        closeButton.BIND(wx.EVT_BUTTON, self.OnClose)
       -
       -    def OnClose(self, event):
       -        self.Destroy()
       -
       -
       +def ask(parent=None, message=''):
       +    app = wx.App()
       +    dlg = wx.TextEntryDialog(parent, message)
       +    dlg.ShowModal()
       +    result = dlg.GetValue()
       +    dlg.Destroy()
       +    app.MainLoop()
       +    return result
        
        class MainScreen(wx.Frame):
        
       t@@ -109,8 +71,6 @@ class MainScreen(wx.Frame):
        
            def InitUI(self):
        
       -        self.ID_DOWNSAMPLING = wx.NewID()
       -
                self.InitMenu()
                #self.InitToolbar()
                self.InitPreview()
       t@@ -125,9 +85,9 @@ class MainScreen(wx.Frame):
                menubar = wx.MenuBar()
        
                fileMenu = wx.Menu()
       -        fitem = fileMenu.Append(wx.ID_OPEN, 'Open', 'Open image')
       +        fitem = fileMenu.Append(wx.ID_OPEN, 'Open image', 'Open image')
                self.Bind(wx.EVT_MENU, self.OnOpen, fitem)
       -        fitem = fileMenu.Append(wx.ID_SAVE, 'Save', 'Save image')
       +        fitem = fileMenu.Append(wx.ID_SAVE, 'Save image', 'Save image')
                self.Bind(wx.EVT_MENU, self.OnSave, fitem)
                fileMenu.AppendSeparator()
                fitem = fileMenu.Append(wx.ID_EXIT, 'Quit', 'Quit application')
       t@@ -135,12 +95,9 @@ class MainScreen(wx.Frame):
                menubar.Append(fileMenu, '&File')
        
                processingMenu = wx.Menu()
       -        #fitem = processingMenu.Append(wx.ID_ANY, 'Down sample',
       -        #        'Down sample image')
       -        #self.Bind(wx.EVT_MENU, self.OnDownSample, fitem)
       -        fitem = processingMenu.Append(id=self.ID_DOWNSAMPLING,
       -                label='Down sample')
       -        self.Bind(wx.EVT_TOOL, self.OnDownSample, id=self.ID_DOWNSAMPLING)
       +        fitem = processingMenu.Append(wx.ID_ANY, 'Down sample',
       +                'Down sample image')
       +        self.Bind(wx.EVT_MENU, self.OnDownSample, fitem)
                fitem = processingMenu.Append(wx.ID_ANY, 'Reduce number of colors',
                        'Reduce number of colors in image')
                self.Bind(wx.EVT_MENU, self.OnLimitColors, fitem)
       t@@ -211,25 +168,24 @@ class MainScreen(wx.Frame):
                self.contentNotSaved = False
        
            def OnDownSample(self, event):
       -        dwnsmpl = DownSampleDialog(None, title='Downsample image')
       -        dwnsmpl.ShowModal()
       -        dwnsmpl.Destroy()
       -        #self.cs.down_sample(80)
       -        #self.contentNotSaved = True
       -        #self.DrawPreview()
       +        dlg = wx.TextEntryDialog(None, 'Enter new width', defaultValue='50')
       +        ret = dlg.ShowModal()
       +        if ret == wx.ID_OK:
       +            width = int(dlg.GetValue())
       +            self.cs.down_sample(int(width))
       +            self.contentNotSaved = True
       +            self.DrawPreview()
        
            def OnLimitColors(self, event):
       -        self.cs.limit_colors(16)
       -        self.contentNotSaved = True
       -        self.DrawPreview()
       +        dlg = wx.TextEntryDialog(None, 'Enter the number of colors to include',
       +                defaultValue='16')
       +        ret = dlg.ShowModal()
       +        if ret == wx.ID_OK:
       +            self.cs.limit_colors(int(dlg.GetValue()))
       +            self.contentNotSaved = True
       +            self.DrawPreview()
        
            def OnAbout(self, event):
       -        #wx.MessageBox('Cross Stitch pattern generator\n' +
       -                #'Copyright 2014 Anders Damsgaard\n\n' +
       -                #'https://github.com/anders-dc/cross-stitch\n\n' +
       -                #'Licensed under the GNU Public License, version 3 or greater.' +
       -                #'\nSee https://www.gnu.org/licenses/gpl-3.0.txt for more ' +
       -                #'information.', 'About', wx.OK | wx.ICON_INFORMATION)
        
                description = '''Cross Stitch is a raster pattern generator for Linux,
        Mac OS X, and Windows. It features simple downscaling to coarsen the image