Beispiel #1
0
 def with_clipboard_lock(self,
                         success_callback,
                         failure_callback,
                         retries=RETRY,
                         delay=DELAY):
     log("with_clipboard_lock%s",
         (success_callback, failure_callback, retries, delay))
     r = OpenClipboard(self.window)
     if r:
         log("OpenClipboard(%#x)=%s", self.window, r)
         try:
             r = success_callback()
             log("%s()=%s", success_callback, r)
             if r:
                 return
         finally:
             r = CloseClipboard()
             log("CloseClipboard()=%s", r)
     e = WinError(GetLastError())
     owner = GetClipboardOwner()
     log("OpenClipboard(%#x)=%s, current owner: %s", self.window, e,
         get_owner_info(owner, self.window))
     if retries <= 0:
         failure_callback(
             "OpenClipboard: too many failed attempts, giving up")
         return
     #try again later:
     GLib.timeout_add(delay, self.with_clipboard_lock, success_callback,
                      failure_callback, retries - 1, delay + 5)
Beispiel #2
0
 def got_clipboard_lock():
     EmptyClipboard()
     c = 0
     for fmt, handle in image_formats.items():
         log("do_set_clipboard_image: %s", format_name(fmt))
         r = SetClipboardData(fmt, handle)
         if not r:
             e = WinError(GetLastError())
             log("SetClipboardData(%s, %#x)=%s (%s)", format_name(fmt), handle, r, e)
         else:
             c += 1
     return bool(c)
Beispiel #3
0
 def set_clipboard_data():
     r = EmptyClipboard()
     log("EmptyClipboard()=%s", r)
     if not r:
         self.set_err("failed to empty the clipboard")
         return False
     r = SetClipboardData(win32con.CF_UNICODETEXT, buf)
     if not r:
         e = WinError(GetLastError())
         log("SetClipboardData(CF_UNICODETEXT, %i chars)=%s (%s)", wlen, r, e)
         return False
     log("SetClipboardData(CF_UNICODETEXT, %i chars)=%s", wlen, r)
     cleanup()
     return True
Beispiel #4
0
 def with_clipboard_lock(self, success_callback, failure_callback, retries=5, delay=5):
     r = OpenClipboard(self.window)
     log("OpenClipboard(%#x)=%s", self.window, r)
     if r:
         try:
             success_callback()
             return
         finally:
             CloseClipboard()
     if GetLastError()!=ERROR_ACCESS_DENIED:
         failure_callback("OpenClipboard: access denied")
         return
     log("clipboard lock: access denied")
     if retries<=0:
         failure_callback("OpenClipboard: too many failed attemps, giving up")
         return
     #try again later:
     glib.timeout_add(delay, self.with_clipboard_lock,
                      success_callback, failure_callback, retries-1, delay)
Beispiel #5
0
 def with_clipboard_lock(self,
                         success_callback,
                         failure_callback,
                         retries=5,
                         delay=5):
     r = OpenClipboard(self.window)
     if r:
         log("OpenClipboard(%#x)=%s", self.window, r)
         try:
             success_callback()
             return
         finally:
             CloseClipboard()
     log("OpenClipboard(%#x)=%s, owner=%#x", self.window,
         WinError(GetLastError()), GetClipboardOwner())
     if retries <= 0:
         failure_callback(
             "OpenClipboard: too many failed attemps, giving up")
         return
     #try again later:
     glib.timeout_add(delay, self.with_clipboard_lock, success_callback,
                      failure_callback, retries - 1, delay + 5)