def Write(self): if isinstance(self.textBuffer, list): text = [i for i in self.textBuffer if i != None] text = "%s\x00\x00" % "\x00".join(text) else: text = self.textBuffer sn = TBSNAPSHOT() sn.type = SNAP_COOKIE sn.version = 0 if self.tbSize: sn.cx, sn.cy = self.tbSize sn.cbText = len(text) sn.cbButtons = len(self.buttons) * sizeof(TBBUTTON) if self.userButtons: sn.cbUserButtons = sizeof(self.userButtons) sn.bytesInRes = sn.cbSize + sn.cbText + sn.cbButtons + sn.cbUserButtons p = buffer(sn)[:] p += buffer(text)[:] if self.buttons: p += buffer(self.buttons)[:] if self.userButtons: p += buffer(self.userButtons)[:] return p
def Write(self): if isinstance(self.textBuffer, list): text= [i for i in self.textBuffer if i != None] text= '%s\x00\x00' % '\x00'.join(text) else: text= self.textBuffer sn= TBSNAPSHOT() sn.type= SNAP_COOKIE sn.version= 0 if self.tbSize: sn.cx, sn.cy= self.tbSize sn.cbText= len(text) sn.cbButtons= len(self.buttons)* sizeof(TBBUTTON) if self.userButtons: sn.cbUserButtons= sizeof(self.userButtons) sn.bytesInRes= sn.cbSize+sn.cbText+sn.cbButtons+sn.cbUserButtons p= buffer(sn)[:] p+=buffer(text)[:] if self.buttons: p+=buffer(self.buttons)[:] if self.userButtons: p+=buffer(self.userButtons)[:] return p
def __init__(self): self.cbSize= sizeof(self) # emidiately following the cbOrderArray member is the the text array # array of TBBUTTON structures, next , next the order array. class Snapshot(object):
def __init__(self, parent, *styles): self.Style= Styles self.Msg= Msgs styles += 'subclass', control.BaseControl.__init__(self, parent, "ToolbarWindow32", "", 0, 0, 0, 0, *styles) self.SendMessage(self.Hwnd, self.Msg.TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0) self._client_snapshot= None self._client_textMax= 127
def __init__(self, hwnd, *styles): self.Style= Styles self.Msg= Msgs styles += 'subclass', control.ControlFromHandle.__init__(self, hwnd, *styles) self.SendMessage(self.Hwnd, self.Msg.TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0) self._client_snapshot= None self._client_textMax= 127
def __init__(self, hwnd, *styles): self.Style = Styles self.Msg = Msgs styles += 'subclass', control.ControlFromHandle.__init__(self, hwnd, *styles) self.SendMessage(self.Hwnd, self.Msg.TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0) self._client_snapshot = None self._client_textMax = 127
def __init__(self, parent, *styles): self.Style = Styles self.Msg = Msgs styles += 'subclass', control.BaseControl.__init__(self, parent, "ToolbarWindow32", "", 0, 0, 0, 0, *styles) self.SendMessage(self.Hwnd, self.Msg.TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0) self._client_snapshot = None self._client_textMax = 127
def ReadSnapshot(data): error = True data = create_string_buffer(data) addr = addressof(data) nBytes = UINT.from_address(addr) if nBytes.value == sizeof(data) - 1: n = 4 cb = UINT.from_address(addr + n) if cb.value == sizeof(TBSNAPSHOT): n += 4 type = (c_char * 2).from_address(addr + n) if type.value == SNAP_COOKIE: n += 2 # not used version = UINT.from_address(addr + n) n += 4 cbText = UINT.from_address(addr + n) n += 4 cbButtons = UINT.from_address(addr + n) if not cbButtons.value % sizeof(TBBUTTON): n += 4 cbUserButtons = UINT.from_address(addr + n) if not cbUserButtons.value % sizeof(TBBUTTON): n += 4 # access data section # text = data[n : n + cbText.value] n += cbText.value arrBt = (TBBUTTON * (cbButtons.value / sizeof(TBBUTTON)))() memmove(addressof(arrBt), addr + n, cbButtons.value) n += cbButtons.value if cbUserButtons.value: arrUBt = (TBBUTTON * (cbUserButtons.value / sizeof(TBBUTTON)))() memmove(addressof(arrUBt), addr + n, cbUserButtons.value) else: arrUBt = None # n+= cbUserButtons.value error = False else: error = "invalid user button array" else: error = "invalid button array" else: error = "invalid cookie" else: error = "invalid snapshot header" else: error = "sizeof missmatch" if error: raise ValueError("invalid data: %s" % error) return arrBt, text, arrUBt
def __init__(self): self.cbSize = sizeof(self)
def ReadSnapshot(data): error = True data= create_string_buffer(data) addr= addressof(data) nBytes= UINT.from_address(addr) if nBytes.value== sizeof(data)-1: n= 4 cb= UINT.from_address(addr+n) if cb.value== sizeof(TBSNAPSHOT): n+= 4 type= (c_char*2).from_address(addr+n) if type.value== SNAP_COOKIE: n += 2 # not used version= UINT.from_address(addr+n) n += 4 cbText= UINT.from_address(addr+n) n += 4 cbButtons= UINT.from_address(addr+n) if not cbButtons.value % sizeof(TBBUTTON): n += 4 cbUserButtons= UINT.from_address(addr+n) if not cbUserButtons.value % sizeof(TBBUTTON): n += 4 # access data section # text= data[n:n+cbText.value] n+= cbText.value arrBt= (TBBUTTON*(cbButtons.value / sizeof(TBBUTTON)))() memmove(addressof(arrBt), addr+n, cbButtons.value) n+= cbButtons.value if cbUserButtons.value: arrUBt= (TBBUTTON*(cbUserButtons.value / sizeof(TBBUTTON)))() memmove(addressof(arrUBt), addr+n, cbUserButtons.value) else: arrUBt=None #n+= cbUserButtons.value error= False else: error= "invalid user button array" else: error= "invalid button array" else: error= "invalid cookie" else: error= "invalid snapshot header" else: error= "sizeof missmatch" if error: raise ValueError("invalid data: %s" % error) return arrBt, text, arrUBt