# Created by Leo from: C:\Python23\Tom\leo\Data_Minner.leo # <> import wx import threading import sys,string,time,os import Image import image_view import ImgQueryLib import ArgImagePlugin,BmpImagePlugin,CurImagePlugin,DcxImagePlugin,EpsImagePlugin,FliImagePlugin,FpxImagePlugin,GbrImagePlugin,GifImagePlugin,IcoImagePlugin,ImImagePlugin,ImtImagePlugin,IptcImagePlugin,JpegImagePlugin,McIdasImagePlugin,MicImagePlugin,MpegImagePlugin,MspImagePlugin,PcdImagePlugin,PcxImagePlugin,PdfImagePlugin,PixarImagePlugin,PngImagePlugin,PpmImagePlugin,PsdImagePlugin,SgiImagePlugin, SunImagePlugin,TgaImagePlugin,TiffImagePlugin,WmfImagePlugin import XVThumbImagePlugin,XbmImagePlugin,XpmImagePlugin # -- end -- <> # << googolstrip methods >> (1 of 4) def is_ord (string): new_text = '' for i in string: if ord(i) > 127: new_text = new_text + '' else: new_text = new_text + i return new_text # << googolstrip methods >> (2 of 4) def WXToPIL(image, mode = 'RGBA'): "convert a wx.Image to a PIL RGBA image" imageData = image.GetData() size = (image.GetWidth(), image.GetHeight()) imagePIL = Image.fromstring('RGB', size, imageData) if mode != 'RGB': imagePIL = imagePIL.convert(mode) return imagePIL # << googolstrip methods >> (3 of 4) class MyFrame(wx.Frame): # << class MyFrame methods >> (1 of 7) def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, -1, title, size = (500, 500),style = wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE ) self.notebook = wx.Notebook(self, wx.NewId(), style=wx.NB_TOP) self.ViewList = [] self.tommytest = Image.new('RGB',(128,128)) self.testimageflag = 0 self.images = {} self.imgmach = [] self.pages = {} self.SetAutoLayout(True) self.imgmach = [] self.db =[] #self.db.append('c:\\python22\\imgdatabase\\flowers\\ImgDB.dfi') if rootdb != []: for i in rootdb: self.db.append(i) self.totalthreadcount = 1 self.imgdatabase = ImgQueryLib.ImgDB() id = wx.NewId() sizer = wx.BoxSizer(wx.VERTICAL) btnSizer = wx.BoxSizer(wx.HORIZONTAL) btn = wx.Button(self, wx.NewId(), "Search Database", style=wx.BU_EXACTFIT) wx.EVT_BUTTON(self, btn.GetId(), self.OnOpenButton) btnSizer.Add(btn, 0, wx.EXPAND|wx.ALL, 2) btn = wx.Button(self, wx.NewId(), "Add Search Image", style=wx.BU_EXACTFIT) wx.EVT_BUTTON(self, btn.GetId(), self.OnImageButton) btnSizer.Add(btn, 0, wx.EXPAND|wx.ALL, 2) sizer.Add(btnSizer, 0, wx.EXPAND) #sizer.Add(self.CodeWindow, 1, wx.EXPAND) sizer.Add(self.notebook, 1, wx.EXPAND) self.SetSizer(sizer) self.SetAutoLayout(True) wx.EVT_SIZE(self, self.OnSize) #wx.EVT_IDLE(self, self.onIdle) # << class MyFrame methods >> (2 of 7) def OnOpenButton(self, event): for i in self.db: self.imgdatabase = ImgQueryLib.ImgDB(i) self.imgmach = self.imgdatabase.eng.query(self.tommytest,numres=20) for i in self.imgmach: aImage = Image.open(i.pair[0]) self.URLAdd(aImage, i.pair[0]) # << class MyFrame methods >> (3 of 7) def URLAdd(self,img, path): #id = wx.NewId() self.ViewList.append(image_view.ImageView(self.notebook,wx.NewId()))#,tools = [image_view.PanTool, image_view.ZoomTool, image_view.SaveTool])) self.ViewList[len(self.ViewList)-1].set_image(img) self.notebook.AddPage(self.ViewList[len(self.ViewList)-1],os.path.splitext(os.path.split(path)[1])[0]) # << class MyFrame methods >> (4 of 7) def OnSize(self, evt): self.Layout() # << class MyFrame methods >> (5 of 7) def OnDestroy(self,evt): evt.Skip() # << class MyFrame methods >> (6 of 7) def OnImageButton(self,evt): wildcard = "Jpeg (*.jpg)|*.jpg|Giff (*.gif)|*.gif|Bitmap (*.bmp)|*.bmp|All files (*.*)|*.*" dlg = wx.FileDialog(self, "Choose a file", "", "", wildcard, wx.OPEN) if dlg.ShowModal() == wx.ID_OK: path = str(dlg.GetPath()) dlg.Destroy() #print path self.tommytest = Image.open(path).convert('RGB') self.URLAdd(self.tommytest, path) self.tommytest = self.tommytest.resize((128,128)) self.testimageflag = 1 # << class MyFrame methods >> (7 of 7) def onIdle(self,evt): if self.totalthreadcount != threading.activeCount(): pass # -- end -- << class MyFrame methods >> # << googolstrip methods >> (4 of 4) class LogApp(wx.App): # << class App methods >> def OnInit(self): frame = MyFrame(None, -1, "Captain's Search") self.SetTopWindow(frame) frame.Show() return True # -- end -- << class App methods >> # -- end -- << googolstrip methods >> rootdb = [] #print sys.argv,'print sys.argv' if len(sys.argv)>1: for i in sys.argv[1:]: rootdb.append(str(os.path.normpath(sys.argv[1]))) #print rootdb app = LogApp(0) # Create an instance of the application class app.MainLoop() # Tell it to start processing event #!/usr/bin/python