示例#1
0
    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
示例#2
0
	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
示例#3
0
	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):
示例#4
0
	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
示例#5
0
	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
示例#6
0
    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
示例#7
0
    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
示例#8
0
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
示例#9
0
 def __init__(self):
     self.cbSize = sizeof(self)
示例#10
0
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