All pastes #488100 Raw Edit

Matt

public python v1 · immutable
·published 2007-05-14 20:24 UTC
rendered paste body
#!/usr/bin/env pythonimport pygtkpygtk.require('2.0')import gtkimport twainclass ScanImage:    def __init__(self, name):        self.invisible = gtk.Invisible()        self.invisible.realize()        self.WindowID = self.invisible.window.handle        (self.SD, self.SM) = (None, None)        self.name = name        self.Acquire()        def Shutdown(self):        if self.SD: self.SD.destroy()        if self.SM: self.SM.destroy()        if self.invisible: self.invisible.destroy()        gtk.main_quit()        def GetTwainSource(self):        self.SM = twain.SourceManager(self.WindowID, ProductName="VMS Scan")        self.SM.SetCallback(self.OnTwainEvent)        self.SD = self.SM.OpenSource()      def Acquire(self):        if not self.SM:            self.GetTwainSource()        self.SD.SetCapability(twain.ICAP_XRESOLUTION, twain.TWTY_FIX32, 150.0)        self.SD.SetCapability(twain.ICAP_YRESOLUTION, twain.TWTY_FIX32, 150.0)        self.SD.RequestAcquire(0)        self.TwainMessage = None      def ProcessXFer(self, event):        (handle, more_to_come) = self.SD.XferImageNatively()        twain.DIBToBMFile(handle, self.name)        twain.GlobalHandleFree(handle)            def OnTwainEvent(self, event):        if event == twain.MSG_XFERREADY:            self.ProcessXFer(event)            self.Shutdown()        elif event == twain.MSG_CLOSEDSREQ:            self.Shutdown()            def main(self):        gtk.main()        filename = "test.bmp"scan = ScanImage(filename)scan.main()