#!/usr/bin/env python import struct import string import log # for logger setup. import logging logger = logging.getLogger('trayicon') from contribs.SysTrayIcon import win32con WM_MAP = wm = dict([(v,k) for k,v in win32con.__dict__.items() if k.startswith('WM_')]) try: struct.Struct except: class Struct(object): test_types = {"I":0, "s":''} # x,c,b,B,h,H,i,I,l,L,q,Q,f,d,s,p,P def __init__(self, format): self._format = format args = [] for f in [c for c in format if c not in string.digits]: args.append(self.test_types[f]) self.size = len(self.pack(*args)) def pack(self, *args): return struct.pack(self._format, *args) struct.Struct = Struct class PyNOTIFYICONDATA: _struct_format = ( "I" # DWORD cbSize; "I" # HWND hWnd; "I" # UINT uID; "I" # UINT uFlags; "I" # UINT uCallbackMessage; "I" # HICON hIcon; "128s" # TCHAR szTip[128]; "I" # DWORD dwState; "I" # DWORD dwStateMask; "256s" # TCHAR szInfo[256]; "I" # union { # UINT uTimeout; # UINT uVersion; #} DUMMYUNIONNAME; "64s" # TCHAR szInfoTitle[64]; "I" # DWORD dwInfoFlags; # GUID guidItem; ) _struct = struct.Struct(_struct_format) hWnd = 0 uID = 0 uFlags = 0 uCallbackMessage = 0 hIcon = 0 szTip = '' dwState = 0 dwStateMask = 0 szInfo = '' uTimeoutOrVersion = 0 szInfoTitle = '' dwInfoFlags = 0 def pack(self): return self._struct.pack( self._struct.size, self.hWnd, self.uID, self.uFlags, self.uCallbackMessage, self.hIcon, self.szTip, self.dwState, self.dwStateMask, self.szInfo, self.uTimeoutOrVersion, self.szInfoTitle, self.dwInfoFlags) def __setattr__(self, name, value): # avoid wrong field names if not hasattr(self, name): raise NameError, name self.__dict__[name] = value