comctl.py :  » Windows » Venster » venster-0.72 » venster » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Windows » Venster 
Venster » venster 0.72 » venster » comctl.py
##      Copyright (c) 2003 Henk Punt

## Permission is hereby granted, free of charge, to any person obtaining
## a copy of this software and associated documentation files (the
## "Software"), to deal in the Software without restriction, including
## without limitation the rights to use, copy, modify, merge, publish,
## distribute, sublicense, and/or sell copies of the Software, and to
## permit persons to whom the Software is furnished to do so, subject to
## the following conditions:

## The above copyright notice and this permission notice shall be
## included in all copies or substantial portions of the Software.

## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
## NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
## LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
## OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
## WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE

from windows import *
from wtl import *

ATL_IDW_BAND_FIRST = 0xEB00
HTREEITEM = HANDLE
HIMAGELIST = HANDLE

UINT_MAX = (1l << 32)

LVCF_FMT     =1
LVCF_WIDTH   =2
LVCF_TEXT    =4
LVCF_SUBITEM =8
LVCF_IMAGE= 16
LVCF_ORDER= 32

TVIF_TEXT    = 1
TVIF_IMAGE   =2
TVIF_PARAM   =4
TVIF_STATE   =8
TVIF_HANDLE = 16
TVIF_SELECTEDIMAGE  = 32
TVIF_CHILDREN      =  64
TVIF_INTEGRAL      =  0x0080
TVIF_DI_SETITEM    =  0x1000

LVIF_TEXT   = 1
LVIF_IMAGE  = 2
LVIF_PARAM  = 4
LVIF_STATE  = 8
LVIF_DI_SETITEM =  0x1000

class MaskedStructureType(Structure.__class__):
    def __new__(cls, name, bases, dct):
        fields = []
        for field in dct['_fields_']:
            fields.append((field[0], field[1]))
            if len(field) == 4: #masked field
                dct[field[3]] = property(None,
                                         lambda self, val, field = field:
                                         self.setProperty(field[0], field[2], val))
        dct['_fields_'] = fields
        return Structure.__class__.__new__(cls, name, bases, dct)
    
class MaskedStructure(Structure):
    __metaclass__ = MaskedStructureType
    _fields_ = []

    def setProperty(self, name, mask, value):
        setattr(self, self._mask_, getattr(self, self._mask_) | mask)
        setattr(self, name, value)

    def clear(self):
        setattr(self, self._mask_, 0)
        
class NMCBEENDEDIT(Structure):
    _fields_ = [("hdr", NMHDR),
                ("fChanged", BOOL),
                ("iNewSelection", INT),
                ("szText", POINTER(TCHAR)),
                ("iWhy", INT)]

class LVCOLUMN(MaskedStructure):
    _mask_ = 'mask'
    _fields_ = [("mask", UINT),
                ("fmt", INT, LVCF_FMT, "format"),
                ("cx", INT, LVCF_WIDTH, 'width'),
                ("pszText", LPTSTR, LVCF_TEXT, 'text'),
                ("cchTextMax", INT),
                ("iSubItem", INT),
                ("iImage", INT),
                ("iOrder", INT)]

class LVITEM(Structure):
    _fields_ = [("mask", UINT),
                ("iItem", INT),
                ("iSubItem", INT),
                ("state", UINT),
                ("stateMask", UINT),
                ("pszText", LPTSTR),
                ("cchTextMax", INT),
                ("iImage", INT),
                ("lParam", LPARAM),
                ("iIndent", INT)]


class TVITEMEX(MaskedStructure):
    _mask_ = 'mask'
    _fields_ = [("mask", UINT),
                ("hItem", HTREEITEM),
                ("state", UINT),
                ("stateMask", UINT),
                ("pszText", LPTSTR, TVIF_TEXT, 'text'),
                ("cchTextMax", INT),
                ("iImage", INT, TVIF_IMAGE, 'image'),
                ("iSelectedImage", INT, TVIF_SELECTEDIMAGE, 'selectedImage'),
                ("cChildren", INT, TVIF_CHILDREN, 'children'),
                ("lParam", LPARAM, TVIF_PARAM, 'param'),
                ("iIntegral", INT)]

class TVITEM(Structure):
    _fields_ = [("mask", UINT),
                ("hItem", HTREEITEM),
                ("state", UINT),
                ("stateMask", UINT),
                ("pszText", LPTSTR),
                ("cchTextMax", INT),
                ("iImage", INT),
                ("iSelectedImage", INT),
                ("cChildren", INT),
                ("lParam", LPARAM)]

class TBBUTTON(Structure):
    _fields_ = [("iBitmap", INT),
                ("idCommand", INT),
                ("fsState", BYTE),
                ("fsStyle", BYTE),
                ("bReserved", BYTE * 2),
                ("dwData", DWORD_PTR),
                ("iString", INT_PTR)]

class TBBUTTONINFO(Structure):
    _fields_ = [("cbSize", UINT),
                ("dwMask", DWORD),
                ("idCommand", INT),
                ("iImage", INT),
                ("fsState", BYTE),
                ("fsStyle", BYTE),
                ("cx", WORD),
                ("lParam", DWORD_PTR),
                ("pszText", LPTSTR),
                ("cchText", INT)]

class TVINSERTSTRUCT(Structure):
    _fields_ = [("hParent", HTREEITEM),
                ("hInsertAfter", HTREEITEM),
                ("itemex", TVITEMEX)]

class TCITEM(Structure):
    _fields_ = [("mask", UINT),
                ("dwState", DWORD),
                ("dwStateMask", DWORD),
                ("pszText", LPTSTR),
                ("cchTextMax", INT),
                ("iImage", INT),
                ("lParam", LPARAM)]

class NMTREEVIEW(Structure):
    _fields_ = [("hdr", NMHDR),
                ("action", UINT),
                ("itemOld", TVITEM),
                ("itemNew", TVITEM),
                ("ptDrag", POINT)]

class NMLISTVIEW(Structure):
    _fields_ = [("hrd", NMHDR),
                ("iItem", INT),
                ("iSubItem", INT),
                ("uNewState", UINT),
                ("uOldState", UINT),
                ("uChanged", UINT),
                ("ptAction", POINT),
                ("lParam", LPARAM)]
    
class INITCOMMONCONTROLSEX(Structure):
    _fields_ = [("dwSize", DWORD),
                ("dwICC", DWORD)]

class REBARINFO(Structure):
    _fields_ = [("cbSize", UINT),
                ("fMask", UINT),
                ("himl", HIMAGELIST)]

class REBARBANDINFO(Structure):
    _fields_ = [("cbSize", UINT),
                ("fMask", UINT),
                ("fStyle", UINT),
                ("clrFore", COLORREF),
                ("clrBack", COLORREF),
                ("lpText", LPTSTR),
                ("cch", UINT),
                ("iImage", INT),
                ("hwndChild", HWND),
                ("cxMinChild", UINT),
                ("cyMinChild", UINT),
                ("cx", UINT),
                ("hbmBack", HBITMAP),
                ("wID", UINT),
                ("cyChild", UINT),
                ("cyMaxChild", UINT),
                ("cyIntegral", UINT),
                ("cxIdeal", UINT),
                ("lParam", LPARAM),
                ("cxHeader", UINT)]

class NMTOOLBAR(Structure):
    _fields_ = [("hdr", NMHDR),
                ("iItem", INT),
                ("tbButton", TBBUTTON),
                ("cchText", INT),
                ("pszText", LPTSTR),
                ("rcButton", RECT)]

class NMTBHOTITEM(Structure):
    _fields_ = [("hdr", NMHDR),
                ("idOld", INT),
                ("idNew", INT),
                ("dwFlags", DWORD)]

class PBRANGE(Structure):
    _fields_ = [("iLow", INT),
                ("iHigh", INT)]
    
class NMITEMACTIVATE(Structure):
    _fields_ = [("hdr", NMHDR),
                ("iItem", c_int),
                ("iSubItem", c_int),
                ("uNewState", UINT),
                ("uOldState", UINT),
                ("uChanged", UINT),
                ("ptAction", POINT),
                ("lParam", LPARAM),
                ("uKeyFlags", UINT)]

NM_FIRST    =   UINT_MAX

SBS_BOTTOMALIGN = 4
SBS_HORZ = 0
SBS_LEFTALIGN = 2
SBS_RIGHTALIGN = 4
SBS_SIZEBOX = 8
SBS_SIZEBOXBOTTOMRIGHTALIGN = 4
SBS_SIZEBOXTOPLEFTALIGN = 2
SBS_SIZEGRIP = 16
SBS_TOPALIGN = 2
SBS_VERT = 1

CCS_NODIVIDER =  64
CCS_NOPARENTALIGN = 8
CCS_NORESIZE = 4
CCS_TOP = 1


CBS_DROPDOWN = 2

RBBS_BREAK = 1
RBBS_FIXEDSIZE = 2
RBBS_CHILDEDGE = 4
RBBS_HIDDEN = 8
RBBS_NOVERT = 16
RBBS_FIXEDBMP = 32
RBBS_VARIABLEHEIGHT = 64
RBBS_GRIPPERALWAYS = 128
RBBS_NOGRIPPER = 256

RBS_TOOLTIPS = 256
RBS_VARHEIGHT = 512
RBS_BANDBORDERS = 1024
RBS_FIXEDORDER = 2048

RBS_REGISTERDROP = 4096
RBS_AUTOSIZE = 8192
RBS_VERTICALGRIPPER = 16384
RBS_DBLCLKTOGGLE = 32768

RBN_FIRST  = ((UINT_MAX) - 831)
RBN_HEIGHTCHANGE = RBN_FIRST

TBSTYLE_FLAT = 2048
TBSTYLE_LIST = 4096
TBSTYLE_DROPDOWN = 8
TBSTYLE_TRANSPARENT = 0x8000
TBSTYLE_REGISTERDROP = 0x4000
TBSTYLE_BUTTON = 0x0000
TBSTYLE_AUTOSIZE = 0x0010
    
TB_BUTTONSTRUCTSIZE = WM_USER+30
TB_ADDBUTTONS       = WM_USER+20
TB_INSERTBUTTONA    = WM_USER + 21
TB_INSERTBUTTON     = WM_USER + 21
TB_BUTTONCOUNT      = WM_USER + 24
TB_GETITEMRECT      = WM_USER + 29
TB_SETBUTTONINFOW  =  WM_USER + 64
TB_SETBUTTONINFOA  =  WM_USER + 66
TB_SETBUTTONINFO   =  TB_SETBUTTONINFOA
TB_SETIMAGELIST    =  WM_USER + 48
TB_SETDRAWTEXTFLAGS =  WM_USER + 70
TB_PRESSBUTTON       = WM_USER + 3
TB_GETRECT        =      (WM_USER + 51)
TB_SETHOTITEM   =        (WM_USER + 72)
TB_HITTEST     =         (WM_USER + 69)
TB_GETHOTITEM  =         (WM_USER + 7)
TB_SETBUTTONSIZE     =  (WM_USER + 31)
TB_AUTOSIZE          =  (WM_USER + 33)

TVIF_TEXT    = 1
TVIF_IMAGE   =2
TVIF_PARAM   =4
TVIF_STATE   =8
TVIF_HANDLE = 16
TVIF_SELECTEDIMAGE  = 32
TVIF_CHILDREN      =  64
TVIF_INTEGRAL      =  0x0080
TVIF_DI_SETITEM    =  0x1000
 
TVI_ROOT     = 0xFFFF0000l
TVI_FIRST    = 0xFFFF0001l
TVI_LAST     = 0xFFFF0002l
TVI_SORT     = 0xFFFF0003l

TVGN_CHILD   =  4
TVGN_NEXT    =  1
TVGN_ROOT    =  0
TVGN_CARET   =           0x0009

TVIS_FOCUSED = 1
TVIS_SELECTED =       2
TVIS_CUT    = 4
TVIS_DROPHILITED   =  8
TVIS_BOLD  =  16
TVIS_EXPANDED      =  32
TVIS_EXPANDEDONCE  =  64
TVIS_OVERLAYMASK   =  0xF00
TVIS_STATEIMAGEMASK = 0xF000
TVIS_USERMASK      =  0xF000

TV_FIRST = 0x1100
TVM_INSERTITEMA =     TV_FIRST
TVM_INSERTITEMW =    (TV_FIRST+50)
TVM_INSERTITEM = TVM_INSERTITEMA
TVM_SETIMAGELIST =    (TV_FIRST+9)
TVM_DELETEITEM   =   (TV_FIRST+1)
TVM_GETNEXTITEM   =   (TV_FIRST+10)
TVM_EXPAND =   (TV_FIRST+2)
TVM_GETITEMSTATE=        (TV_FIRST + 39)
TVM_ENSUREVISIBLE=       (TV_FIRST + 20)
TVM_SELECTITEM=          (TV_FIRST + 11)
TVM_SETITEMA=            (TV_FIRST + 13)
TVM_SETITEMW =           (TV_FIRST + 63)
TVM_SETITEM= TVM_SETITEMA
TVM_GETITEMA=            (TV_FIRST + 12)
TVM_GETITEMW =           (TV_FIRST + 62)
TVM_GETITEM = TVM_GETITEMA


TVS_HASBUTTONS =       1
TVS_HASLINES = 2
TVS_LINESATROOT =      4
TVS_EDITLABELS  =      8
TVS_DISABLEDRAGDROP =  16
TVS_SHOWSELALWAYS =   32
TVS_CHECKBOXES =  256
TVS_TOOLTIPS = 128
TVS_RTLREADING = 64
TVS_TRACKSELECT = 512
TVS_FULLROWSELECT = 4096
TVS_INFOTIP = 2048
TVS_NONEVENHEIGHT = 16384
TVS_NOSCROLL  = 8192
TVS_SINGLEEXPAND  =1024
TVS_NOHSCROLL   =     0x8000

CBEN_FIRST  =  (UINT_MAX) - 800
CBEN_ENDEDITA = CBEN_FIRST - 5
CBEN_ENDEDITW = CBEN_FIRST - 6
CBEN_ENDEDIT = CBEN_ENDEDITA

# trackbar styles
TBS_AUTOTICKS =           0x0001
TBS_VERT =                0x0002
TBS_HORZ =                0x0000
TBS_TOP =                 0x0004
TBS_BOTTOM =              0x0000
TBS_LEFT =                0x0004
TBS_RIGHT =               0x0000
TBS_BOTH =                0x0008
TBS_NOTICKS =             0x0010
TBS_ENABLESELRANGE =      0x0020
TBS_FIXEDLENGTH =         0x0040
TBS_NOTHUMB =             0x0080
TBS_TOOLTIPS =            0x0100

# trackbar messages
TBM_GETPOS =              (WM_USER)
TBM_GETRANGEMIN =         (WM_USER+1)
TBM_GETRANGEMAX =         (WM_USER+2)
TBM_GETTIC =              (WM_USER+3)
TBM_SETTIC =              (WM_USER+4)
TBM_SETPOS =              (WM_USER+5)
TBM_SETRANGE =            (WM_USER+6)
TBM_SETRANGEMIN =         (WM_USER+7)
TBM_SETRANGEMAX =         (WM_USER+8)
TBM_CLEARTICS =           (WM_USER+9)
TBM_SETSEL =              (WM_USER+10)
TBM_SETSELSTART =         (WM_USER+11)
TBM_SETSELEND =           (WM_USER+12)
TBM_GETPTICS =            (WM_USER+14)
TBM_GETTICPOS =           (WM_USER+15)
TBM_GETNUMTICS =          (WM_USER+16)
TBM_GETSELSTART =         (WM_USER+17)
TBM_GETSELEND =           (WM_USER+18)
TBM_CLEARSEL =            (WM_USER+19)
TBM_SETTICFREQ =          (WM_USER+20)
TBM_SETPAGESIZE =         (WM_USER+21)
TBM_GETPAGESIZE =         (WM_USER+22)
TBM_SETLINESIZE =         (WM_USER+23)
TBM_GETLINESIZE =         (WM_USER+24)
TBM_GETTHUMBRECT =        (WM_USER+25)
TBM_GETCHANNELRECT =      (WM_USER+26)
TBM_SETTHUMBLENGTH =      (WM_USER+27)
TBM_GETTHUMBLENGTH =      (WM_USER+28)
TBM_SETTOOLTIPS =         (WM_USER+29)
TBM_GETTOOLTIPS =         (WM_USER+30)
TBM_SETTIPSIDE =          (WM_USER+31)
TBM_SETBUDDY =            (WM_USER+32) 
TBM_GETBUDDY =            (WM_USER+33) 

# trackbar top-side flags
TBTS_TOP =                0
TBTS_LEFT =               1
TBTS_BOTTOM =             2
TBTS_RIGHT =              3


TB_LINEUP =               0
TB_LINEDOWN =             1
TB_PAGEUP =               2
TB_PAGEDOWN =             3
TB_THUMBPOSITION =        4
TB_THUMBTRACK =           5
TB_TOP =                  6
TB_BOTTOM =               7
TB_ENDTRACK =             8

# trackbar custom draw item specs
TBCD_TICS =    0x0001
TBCD_THUMB =   0x0002
TBCD_CHANNEL = 0x0003



STATUSCLASSNAME = "msctls_statusbar32"

REBARCLASSNAMEW = u"ReBarWindow32"
REBARCLASSNAMEA = "ReBarWindow32"
REBARCLASSNAME = REBARCLASSNAMEA

PROGRESS_CLASSW = u"msctls_progress32"
PROGRESS_CLASSA = "msctls_progress32"
PROGRESS_CLASS = PROGRESS_CLASSA

TRACKBAR_CLASSW = u"msctls_trackbar32"
TRACKBAR_CLASSA = "msctls_trackbar32"
TRACKBAR_CLASS = TRACKBAR_CLASSA


EDIT = "Edit"
BUTTON = "BUTTON"

WC_COMBOBOXEXW = u"ComboBoxEx32"
WC_COMBOBOXEXA = "ComboBoxEx32"
WC_COMBOBOXEX = WC_COMBOBOXEXA

WC_TREEVIEWA = "SysTreeView32"
WC_TREEVIEWW = u"SysTreeView32"
WC_TREEVIEW = WC_TREEVIEWA

WC_LISTVIEWA = "SysListView32"
WC_LISTVIEWW = u"SysListView32"
WC_LISTVIEW = WC_LISTVIEWA

TOOLBARCLASSNAMEW = u"ToolbarWindow32"
TOOLBARCLASSNAMEA = "ToolbarWindow32"
TOOLBARCLASSNAME = TOOLBARCLASSNAMEA

WC_TABCONTROLA =    "SysTabControl32"
WC_TABCONTROLW =      u"SysTabControl32"
WC_TABCONTROL = WC_TABCONTROLA

LVS_ICON    = 0
LVS_REPORT   =1
LVS_SMALLICON =       2
LVS_LIST    = 3
LVS_TYPEMASK= 3
LVS_SINGLESEL=        4
LVS_SHOWSELALWAYS=    8
LVS_SORTASCENDING =   16
LVS_SORTDESCENDING =  32
LVS_SHAREIMAGELISTS = 64
LVS_NOLABELWRAP     = 128
LVS_AUTOARRANGE     = 256
LVS_EDITLABELS      = 512
LVS_NOSCROLL= 0x2000
LVS_TYPESTYLEMASK  =  0xfc00
LVS_ALIGNTOP= 0
LVS_ALIGNLEFT =       0x800
LVS_ALIGNMASK  =      0xc00
LVS_OWNERDRAWFIXED=   0x400
LVS_NOCOLUMNHEADER =  0x4000
LVS_NOSORTHEADER   =  0x8000
LVS_OWNERDATA =4096
LVS_EX_CHECKBOXES= 4
LVS_EX_FULLROWSELECT= 32
LVS_EX_GRIDLINES =1
LVS_EX_HEADERDRAGDROP= 16
LVS_EX_ONECLICKACTIVATE= 64
LVS_EX_SUBITEMIMAGES= 2
LVS_EX_TRACKSELECT= 8
LVS_EX_TWOCLICKACTIVATE= 128
LVS_EX_FLATSB       = 0x00000100
LVS_EX_REGIONAL     = 0x00000200
LVS_EX_INFOTIP      = 0x00000400
LVS_EX_UNDERLINEHOT = 0x00000800
LVS_EX_UNDERLINECOLD= 0x00001000
LVS_EX_MULTIWORKAREAS =       0x00002000
LVS_EX_LABELTIP     = 0x00004000
LVS_EX_BORDERSELECT = 0x00008000

LVIS_FOCUSED         =   0x0001
LVIS_SELECTED        =   0x0002
LVIS_CUT             =   0x0004
LVIS_DROPHILITED     =   0x0008
LVIS_ACTIVATING      =   0x0020

LVIS_OVERLAYMASK      =  0x0F00
LVIS_STATEIMAGEMASK   =  0xF000

LVM_FIRST = 0x1000
LVM_INSERTCOLUMNA = (LVM_FIRST+27)
LVM_INSERTCOLUMN = LVM_INSERTCOLUMNA
LVM_INSERTITEMA = (LVM_FIRST+7)
LVM_SETITEMA = (LVM_FIRST+6)
LVM_INSERTITEM = LVM_INSERTITEMA
LVM_SETITEM = LVM_SETITEMA
LVM_DELETEALLITEMS =  (LVM_FIRST + 9)
LVM_SETITEMSTATE  =  (LVM_FIRST + 43)
LVM_GETITEMCOUNT  =  (LVM_FIRST + 4)
LVM_GETITEMSTATE   =  (LVM_FIRST + 44)
LVM_GETSELECTEDCOUNT =   (LVM_FIRST + 50)
LVM_SETCOLUMNA  =        (LVM_FIRST + 26)
LVM_SETCOLUMNW  =        (LVM_FIRST + 96)
LVM_SETCOLUMN = LVM_SETCOLUMNA
LVM_SETCOLUMNWIDTH =  (LVM_FIRST + 30)
LVM_GETITEMA   =         (LVM_FIRST + 5)
LVM_GETITEMW   =         (LVM_FIRST + 75)
LVM_GETITEM = LVM_GETITEMA
LVM_SETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 54)

LVN_FIRST = (UINT_MAX) - 100
LVN_ITEMCHANGING    =    (LVN_FIRST-0)
LVN_ITEMCHANGED     =    (LVN_FIRST-1)
LVN_INSERTITEM      =    (LVN_FIRST-2)
LVN_DELETEITEM       =   (LVN_FIRST-3)
LVN_DELETEALLITEMS    =  (LVN_FIRST-4)
LVN_BEGINLABELEDITA   =  (LVN_FIRST-5)
LVN_BEGINLABELEDITW   =  (LVN_FIRST-75)
LVN_ENDLABELEDITA     =  (LVN_FIRST-6)
LVN_ENDLABELEDITW     =  (LVN_FIRST-76)
LVN_COLUMNCLICK       =  (LVN_FIRST-8)
LVN_BEGINDRAG         =  (LVN_FIRST-9)
LVN_BEGINRDRAG        =  (LVN_FIRST-11)


NM_OUTOFMEMORY    =      (NM_FIRST-1)
NM_CLICK          =      (NM_FIRST-2)   
NM_DBLCLK         =      (NM_FIRST-3)
NM_RETURN         =      (NM_FIRST-4)
NM_RCLICK         =      (NM_FIRST-5)   
NM_RDBLCLK        =      (NM_FIRST-6)
NM_SETFOCUS       =      (NM_FIRST-7)
NM_KILLFOCUS      =      (NM_FIRST-8)
NM_CUSTOMDRAW     =      (NM_FIRST-12)
NM_HOVER          =      (NM_FIRST-13)
NM_NCHITTEST      =      (NM_FIRST-14)  
NM_KEYDOWN        =      (NM_FIRST-15)  
NM_RELEASEDCAPTURE=      (NM_FIRST-16)
NM_SETCURSOR      =      (NM_FIRST-17)  
NM_CHAR           =      (NM_FIRST-18)  

LVCFMT_LEFT = 0
LVCFMT_RIGHT= 1
LVCFMT_CENTER   =     2
LVCFMT_JUSTIFYMASK =  3
LVCFMT_BITMAP_ON_RIGHT =4096
LVCFMT_COL_HAS_IMAGES = 32768
LVCFMT_IMAGE =2048


ICC_LISTVIEW_CLASSES =1
ICC_TREEVIEW_CLASSES =2
ICC_BAR_CLASSES      =4
ICC_TAB_CLASSES      =8
ICC_UPDOWN_CLASS =16
ICC_PROGRESS_CLASS =32
ICC_HOTKEY_CLASS =64
ICC_ANIMATE_CLASS= 128
ICC_WIN95_CLASSES= 255
ICC_DATE_CLASSES =256
ICC_USEREX_CLASSES =512
ICC_COOL_CLASSES =1024
ICC_INTERNET_CLASSES =2048
ICC_PAGESCROLLER_CLASS =4096
ICC_NATIVEFNTCTL_CLASS= 8192

TCN_FIRST  =  (UINT_MAX) -550
TCN_LAST   =  (UINT_MAX) -580
TCN_KEYDOWN   =  TCN_FIRST
TCN_SELCHANGE =        (TCN_FIRST-1)
TCN_SELCHANGING  =     (TCN_FIRST-2)

TVE_COLLAPSE =1
TVE_EXPAND   =2
TVE_TOGGLE   =3
TVE_COLLAPSERESET   = 0x8000

TCM_FIRST   = 0x1300
TCM_INSERTITEMA  =    (TCM_FIRST+7)
TCM_INSERTITEMW  =   (TCM_FIRST+62)
TCM_INSERTITEM = TCM_INSERTITEMA
TCM_ADJUSTRECT = (TCM_FIRST+40)
TCM_GETCURSEL   =     (TCM_FIRST+11)
TCM_SETCURSEL   =     (TCM_FIRST+12)
TCM_GETITEMA = (TCM_FIRST+5)
TCM_GETITEMW = (TCM_FIRST+60)
TCM_GETITEM = TCM_GETITEMA

TVN_FIRST  =  ((UINT_MAX)-400)
TVN_LAST   =  ((UINT_MAX)-499)
TVN_ITEMEXPANDINGA =  (TVN_FIRST-5)
TVN_ITEMEXPANDINGW =  (TVN_FIRST-54)
TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGA
TVN_SELCHANGEDA  =    (TVN_FIRST-2)
TVN_SELCHANGEDW  =    (TVN_FIRST-51)
TVN_SELCHANGED  =  TVN_SELCHANGEDA
TVN_DELETEITEMA  =     (TVN_FIRST-9)
TVN_DELETEITEMW  =    (TVN_FIRST-58)
TVN_DELETEITEM = TVN_DELETEITEMA


SB_SIMPLE =   (WM_USER+9)
SB_SETTEXTA = (WM_USER+1)
SB_SETTEXTW = (WM_USER+11)
SB_SETTEXT = SB_SETTEXTA

SBT_OWNERDRAW   =     0x1000
SBT_NOBORDERS   =     256
SBT_POPOUT   = 512
SBT_RTLREADING =      1024
SBT_OWNERDRAW  =      0x1000
SBT_NOBORDERS  =      256
SBT_POPOUT   = 512
SBT_RTLREADING = 1024
SBT_TOOLTIPS = 0x0800

TBN_FIRST          =  ((UINT_MAX)-700)
TBN_DROPDOWN       =     (TBN_FIRST - 10)
TBN_HOTITEMCHANGE  =  (TBN_FIRST - 13)
TBDDRET_DEFAULT       =  0
TBDDRET_NODEFAULT     =  1
TBDDRET_TREATPRESSED  =  2

PBS_SMOOTH   = 0x01
PBS_VERTICAL = 0x04

CCM_FIRST      = 0x2000 # Common control shared messages
CCM_SETBKCOLOR = (CCM_FIRST + 1)

PBM_SETRANGE    = (WM_USER+1)
PBM_SETPOS      = (WM_USER+2)
PBM_DELTAPOS    = (WM_USER+3)
PBM_SETSTEP     = (WM_USER+4)
PBM_STEPIT      = (WM_USER+5)
PBM_SETRANGE32  = (WM_USER+6)
PBM_GETRANGE    = (WM_USER+7)
PBM_GETPOS      = (WM_USER+8)
PBM_SETBARCOLOR = (WM_USER+9)
PBM_SETBKCOLOR  = CCM_SETBKCOLOR

LB_ADDSTRING = 384
LB_INSERTSTRING = 385
LB_DELETESTRING = 386
LB_RESETCONTENT = 388
LB_GETCOUNT = 395
LB_SETTOPINDEX = 407

ImageList_Create = windll.comctl32.ImageList_Create
ImageList_Destroy = windll.comctl32.ImageList_Destroy
ImageList_AddMasked = windll.comctl32.ImageList_AddMasked
ImageList_AddIcon = windll.comctl32.ImageList_AddIcon
ImageList_SetBkColor = windll.comctl32.ImageList_SetBkColor


InitCommonControlsEx = windll.comctl32.InitCommonControlsEx

class Button(Window):
    _window_class_ = BUTTON
    _window_style_ = WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON
    
        
class StatusBar(Window):
    _window_class_ = STATUSCLASSNAME
    _window_style_ = WS_CHILD | WS_VISIBLE | SBS_SIZEGRIP

    def Simple(self, fSimple):
        self.SendMessage(SB_SIMPLE, fSimple, 0)
        
    def SetText(self, txt):
        self.SendMessage(SB_SETTEXT, (255 | SBT_NOBORDERS), txt)

class ComboBox(Window):
    _window_class_ = WC_COMBOBOXEX
    _window_style_ = WS_VISIBLE | WS_CHILD | CBS_DROPDOWN

class Edit(Window):
    _window_class__ = EDIT
    _window_style_ = WS_VISIBLE | WS_CHILD

class ListBox(Window):
    _window_class_ = 'ListBox'
    _window_style_ = WS_VISIBLE | WS_CHILD

    def AddString (self, txt):
        self.SendMessage(LB_ADDSTRING, 0, txt)

    def InsertString (self, idx, txt):
        self.SendMessage(LB_INSERTSTRING, idx, txt)

    def DeleteString (self, idx):
        self.SendMessage(LB_DELETESTRING, idx)

    def ResetContent (self):
        self.SendMessage(LB_RESETCONTENT)

    def GetCount (self):
        return self.SendMessage(LB_GETCOUNT)

    def SetTopIndex (self, idx):
        self.SendMessage (LB_SETTOPINDEX, idx)

class ProgressBar(Window):
    _window_class_ = PROGRESS_CLASS
    _window_style_ = WS_VISIBLE | WS_CHILD

    def SetRange(self, nMinRange, nMaxRange):
        if nMinRange > 65535 or nMaxRange > 65535:
            return self.SendMessage(PBM_SETRANGE32, nMinRange, nMaxRange)
        else:
            return self.SendMessage(PBM_SETRANGE, 0, MAKELPARAM(nMinRange, nMaxRange))

    def GetRange(self, fWhichLimit): # True=get low, False=get high range
        return self.SendMessage(PBM_GETRANGE, fWhichLimit, 0)

    def SetPos(self, nNewPos):
        return self.SendMessage(PBM_SETPOS, nNewPos, 0)

    def GetPos(self):
        return self.SendMessage(PBM_GETPOS, 0, 0)

    def SetBarColor(self, clrBar):
        return self.SendMessage(PBM_SETBARCOLOR, 0, clrBar)

    def SetBkColor(self, clrBk):
        return self.SendMessage(PBM_SETBKCOLOR, 0, clrBk)

    def SetStep(self, nStepInc):
        return self.SendMessage(PBM_SETSTEP, nStepInc, 0)

    def StepIt(self):
        return self.SendMessage(PBM_STEPIT, 0, 0)

    def DeltaPos(self, nIncrement):
        return self.SendMessage(PBM_DELTAPOS, nIncrement, 0)

class TrackBar(Window):
    _window_class_ = TRACKBAR_CLASS
    _window_style_ = WS_VISIBLE | WS_CHILD | TBS_AUTOTICKS | TBS_TOOLTIPS
    _window_style_ex_ = 0

    def __init__(self, *args, **kwargs):
        Window.__init__(self, *args, **kwargs)

    def SetRange(self, nMinRange, nMaxRange):
        return self.SendMessage(TBM_SETRANGE, 0, MAKELPARAM(nMinRange, nMaxRange))

    def SetPageSize(self, nSize):
        return self.SendMessage(TBM_SETPAGESIZE, 0, nSize)

    def GetPageSize(self):
        return self.SendMessage(TBM_GETPAGESIZE, 0, 0)

    def SetLineSize(self, nSize):
        return self.SendMessage(TBM_SETLINESIZE, 0, nSize)

    def GetLineSize(self):
        return self.SendMessage(TBM_GETLINESIZE, 0, 0)

    def GetRangeMin(self):
        return self.SendMessage(TBM_GETRANGEMIN, 0, 0)

    def GetRangeMax(self):
        return self.SendMessage(TBM_GETRANGEMAX, 0, 0)

    def SetPos(self,lPosition, fRedraw=1):
        return self.SendMessage(TBM_SETPOS, fRedraw, lPosition)

    def GetPos(self):
        return self.SendMessage(TBM_GETPOS, 0, 0)

    def ClearSel(self, fRedraw=0):
        return self.SendMessage(TBM_CLEARSEL, fRedraw, 0)

    def SetTickFreq(self, wFreq):
        return self.SendMessage(TBM_SETTICFREQ, wFreq, 0)

    def SetBuddy(self, hwndBuddy, fLocation=0):
        return self.SendMessage(TBM_SETBUDDY, fLocation, hwndBuddy)
    
class TabControl(Window):
    _window_class_ = WC_TABCONTROL
    _window_style_ = WS_VISIBLE | WS_CHILD | TCS_MULTILINE

    def InsertItem(self, iItem, item):        
        return self.SendMessage(TCM_INSERTITEM, iItem, byref(item))

    def GetItem(self, index, mask):
        item = TCITEM()
        item.mask = mask
        if self.SendMessage(TCM_GETITEM, index, byref(item)):
            return item
        else:
            raise "error"
        
    def AdjustRect(self, fLarger, rect):
        lprect = byref(rect)
        self.SendMessage(TCM_ADJUSTRECT, fLarger, lprect)

    def GetCurSel(self):
        return self.SendMessage(TCM_GETCURSEL)

    def SetCurSel(self, iItem):
        return self.SendMessage(TCM_SETCURSEL, iItem)
        
    
class TreeView(Window):
    _window_class_ = WC_TREEVIEW
    _window_style_ = WS_CHILD | WS_VISIBLE | WS_TABSTOP |\
                       TVS_HASBUTTONS|TVS_LINESATROOT|TVS_HASLINES
    _window_style_ex_ = 0

    def InsertItem(self, hParent, hInsertAfter, itemEx):
        insertStruct = TVINSERTSTRUCT()
        insertStruct.hParent = hParent
        insertStruct.hInsertAfter = hInsertAfter
        insertStruct.itemex = itemEx
        
        return self.SendMessage(TVM_INSERTITEM, 0, byref(insertStruct))
    
    def GetItem(self, item):
        return self.SendMessage(TVM_GETITEM, 0, byref(item))
        
    def SetImageList(self, imageList, iImage = TVSIL_NORMAL):
        return self.SendMessage(TVM_SETIMAGELIST, iImage, handle(imageList))

    def GetChildItem(self, hitem):
        """gets the first child of item"""
        return self.SendMessage(TVM_GETNEXTITEM, TVGN_CHILD, hitem)

    def GetNextItem(self, hitem):
        """gets the next sibling from item"""
        return self.SendMessage(TVM_GETNEXTITEM, TVGN_NEXT, hitem)
        
    def GetRootItem(self):
        """returns the root item"""
        return self.SendMessage(TVM_GETNEXTITEM, TVGN_ROOT)
    
    def CollapseAndReset(self, hitem):
        self.SendMessage(TVM_EXPAND, TVE_COLLAPSE|TVE_COLLAPSERESET, hitem)

    def DeleteAllItems(self):
        return self.SendMessage(TVM_DELETEITEM)

    def IsExpanded(self, hitem):
        return self.SendMessage(TVM_GETITEMSTATE, hitem, TVIS_EXPANDED)

    def Expand(self, hitem):
        return self.SendMessage(TVM_EXPAND, TVE_EXPAND, hitem)

    def EnsureVisible(self, hitem):
        return self.SendMessage(TVM_ENSUREVISIBLE, 0, hitem)

    def SelectItem(self, hitem):
        return self.SendMessage(TVM_SELECTITEM, TVGN_CARET, hitem)

    def GetSelection(self):
        return self.SendMessage(TVM_GETNEXTITEM, TVGN_CARET)
    
class ListView(Window):
    _window_class_ = WC_LISTVIEW
    _window_style_ = WS_CHILD | WS_VISIBLE | LVS_REPORT 
    _window_style_ex_ = 0
    _listview_style_ex_ = 0

    def __init__(self, *args, **kwargs):
        Window.__init__(self, *args, **kwargs)
        self.SetExtendedListViewStyle(self._listview_style_ex_, self._listview_style_ex_)
        
    def InsertColumn(self, iCol, lvcolumn):
        return self.SendMessage(LVM_INSERTCOLUMN, iCol, byref(lvcolumn))

    def SetColumn(self, iCol, lvcolumn):
        return self.SendMessage(LVM_SETCOLUMN, iCol, byref(lvcolumn))

    def SetColumnWidth(self, iCol, width):
        return self.SendMessage(LVM_SETCOLUMNWIDTH, iCol, width)
    
    def InsertItem(self, item):
        if item.iItem == -1: item.iItem = self.GetItemCount()
        return self.SendMessage(LVM_INSERTITEM, 0, byref(item))

    def SetItem(self, item):
        return self.SendMessage(LVM_SETITEM, 0, byref(item))

    def DeleteAllItems(self):
        return self.SendMessage(LVM_DELETEALLITEMS)

    def SetItemState(self, i, state, stateMask):
        item = LVITEM()
        item.iItem = i
        item.mask = LVIF_STATE
        item.state = state
        item.stateMask = stateMask
        return self.SendMessage(LVM_SETITEMSTATE, i, byref(item))

    def GetItemState(self, i, stateMask):
        return self.SendMessage(LVM_GETITEMSTATE, i, stateMask)
    
    def GetItemCount(self):
        return self.SendMessage(LVM_GETITEMCOUNT)

    def GetItemParam(self, i):
        item = LVITEM()
        item.iItem = i
        item.mask = LVIF_PARAM
        self.SendMessage(LVM_GETITEM, 0, byref(item))
        return item.lParam
    
    def SetItemCount(self, cItems, dwFlags = 0):
        self.SendMessage(LVM_SETITEMCOUNT, cItems, dwFlags)
        
    def GetSelectedCount(self):
        return self.SendMessage(LVM_GETSELECTEDCOUNT)

    def SetExtendedListViewStyle(self, dwExMask, dwExStyle):
        return self.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, dwExMask, dwExStyle)
    
class ToolBar(Window):
    _window_class_ = TOOLBARCLASSNAME
    _window_style_ = WS_CHILD | WS_VISIBLE

    def __init__(self, *args, **kwargs):
        Window.__init__(self, *args, **kwargs)
        self.SendMessage(TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0)
        
    def PressButton(self, idButton, fPress):
        return self.SendMessage(TB_PRESSBUTTON, idButton, fPress)

    def GetRect(self, idCtrl):
        rc = RECT()
        self.SendMessage(TB_GETRECT, idCtrl, byref(rc))
        return rc

    def HitTest(self, pt):
        return self.SendMessage(TB_HITTEST, 0, byref(pt))
        
    def SetHotItem(self, idButton):
        return self.SendMessage(TB_SETHOTITEM, idButton)

    def GetHotItem(self):
        return self.SendMessage(TB_GETHOTITEM)

    def InsertButton(self, iButton, tbButton):
        return self.SendMessage(TB_INSERTBUTTON, iButton, byref(tbButton))

    def SetImageList(self, imageList, iImage = 0):
        return self.SendMessage(TB_SETIMAGELIST, iImage, handle(imageList))

    def SetButtonSize(self, dxButton, dyButton):
        return self.SendMessage(TB_SETBUTTONSIZE, 0, MAKELONG(dxButton, dyButton))
            
class Rebar(Window):
    _window_class_ = REBARCLASSNAME
    _window_style_ = WS_CHILDWINDOW|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_BORDER|\
                       RBS_VARHEIGHT|RBS_BANDBORDERS|RBS_AUTOSIZE|RBS_DBLCLKTOGGLE|\
                       RBS_REGISTERDROP|CCS_NODIVIDER|CCS_TOP|CCS_NOPARENTALIGN
    _window_style_ex_ = WS_EX_LEFT|WS_EX_LTRREADING|WS_EX_RIGHTSCROLLBAR|WS_EX_TOOLWINDOW

    def __init__(self, *args, **kwargs):
        Window.__init__(self, *args, **kwargs)
        
        rebarInfo = REBARINFO()
        rebarInfo.cbSize = sizeof(REBARINFO)
        rebarInfo.fMask = 0
        rebarInfo.himl = NULL
        self.SendMessage(RB_SETBARINFO, 0, byref(rebarInfo))

class ImageList(WindowsObject):
    __dispose__ = ImageList_Destroy
    
    def __init__(self, cx, cy, flags, cInitial, cGrow):
        WindowsObject.__init__(self, ImageList_Create(cx, cy, flags, cInitial, cGrow))

    def AddMasked(self, bitmap, crMask):
        return ImageList_AddMasked(self.handle, handle(bitmap), crMask)

    def SetBkColor(self, clrRef):
        ImageList_SetBkColor(self.handle, clrRef)
        
    def AddIcon(self, hIcon):
        return ImageList_AddIcon(self.handle, hIcon)

    def AddIconsFromModule(self, moduleName, cx, cy, uFlags):
        hdll = GetModuleHandle(moduleName)
        i = 1
        #dont know how many icons there are in module, this loop
        #breaks if there are no more because then an exception is thrown:
        while 1:
            try:
                hIcon = LoadImage(hdll, i , IMAGE_ICON, cx, cy, uFlags)
                self.AddIcon(hIcon)
            except:
                break
            i += 1

        
def InitCommonControls(dwICC):
    iccex = INITCOMMONCONTROLSEX()
    iccex.dwSize = sizeof(INITCOMMONCONTROLSEX)
    iccex.dwICC = dwICC
    InitCommonControlsEx(byref(iccex))
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.