File: ImageViewer.py

package info (click to toggle)
boa-constructor 0.4.4cvs20050714-4
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 10,080 kB
  • ctags: 9,175
  • sloc: python: 56,189; sh: 545; makefile: 40
file content (80 lines) | stat: -rw-r--r-- 2,842 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#Boa:MiniFrame:ImageViewer

import wx
import os, tempfile

def create(parent):
    return ImageViewer(parent)

imgs = {'.bmp' : wx.BITMAP_TYPE_BMP,
        '.gif' : wx.BITMAP_TYPE_GIF,
        '.png' : wx.BITMAP_TYPE_PNG,
        '.jpg' : wx.BITMAP_TYPE_JPEG}

[wxID_IMAGEVIEWER, wxID_IMAGEVIEWERSASHWINDOW1, wxID_IMAGEVIEWERSTATICBITMAP1, 
] = [wx.NewId() for _init_ctrls in range(3)]

class ImageViewer(wx.MiniFrame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.MiniFrame.__init__(self, id=wxID_IMAGEVIEWER, name='ImageViewer',
              parent=prnt, pos=wx.Point(401, 286), size=wx.Size(127, 131),
              style=wx.DEFAULT_FRAME_STYLE | wx.STAY_ON_TOP,
              title='Image viewer')
        self.SetClientSize(wx.Size(119, 104))

        self.sashWindow1 = wx.SashWindow(id=wxID_IMAGEVIEWERSASHWINDOW1,
              name='sashWindow1', parent=self, pos=wx.Point(0, 0),
              size=wx.Size(119, 104),
              style=wx.SW_BORDER | wx.THICK_FRAME | wx.SW_3D)
        self.sashWindow1.SetExtraBorderSize(self.borderSize)
        self.sashWindow1.SetMinimumSizeX(24)
        self.sashWindow1.SetMinimumSizeY(24)
        self.sashWindow1.Bind(wx.EVT_SIZE, self.OnSashwindow1Size)

        self.staticBitmap1 = wx.StaticBitmap(bitmap=wx.NullBitmap,
              id=wxID_IMAGEVIEWERSTATICBITMAP1, name='staticBitmap1',
              parent=self.sashWindow1, pos=wx.Point(9, 9), size=wx.Size(101,
              86), style=0)

    def __init__(self, parent, doubleClickCallback=None):
        self.borderSize = 30
        self._init_ctrls(parent)
        self.Centre(wx.BOTH)

        if doubleClickCallback:
            self.staticBitmap1.Bind(wx.EVT_LEFT_DCLICK, doubleClickCallback)

    def showImage(self, filename, node = None):
        if node is not None:
            fn = tempfile.mktemp(os.path.splitext(node.name)[-1])
            open(fn, 'wb').write(node.load())
        else:
            fn = filename

        self.SetTitle('Image Viewer - %s' %(os.path.basename(fn)))
        bmp = wx.Image(fn, imgs[os.path.splitext(fn)[-1].lower()]).ConvertToBitmap()
        self.sashWindow1.SetClientSize(wx.Size(bmp.GetWidth()+self.borderSize*2,
                                              bmp.GetHeight()+self.borderSize*2))
        self.SetClientSize(self.sashWindow1.GetSize())
        self.staticBitmap1.SetBitmap(bmp)

        if node is not None:
            os.remove(fn)

        self.Centre(wx.BOTH)
        self.Show(True)

    def OnSashwindow1Size(self, event):
        self.sashWindow1.Refresh()
        #self.staticBitmap1.Refresh()
        event.Skip()


if __name__ == '__main__':
    app = wx.PySimpleApp()
    wx.InitAllImageHandlers()
    frame = create(None)
    frame.Show(True)
    frame.showImage('../Images/Modules/wx.Frame.png')
    app.MainLoop()