wnd-commit Mailing List for wnd (Page 8)
Status: Alpha
Brought to you by:
jurner
You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(125) |
Jun
|
Jul
(138) |
Aug
(13) |
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
From: jürgen u. <cer...@us...> - 2005-05-15 10:19:20
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/api/shell/shellnamespace In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11169 Modified Files: shellnamespace.dtpl Log Message: bit of this and a bit of that Index: shellnamespace.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/api/shell/shellnamespace/shellnamespace.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** shellnamespace.dtpl 29 Apr 2005 15:15:55 -0000 1.1.1.1 --- shellnamespace.dtpl 15 May 2005 10:19:11 -0000 1.2 *************** *** 1,3 **** ! ::site:: Shell CLSIDLs <code class=import>defined in: wnd.api.shell</code><br><br> --- 1,3 ---- ! DROPEFFECT_ ::site:: Shell CLSIDLs <code class=import>defined in: wnd.api.shell</code><br><br> *************** *** 53,64 **** --- 53,68 ---- ::item:: __iter__ <code>__iter__()</code><br> + <P> Iterates over the contents of the current folder, returning a relative pIdl for each item in turn. You should free each pIdl using the 'FreePidl' method. + </P> ::item:: Close <code>Close()</code><br> + <P> Closes the shells namespace. Make shure to call this in your application to free all remaining resources. + </P> *************** *** 66,114 **** ::item:: OpenFolder <code> OpenFolder(path)</code><br> Opens a folder. And sets it as current folder. Return value is the pIdl of the folder. You do not have to free it. ::item:: OpenSpecialFolder <code>OpenSpecialFolder(self, CLSIDL)</code><br> Opens a special folder. CLSIDL should be one of the CLSIDL_* constants as defined in <a HREF="../Shell CLSIDLs.html">Shell CLSIDLs</a>. Return value is the pIdl of the folder. You do not have to free it. ::item:: DirUp <code>DirUp()</code><br> Climbs the directory tree one level up to the parent directory of the current. Return value is True if successfull, False if the desktop level was allreaddy reached. ! Return value is the pIdl of the folder. You do not have to ! free it. ::item:: DirDown <code>DirDown(pIdl)</code><br> Climbs the directory tree one level down. pIdl should be a pIdl of a folder relative to the current ! folder. The pIdl is passed is freed by this method, so you ! can no longer use it. ::item:: GetCwd <code>GetCwd()</code><br> Returns the absolute pIdl of the current working ! directory. The returned pIdl has to be freed. Do not free it if you want to use it as an argument to SetCwd ::item:: SetCwd <code>SetCwd(pIdl)</code><br> ! Sets the current working directory. pIdl should be an ! absolute pIdl, as returned from the 'GetCwd' method. The passed pIdl is taken care of and freed in the next directory switch or when calling Close. If you want to keep the pIdl for own use make a copy of it with the CopyPidl method first. ::item:: Compare <code>Compare(pIdl1, pIdl2, lp=0)</code><br> Compares two pIdls given their indexes in the folders cache and returns the result. 1 if the first item should --- 70,140 ---- ::item:: OpenFolder <code> OpenFolder(path)</code><br> + <P> Opens a folder. And sets it as current folder. Return value is the pIdl of the folder. You do not have to free it. + </P> ::item:: OpenSpecialFolder <code>OpenSpecialFolder(self, CLSIDL)</code><br> + <P> Opens a special folder. CLSIDL should be one of the CLSIDL_* constants as defined in <a HREF="../Shell CLSIDLs.html">Shell CLSIDLs</a>. Return value is the pIdl of the folder. You do not have to free it. + </P> + + ::item:: IsDesktopFolder + <code>IsDesktopFolder()</code><br> + <P> + Returns True if the current working directry is the desktop folder, + False otherwise. + </P> ::item:: DirUp <code>DirUp()</code><br> + <P> Climbs the directory tree one level up to the parent directory of the current. Return value is True if successfull, False if the desktop level was allreaddy reached. ! Return value is the pIdl of the folder. You should not free this pIdl. ! </P> ::item:: DirDown <code>DirDown(pIdl)</code><br> + <P> Climbs the directory tree one level down. pIdl should be a pIdl of a folder relative to the current ! folder. The pIdl is passed is not freed by this method. ! </P> ::item:: GetCwd <code>GetCwd()</code><br> + <P> Returns the absolute pIdl of the current working ! directory. ! The returned pIdl has to be freed. Do not free it if you want to use it as an argument to SetCwd + </P> ::item:: SetCwd <code>SetCwd(pIdl)</code><br> ! <P> ! Sets the current working directory. ! <br><br> ! pIdl should be an absolute pIdl, as returned from the 'GetCwd' method. The passed pIdl is taken care of and freed in the next directory switch or when calling Close. If you want to keep the pIdl for own use make a copy of it with the CopyPidl method first. + <br><br> + pIdl may be None to switch to the desktop directory. + </P> ::item:: Compare <code>Compare(pIdl1, pIdl2, lp=0)</code><br> + <P> Compares two pIdls given their indexes in the folders cache and returns the result. 1 if the first item should *************** *** 118,129 **** --- 144,159 ---- this method could be well used as an argument to a listviews Sort method. + </P> ::item:: CompareExt <code>CompareExt(pIdl1, pIdl2, lp=0)</code><br> + <P> Alterate comparison method. Compares two pIdls by comparing their extension first. + </P> ::item:: GetIconIndex <code>GetIconIndex(pIdl=None)</code><br> + <P> Retrieves the index for the icon in the shells icon cache. Return value is the index or None if no icon was *************** *** 132,149 **** Todo:<br> The undocumented function SHGetCachedImageIndex ! is used here. Test on NT systems. ::item:: GetContextMenu <code>GetContextMenu(version, pIdl=None)</code><br> Returns the IContextMenu pointer for a folder or file. <br> TODO: <br> version is currently not implemented ::item:: ParseDisplayName <code>ParseDisplayName(path)</code><br> Returns the pIdl of the specified path. Remember to free the pIdl after use ::item:: GetName --- 162,184 ---- Todo:<br> The undocumented function SHGetCachedImageIndex ! is used here. Test on NT systems. ! </P> ::item:: GetContextMenu <code>GetContextMenu(version, pIdl=None)</code><br> + <P> Returns the IContextMenu pointer for a folder or file. <br> TODO: <br> version is currently not implemented + </P> ::item:: ParseDisplayName <code>ParseDisplayName(path)</code><br> + <P> Returns the pIdl of the specified path. Remember to free the pIdl after use + </P> ::item:: GetName *************** *** 154,219 **** ::item:: GetParseName ! <code></code><br> ! Returns the name parsable for ParseDisplayname, i.e. the full path. ::item:: GetAddressBarName <code>GetAddressBarName(pIdl=None)</code><br> Returns the name meant to be displayed in an addressbar. ::item:: SetName <code>SetName(name, pIdl=None)</code><br> Sets the name of an item. Return value is the new pIdl of the item. The old pIdl is freed in this method, the new pIdl has to be freed by the caller. ::item:: IsReadOnly <code>IsReadOnly(pIdl=None)</code><br> Returns True if the item is readonly. <br> Note:<br> Having some problems here. Returns allways False ::item:: IsFolder <code>IsFolder(pIdl=None)</code><br> ! Returns True if the item is a folder. ::item:: IsFileSystem <code>IsFileSystem(pIdl=None)</code><br> Returns True if the item is a file system thing (file/folder/root) ::item:: IsRemovable <code>IsRemovable(pIdl=None)</code><br> Returns True if the item is removable media. ::item:: IsLink <code>IsLink(pIdl=None)</code><br> Returns True if the item is a link. ::item:: IsHidden <code>IsHidden(pIdl=None)</code><br> Returns True when a ghosted icon should be used for displaying the item ::item:: IsShared <code>IsShared(pIdl=None)</code><br> Returns True if the item is shared ::item:: IsDropTarget <code>IsDropTarget(pIdl=None)</code><br> Returns True if the item is a droptarget ::item:: IsNonEnumerated <code>IsNonEnumerated(pIdl=None)</code><br> Returns True if the item is non-enumerated. ?? Dono what this is. ::item:: IsBrowsable <code>IsBrowsable(pIdl=None)</code><br> Returns True if the item is In-place browsable ::item:: IsCompressed --- 189,279 ---- ::item:: GetParseName ! <code>GetParseName(pIdl=None)</code><br> ! <P> ! Returns the name parsable for ParseDisplayname, i.e. the full path. ! </P> ::item:: GetAddressBarName <code>GetAddressBarName(pIdl=None)</code><br> + <P> Returns the name meant to be displayed in an addressbar. + </P> ::item:: SetName <code>SetName(name, pIdl=None)</code><br> + <P> Sets the name of an item. Return value is the new pIdl of the item. The old pIdl is freed in this method, the new pIdl has to be freed by the caller. + </P> ::item:: IsReadOnly <code>IsReadOnly(pIdl=None)</code><br> + <P> Returns True if the item is readonly. <br> Note:<br> Having some problems here. Returns allways False + </P> ::item:: IsFolder <code>IsFolder(pIdl=None)</code><br> ! <P>Returns True if the item is a folder. ! </P> ::item:: IsFileSystem <code>IsFileSystem(pIdl=None)</code><br> + <P> Returns True if the item is a file system thing (file/folder/root) + </P> ::item:: IsRemovable <code>IsRemovable(pIdl=None)</code><br> + <P> Returns True if the item is removable media. + </P> ::item:: IsLink <code>IsLink(pIdl=None)</code><br> + <P> Returns True if the item is a link. + </P> ::item:: IsHidden <code>IsHidden(pIdl=None)</code><br> + <P> Returns True when a ghosted icon should be used for displaying the item + </P> ::item:: IsShared <code>IsShared(pIdl=None)</code><br> + <P> Returns True if the item is shared + </P> ::item:: IsDropTarget <code>IsDropTarget(pIdl=None)</code><br> + <P> Returns True if the item is a droptarget + </P> ::item:: IsNonEnumerated <code>IsNonEnumerated(pIdl=None)</code><br> + <P> Returns True if the item is non-enumerated. ?? Dono what this is. + </P> ::item:: IsBrowsable <code>IsBrowsable(pIdl=None)</code><br> + <P> Returns True if the item is In-place browsable + </P> ::item:: IsCompressed *************** *** 223,281 **** ::item:: IsNewContent <code>IsNewContent(pIdl=None)</code><br> Returns True if the item should show bold in explorer tree ::item:: IsGhosted <code> IsGhosted(pIdl=None)</code><br> Returns True if the item should be displayed using a ghosted icon. ::item:: HasPropertySheet <code>HasPropertySheet(pIdl=None)</code><br> Returns True if the item has a property sheet ::item:: HasSubFolder <code>HasSubFolder(pIdl=None)</code><br> Returns True if the item has subfolder(s). Used to indicate the item is expandable in a directory tree. ::item:: HasFileSystemSubFolder <code> HasFileSystemSubFolder( pIdl=None)</code><br> Returns True if the item has subfolder(s) that are part of the file system. ::item:: CanRename <code>CanRename(pIdl=None)</code><br> Returns True if the item can be renamed ::item:: CanDelete <code>CanDelete(pIdl=None)</code><br> Returns True if the item can be renamed ::item:: CanCopy <code>CanCopy(pIdl=None)</code><br> Returns True if the item can be copied ::item:: CanMove <code>CanMove(pIdl=None)</code><br> Returns True if the item can be moved ::item:: CanLink <code>CanLink(pIdl=None)</code><br> ::item:: Validate <code>Validate(pIdl=None, validateall=False)</code><br> The shell keeps all item attributes cached. Use this to update the cached information for the item. If 'validateall' is True all items in the folder the item resides in will be refreshed. If the item does no longer exist an error is be raised. ::item:: PrintAttrs <code>PrintAttrs(pIdl=None)</code><br> ! "For informational purposes. Print out all attributes of an item to stdout. # ::item:: --- 283,395 ---- ::item:: IsNewContent <code>IsNewContent(pIdl=None)</code><br> + <P> Returns True if the item should show bold in explorer tree + </P> ::item:: IsGhosted <code> IsGhosted(pIdl=None)</code><br> + <P> Returns True if the item should be displayed using a ghosted icon. + </P> ::item:: HasPropertySheet <code>HasPropertySheet(pIdl=None)</code><br> + <P> Returns True if the item has a property sheet + </P> ::item:: HasSubFolder <code>HasSubFolder(pIdl=None)</code><br> + <P> Returns True if the item has subfolder(s). Used to indicate the item is expandable in a directory tree. + </P> ::item:: HasFileSystemSubFolder <code> HasFileSystemSubFolder( pIdl=None)</code><br> + <P> Returns True if the item has subfolder(s) that are part of the file system. + </P> ::item:: CanRename <code>CanRename(pIdl=None)</code><br> + <P> Returns True if the item can be renamed + </P> ::item:: CanDelete <code>CanDelete(pIdl=None)</code><br> + <P> Returns True if the item can be renamed + </P> ::item:: CanCopy <code>CanCopy(pIdl=None)</code><br> + <P> Returns True if the item can be copied + </P> ::item:: CanMove <code>CanMove(pIdl=None)</code><br> + <P> Returns True if the item can be moved + </P> ::item:: CanLink <code>CanLink(pIdl=None)</code><br> + <P>Returns True if the pIdl supports linking to it, False otherwise + </P> ::item:: Validate <code>Validate(pIdl=None, validateall=False)</code><br> + <P> The shell keeps all item attributes cached. Use this to update the cached information for the item. If 'validateall' is True all items in the folder the item resides in will be refreshed. If the item does no longer exist an error is be raised. + </P> + ::item:: GetAttributes + <code>GetAttributes(pIdl, attr, nItems=1)</code><br> + <P>Returns file attributes of pIdl. + <br><br> + attr should be the a combination of the SFGAO_* or DROPEFFECT_* + consts defined in shell.consts. + <br><br> + <b>Return value</b><br> + a long value containing the attributes. Use bitwise AND to compare. + <br><br> + <pre> + attrs= GetAttributes(MyPidl, shell.SFGAO_SHARE | shell.DROPEFFECT_COPY) + if attrs & shell.SFGAO_SHARE: + print 'item is shared' + + if attrs & shell.DROPEFFECT_COPY + print 'item can be copied' + + </pre> + + <br><br> + This proceses slightly faster then requesting attribute by attribute if multiple + attributes are requested. + + <br><br> + <b>Note</b><br> + nItems parameter is not yet implemented and should allways be 1. + </P> + + ::item:: PrintAttrs <code>PrintAttrs(pIdl=None)</code><br> ! <P> ! For informational purposes. Print out all attributes of an item to stdout. + </P> # ::item:: |
From: jürgen u. <cer...@us...> - 2005-05-15 10:16:58
|
Update of /cvsroot/wnd/wnd/wnd/sample-guis In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10832 Added Files: gui_shellnotify.py Log Message: new sample gui --- NEW FILE: gui_shellnotify.py --- """Sample GUI, monitoring file sytem related changes. (creating, deleting of files and folders and other related stuff)""" import wnd from wnd.api import shell from wnd.controls.listview import Listview import os #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: class window(wnd.Window): def __init__(self): self.title= 'SHNotify sample: -- monitoring [%s] --' self.sh= None self.shn= None self.shn_msg= wnd.RegisterWindowMessage("myMsg") wnd.Window.__init__(self, 'SHNotify sample', self.title % 'drop folder to monitor changes', None, None, None, None, 'sysmenu', 'sizebox') # setup a listview self.lv = Listview(self, 0, 0, 0, 0, 'report', 'border', 'fullrowselect', 'showselalways', 'gridlines') self.lv.Column('action') self.lv.Column('param1') self.lv.Column('param2') self.lv.onMSG=self.on_lv self.lv.DragAcceptFiles(True) self.lv.HandleMessage(self.shn_msg) # setup shell namespace and shell notify self.sh= shell.ShellNamespace() self.shn= shell.ShellNotify(self.lv, self.shn_msg, self.on_shellnotify) # callback for shell notify def on_shellnotify(self, hwnd, msg, wp, lp): if msg=="shellnotify": n= self.lv.Item(wp) if lp: if wp in ("rename", "renamefolder", "delete", "rmdir"): if lp[0]: self.lv.SetItemText(n, 1, self.sh.GetParseName(lp[0])) if lp[1]: self.lv.SetItemText(n, 2, self.sh.GetParseName(lp[1])) else: if lp[0]: self.lv.SetItemText(n, 1, self.sh.GetParseName(lp)) self.lv.EnshureVisible(n) # listview message handler def on_lv(self, hwnd, msg, wp, lp): if msg== self.shn_msg: self.shn.HandleMessage(hwnd, msg, wp, lp) elif msg=="droppedfiles": for i in lp: if os.path.isdir(i): pIdl= self.sh.ParseDisplayName(i) self.shn.Register(pIdl) self.SetText(str(self.title % self.sh.GetParseName(pIdl))) shell.PidlFree(pIdl) break # GUI message handler def onMSG(self, hwnd, msg, wp, lp): if msg=="size": self.lv.SetWindowPosAndSize(*lp) w= lp[2]/5 self.lv.SetColumnWidth(0, w) self.lv.SetColumnWidth(1, w*2) self.lv.SetColumnWidth(2, w*2) elif msg=="destroy": try: if self.shn: self.shn.Close() except: pass try: if self.sh: self.sh.Close() except: pass w = window() w.Run() |
From: jürgen u. <cer...@us...> - 2005-05-15 10:16:39
|
Update of /cvsroot/wnd/wnd/wnd/custom In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10621 Added Files: odcombobox.py odlistbox.py Log Message: new control --- NEW FILE: odcombobox.py --- """ TODO NOTES - GetFont/SetFont are unusable for ownerdraw comboboxes, so they are not imple mented """ from wnd.controls.blank import Blank from wnd.controls import windowclass from wnd.controls.combobox import Combobox from wnd.wintypes import (DRAWITEMSTRUCT, MEASUREITEMSTRUCT, WINDOWPOS, LOWORD, HIWORD) from wnd import fwtypes as fw #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: _CUSTOM_N_ODCOMBOBOXES = 0 class ODCombobox(Combobox): def __init__(self, parent, *styles): # register a class for a container window global _CUSTOM_N_ODCOMBOBOXES _CUSTOM_N_ODCOMBOBOXES += 1 c="odcombobox-container-%s" % _CUSTOM_N_ODCOMBOBOXES classname=windowclass.SZ_CONTROL_CLASS % c wc = windowclass.WindowClass() wc.SetClassName(classname) wc.SetCursor() wc.SetBackground('activecaption') ## some ugly color for testing # init the container self._custom_Container= Blank(parent, wc, 0, 0, 0, 0, *styles) self._custom_Container.onMESSAGE= self.onMESSAGEContainer self.Hwnd= 0 ## has to be initialized before creating the combobox # 'simple' comboboxes not get redrawn correctly when resized # right after __init__ (??). This is really unelegant, but currently helps. self._custom_bugfix= False def InitCombobox(self, x, y, w, h, *styles): Combobox.__init__(self, self._custom_Container, x, y, w, h, *styles) if self.GetStyleL('style') & 3 < 2: # simple comboobx self._custom_Container.SetWindowPosAndSize(x, y, w, h) else: rc= self.GetWindowRect() self._custom_Container.SetWindowPosAndSize(x, y, w, rc.bottom-rc.top) #----------------------------------------------------------------------------------------------- # catch the first WM_MEASUREITEM messages # send before Combobox returns from __init__ def onMESSAGEContainer(self, hwnd, msg, wp, lp): if msg== 44: # WM_MEASUREITEM: mi= MEASUREITEMSTRUCT.from_address(lp) self.onMSG(self.Hwnd, "measureitem", wp, mi) return 1 elif msg== 5: # WM_SIZE if self.Hwnd: if self.GetStyleL('style') & 3 < 2: # simple comboobx if not self._custom_bugfix: self._custom_bugfix= True self.SetWindowSize(LOWORD(lp)-1, HIWORD(lp)) self.SetWindowSize(LOWORD(lp), HIWORD(lp)) else: rc= self.GetWindowRect() self.SetWindowSize(LOWORD(lp), rc.bottom - rc.top) def onMESSAGE(self, hwnd, msg, wp, lp): if msg==fw.WND_WM_NOTIFY: if wp==fw.WND_NM_MSGREFLECT: msgr= fw.WND_MSGREFLECT.from_address(lp) if msgr.msg== 43: # WM_DRAWITEM msgr.fReturn= 1 di= DRAWITEMSTRUCT.from_address(msgr.lParam) self.onMSG(self.Hwnd, "drawitem", wp, di) return 1 elif msgr.msg== 44: # WM_MEASUREITEM msgr.fReturn= 1 mi= MEASUREITEMSTRUCT.from_address(msgr.lParam) self.onMSG(self.Hwnd, "measureitem", wp, mi) return 1 return Combobox.onMESSAGE(self, hwnd, msg, wp, lp) #----------------------------------------------------------------- # overwritten methods def onMSG(self, hwnd, msg, wp, lp): # overwrite pass def Show(self): return self._custom_Container.Show() def Hide(self): return self._custom_Container.Hide() def GetContainer(self): return self._custom_Container #************************************************************************************** class Styles: prefix=[] class Msgs: pass --- NEW FILE: odlistbox.py --- """ TODO NOTES """ from wnd.controls.blank import Blank from wnd.controls import windowclass from wnd.controls.listbox import Listbox from wnd.wintypes import (DRAWITEMSTRUCT, MEASUREITEMSTRUCT, WINDOWPOS, LOWORD, HIWORD) from wnd import fwtypes as fw #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: _CUSTOM_N_ODLISTBOXES = 0 class ODListbox(Listbox): def __init__(self, parent, *styles): # register a class for a container window global _CUSTOM_N_ODLISTBOXES _CUSTOM_N_ODLISTBOXES += 1 c="odlistbox-container-%s" % _CUSTOM_N_ODLISTBOXES classname=windowclass.SZ_CONTROL_CLASS % c wc = windowclass.WindowClass() wc.SetClassName(classname) wc.SetCursor() wc.SetBackground('activecaption') ## some ugly color for testing # init the container self._custom_Container= Blank(parent, wc, 0, 0, 0, 0, *styles) self._custom_Container.onMESSAGE= self.onMESSAGEContainer self.Hwnd= 0 ## has to be initialized before creating the combobox # 'simple' comboboxes not get redrawn correctly when resized # right after __init__ (??). This is really unelegant, but currently helps. self._custom_bugfix= False def InitListbox(self, x, y, w, h, *styles): Listbox.__init__(self, self._custom_Container, x, y, w, h, *styles) self._custom_Container.SetWindowPosAndSize(x, y, w, h) #----------------------------------------------------------------------------------------------- # catch the first WM_MEASUREITEM messages # send before Combobox returns from __init__ def onMESSAGEContainer(self, hwnd, msg, wp, lp): if msg== 44: # WM_MEASUREITEM: print 123 mi= MEASUREITEMSTRUCT.from_address(lp) self.onMSG(self.Hwnd, "measureitem", wp, mi) return 1 elif msg== 5: # WM_SIZE if self.Hwnd: if not self._custom_bugfix: self._custom_bugfix= True self.SetWindowSize(LOWORD(lp)-1, HIWORD(lp)) self.SetWindowSize(LOWORD(lp), HIWORD(lp)) def onMESSAGE(self, hwnd, msg, wp, lp): if msg==fw.WND_WM_NOTIFY: if wp==fw.WND_NM_MSGREFLECT: msgr= fw.WND_MSGREFLECT.from_address(lp) if msgr.msg== 43: # WM_DRAWITEM msgr.fReturn= 1 di= DRAWITEMSTRUCT.from_address(msgr.lParam) self.onMSG(self.Hwnd, "drawitem", wp, di) return 1 elif msgr.msg== 44: # WM_MEASUREITEM msgr.fReturn= 1 mi= MEASUREITEMSTRUCT.from_address(msgr.lParam) self.onMSG(self.Hwnd, "measureitem", wp, mi) return 1 return Listbox.onMESSAGE(self, hwnd, msg, wp, lp) #----------------------------------------------------------------- # overwritten methods def onMSG(self, hwnd, msg, wp, lp): # overwrite pass def Show(self): return self._custom_Container.Show() def Hide(self): return self._custom_Container.Hide() def GetContainer(self): return self._custom_Container #************************************************************************************** class Styles: prefix=[] class Msgs: pass |
From: jürgen u. <cer...@us...> - 2005-05-15 10:14:44
|
Update of /cvsroot/wnd/wnd/wnd/api/shell In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10342 Modified Files: __init__.py browseforfolder.py consts.py functions.py namespace.py shellnotify.py wintypes.py Log Message: bugfixes Index: functions.py =================================================================== RCS file: /cvsroot/wnd/wnd/wnd/api/shell/functions.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** functions.py 29 Apr 2005 15:20:09 -0000 1.1.1.1 --- functions.py 15 May 2005 10:14:14 -0000 1.2 *************** *** 6,11 **** "RenameFiles","GetPathFromPidl", "PidlCopy", "PidlDidAlloc","PidlEnum","PidlFree","PidlGetParent", ! "PidlGetSize","PidlJoin","PidlPrint", "PidlSplit",] #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: class SHFILEOPSTRUCT(Structure): _fields_ = [("hwnd", HWND), --- 6,12 ---- "RenameFiles","GetPathFromPidl", "PidlCopy", "PidlDidAlloc","PidlEnum","PidlFree","PidlGetParent", ! "PidlGetSize","PidlJoin","PidlPrint", "PidlSplit"] #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + class SHFILEOPSTRUCT(Structure): _fields_ = [("hwnd", HWND), *************** *** 72,77 **** else: sho.pFrom=From sho.wFunc = FO_MOVE ! if shell32.SHFileOperation(byref(sho)): return False ! if sho.fAnyOperationsAborted: return False return True --- 73,80 ---- else: sho.pFrom=From sho.wFunc = FO_MOVE ! if shell32.SHFileOperation(byref(sho)): ! return False ! if sho.fAnyOperationsAborted: ! return False return True *************** *** 88,126 **** return FileOperation('rename', From, To, title, hwnd, *flags) ! ! def test(): ! import os ! os_join=os.path.join ! ! p=r'D:\Ztestdir' ! rev=True ! rev=False ! if rev: ! source='D:\Ztestdir\dest' ! dest='D:\Ztestdir\source' ! else: ! source='D:\Ztestdir\source' ! dest='D:\Ztestdir\dest' ! out=[] ! ren=[] ! for i in os.listdir(source): ! out.append(os_join(source, i)) ! ren.append(os_join(source, 'XXX%s' % i)) ! ! ren=[os_join(dest, 'foo.txt'), os_join(dest, 'foo2.txt'), os_join(dest, 'foo3.txt'), os_join(dest, 'foo4.txt'), os_join(dest, 'foo5.txt')] ! out='nonsense' ! result=FileOperation('move', out, ren, '', 0, 'simpleprogress', 'filesonly') ! ! ! #test() ! ! #------------------------------------------------------------------------ # pIdl functions def PidlFree(pIdl): ! #TODO: how to zero the pointer ??""" if Malloc.DidAlloc(pIdl): Malloc.Free(pIdl) ! def PidlEnum(pIdl): #if not malloc.GetSize(pIdl): raise 'NULL pointer' --- 91,103 ---- return FileOperation('rename', From, To, title, hwnd, *flags) ! #********************************************************** # pIdl functions + #********************************************************** def PidlFree(pIdl): ! #TODO: how to zero the pointer ?? if Malloc.DidAlloc(pIdl): Malloc.Free(pIdl) ! def PidlEnum(pIdl): #if not malloc.GetSize(pIdl): raise 'NULL pointer' *************** *** 143,150 **** def PidlSplit(pIdl): for i in PidlEnum(pIdl): pass ! childPidl = PidlCopy(i) ! i[0].mkid.cb=0 ! return childPidl def PidlGetParent(pIdl): --- 120,129 ---- def PidlSplit(pIdl): + i= None for i in PidlEnum(pIdl): pass ! if i: ! childPidl = PidlCopy(i) ! i[0].mkid.cb=0 ! return childPidl def PidlGetParent(pIdl): *************** *** 153,161 **** i[0].mkid.cb=0 def PidlCopy(pIdl): #if not malloc.GetSize(pIdl): raise 'NULL pointer' cb = PidlGetSize(pIdl) hMem = Malloc.Alloc(cb) ! if not hMem: raise 'could not alloc memory' memmove(c_void_p(hMem), pIdl, cb) idl = ITEMIDLIST.from_address(hMem) --- 132,141 ---- i[0].mkid.cb=0 + def PidlCopy(pIdl): #if not malloc.GetSize(pIdl): raise 'NULL pointer' cb = PidlGetSize(pIdl) hMem = Malloc.Alloc(cb) ! if not hMem: raise MemoryError, "could not alloc memory" memmove(c_void_p(hMem), pIdl, cb) idl = ITEMIDLIST.from_address(hMem) *************** *** 168,172 **** cb2 = PidlGetSize(pIdlAdd) hMem = Malloc.Alloc(cb1+cb2) ! if not hMem: raise 'could not Alloc memory' memmove(c_void_p(hMem), pIdlBase, cb1) memmove(c_void_p(hMem + cb1), pIdlAdd, cb2) --- 148,152 ---- cb2 = PidlGetSize(pIdlAdd) hMem = Malloc.Alloc(cb1+cb2) ! if not hMem: raise MemoryError, "could not alloc memory" memmove(c_void_p(hMem), pIdlBase, cb1) memmove(c_void_p(hMem + cb1), pIdlAdd, cb2) *************** *** 185,191 **** def GetPathFromPidl(pIdl): ! p = create_string_buffer(260) # MAX_PATH if not shell32.SHGetPathFromIDListA(byref(pIdl), p): ! raise "could not extract path from identifier list" return p.value --- 165,171 ---- def GetPathFromPidl(pIdl): ! p = create_string_buffer(260 +1) # MAX_PATH if not shell32.SHGetPathFromIDListA(byref(pIdl), p): ! raise RuntimeError, "could not extract path from identifier list" return p.value Index: wintypes.py =================================================================== RCS file: /cvsroot/wnd/wnd/wnd/api/shell/wintypes.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** wintypes.py 29 Apr 2005 15:20:19 -0000 1.1.1.1 --- wintypes.py 15 May 2005 10:14:14 -0000 1.2 *************** *** 4,7 **** --- 4,10 ---- from ctypes.com.mallocspy import IMalloc, MallocSpy #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + import locale + LOCALE= locale.getdefaultlocale()[1] + Malloc=POINTER(IMalloc)() Index: browseforfolder.py =================================================================== RCS file: /cvsroot/wnd/wnd/wnd/api/shell/browseforfolder.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** browseforfolder.py 29 Apr 2005 15:20:06 -0000 1.1.1.1 --- browseforfolder.py 15 May 2005 10:14:14 -0000 1.2 *************** *** 203,204 **** --- 203,208 ---- + + if __name__=='__main__': + br= BrowseForFolder() + br.Run() \ No newline at end of file Index: shellnotify.py =================================================================== RCS file: /cvsroot/wnd/wnd/wnd/api/shell/shellnotify.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** shellnotify.py 29 Apr 2005 15:20:19 -0000 1.1.1.1 --- shellnotify.py 15 May 2005 10:14:14 -0000 1.2 *************** *** 78,81 **** --- 78,106 ---- SHChangeNotification_Unlock = GetProcAddress(shell32._handle, 645) + SHN_FLAGS={ + 'renameitem' : 1, + 'create' : 2, + 'delete' : 4, + 'mkdir' : 8, + 'rmdir' : 16, + 'mediainserted' : 32, + 'mediaremoved' : 64, + 'driveremoved' : 128, + 'driveadd' : 256, + 'netshare' : 512, + 'netunshare' : 1024, + 'attributes' : 2048, + 'updatedir' : 4096, + 'updateitem' : 8192, + 'serverdisconnect' : 16384, + 'updateimage' : 32768, + 'driveaddgui' : 65536, + 'renamefolder' : 131072, + 'freespace' : 262144} + + #********************************************************************* + #********************************************************************* + + class ShellNotify(object): *************** *** 87,92 **** self.handle = 0 ! ! # to register more then on pIdl use: #def RegisterEx(self, subtree=False, pIdls): --- 112,116 ---- self.handle = 0 ! # to register more then on pIdl use: #def RegisterEx(self, subtree=False, pIdls): *************** *** 96,109 **** ! def Register(self, pIdl): #SHCNF_ACCEPT_INTERRUPTS = 1 #SHCNF_ACCEPT_NON_INTERRUPTS= 2 #SHCNF_NO_PROXY = 0x8000 ## NT systems only ! SHCNE_ALLEVENTS = 2147483647 if self.handle: self.Close() nfr=NOTIFYREGISTER(pIdl, 0) ! self.handle = SHChangeNotifyRegister(self.Hwnd, 1|2|0x800, SHCNE_ALLEVENTS, self.Msg, 1, byref(nfr)) if not self.handle: raise RuntimeError("could not register shell notify") ! def _Notify(self, hwnd, evtID, arrPidl): --- 120,149 ---- ! def Register(self, pIdl, *flags): #SHCNF_ACCEPT_INTERRUPTS = 1 #SHCNF_ACCEPT_NON_INTERRUPTS= 2 #SHCNF_NO_PROXY = 0x8000 ## NT systems only ! ! if not flags: ! flag= 2147483647 # SHCNE_ALLEVENTS ! else: ! flag= 0 ! for i in flags: ! try: flag |= SHN_FLAGS[i] ! except: raise ValueError, "invalid flag: %s" % i if self.handle: self.Close() nfr=NOTIFYREGISTER(pIdl, 0) ! self.handle = SHChangeNotifyRegister(self.Hwnd, 1|2|0x800, flag, self.Msg, 1, byref(nfr)) if not self.handle: raise RuntimeError("could not register shell notify") ! ! ! def Close(self): ! if self.handle: ! result = SHChangeNotifyUnregister(self.handle) ! self.handle = 0 ! if not result: raise RuntimeError("could not unregister shell notify") ! else: raise RuntimeError("no pIdl registered") ! ! def _Notify(self, hwnd, evtID, arrPidl): *************** *** 198,206 **** - def Close(self): - if self.handle: - result = SHChangeNotifyUnregister(self.handle) - self.handle = 0 - if not result: raise RuntimeError("could not unregister shell notify") - else: raise RuntimeError("no pIdl registered") --- 238,240 ---- Index: __init__.py =================================================================== RCS file: /cvsroot/wnd/wnd/wnd/api/shell/__init__.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** __init__.py 29 Apr 2005 15:20:03 -0000 1.1.1.1 --- __init__.py 15 May 2005 10:14:14 -0000 1.2 *************** *** 2,8 **** from wnd.api.shell.namespace import ShellNamespace from wnd.api.shell.shellnotify import ShellNotify ! from wnd.api.shell.wintypes import (PIDL, ! CMINVOKECOMMANDINFO) ! from wnd.api.shell.browseforfolder import BrowseForFolder from wnd.api.shell.wintypes import Malloc --- 2,8 ---- from wnd.api.shell.namespace import ShellNamespace from wnd.api.shell.shellnotify import ShellNotify ! from wnd.api.shell.wintypes import (PIDL, ! ITEMIDLIST, ! CMINVOKECOMMANDINFO) from wnd.api.shell.browseforfolder import BrowseForFolder from wnd.api.shell.wintypes import Malloc Index: namespace.py =================================================================== RCS file: /cvsroot/wnd/wnd/wnd/api/shell/namespace.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** namespace.py 29 Apr 2005 15:20:15 -0000 1.1.1.1 --- namespace.py 15 May 2005 10:14:14 -0000 1.2 *************** *** 1,3 **** --- 1,15 ---- + """ + TODO + - _GetName if STRRET_WSTR is returned, free it with Malloc + - _GetName, check if shlwapi.StrRetToBufA is present in IE < 5 + but non functional + - errorckeck all allocated pIdls + + + """ + + + import dbg from wnd.api.shell.wintypes import * from wnd.api.shell.shellicon import (IExtractIcon, *************** *** 9,14 **** from wnd.api.shell.functions import (PidlCopy, PidlJoin, PidlGetParent, ! PidlFree) #**************************************************************************** # shell folder stuff --- 21,31 ---- from wnd.api.shell.functions import (PidlCopy, PidlJoin, + PidlSplit, PidlGetParent, ! PidlFree, ! PidlPrint # XXX move out ! ) ! from wnd.api.shell.consts import * ! #**************************************************************************** # shell folder stuff *************** *** 24,27 **** --- 41,51 ---- ("_", U)] + try: + # check if we can get StrRetToBuf api, introduced with IE5 + StrRetToBuf= windll.shlwapi.StrRetToBufA + NAME_BUFFER= create_string_buffer(MAX_PATH +1) + except: + pass + class IEnumIDList(IUnknown): *************** *** 61,64 **** --- 85,91 ---- STRRET_CSTR = 0x0002 # Use STRRET.cStr + SHGDN_FORPARSING = 0x8000 + SHGDN_FORADDRESSBAR = 0x4000 + #*************************************************** # TODO: *************** *** 72,75 **** --- 99,103 ---- # DONE: # + #****************************************************************************** class ShellNamespace(object): *************** *** 79,82 **** --- 107,111 ---- def __init__(self): + self.pIShellFolder = POINTER(IShellFolder)() shell32.SHGetDesktopFolder(byref(self.pIShellFolder)) *************** *** 91,103 **** def Close(self): ! if self.cwDir[0] !=self.pIShellFolder: # not close the desktop ! pFolder, pIdl = self.cwDir ! del pFolder ! PidlFree(pIdl) del self.pIShellFolder self.pIShellFolder = None def __iter__(self): ! flags = SHCONTF_FOLDERS|SHCONTF_NONFOLDERS|SHCONTF_INCLUDEHIDDEN enum = POINTER(IEnumIDList)() self.cwDir[0].EnumObjects(0, flags, byref(enum)) --- 120,132 ---- def Close(self): ! pFolder, pIdl = self.cwDir ! PidlFree(pIdl) ! del pFolder del self.pIShellFolder self.pIShellFolder = None + def __iter__(self): ! flags = SHCONTF_FOLDERS | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN enum = POINTER(IEnumIDList)() self.cwDir[0].EnumObjects(0, flags, byref(enum)) *************** *** 105,114 **** EnumNext=enum.Next while True: ! pIdl = PIDL(ITEMIDLIST()) if EnumNext(1, byref(pIdl), byref(fetched)): break yield pIdl def OpenFolder(self, path): ! path = unicode(path) eaten = c_ulong() attrs = c_ulong() --- 134,143 ---- EnumNext=enum.Next while True: ! pIdl = PIDL() if EnumNext(1, byref(pIdl), byref(fetched)): break yield pIdl def OpenFolder(self, path): ! path = unicode(path, LOCALE) eaten = c_ulong() attrs = c_ulong() *************** *** 131,140 **** def DirDown(self, pIdl): newPidl = PidlJoin(self.cwDir[1], pIdl) ! # Should not free here, leave it to the caller ! PidlFree(pIdl) self.SetCwd(newPidl) ! def GetCwd(self): ! if self.cwDir[0] == self.pIShellFolder: return self.cwDir[1] return PidlCopy(self.cwDir[1]) --- 160,169 ---- def DirDown(self, pIdl): newPidl = PidlJoin(self.cwDir[1], pIdl) ! ## leave free to the caller ?? ! #PidlFree(pIdl) self.SetCwd(newPidl) ! def GetCwd(self): ! #if self.cwDir[0] == self.pIShellFolder: return self.cwDir[1] return PidlCopy(self.cwDir[1]) *************** *** 143,148 **** # Printer folder raises ACCESS DENIED error # on COMPointer_del_ ! if pIdl[0].mkid.cb==0: # desktop folder pIShellFolder, pIdl = self.pIShellFolder, self.pIdl else: pIShellFolder = POINTER(IShellFolder)() --- 172,180 ---- # Printer folder raises ACCESS DENIED error # on COMPointer_del_ ! if pIdl== None or not pIdl: # switch to desktop folder pIShellFolder, pIdl = self.pIShellFolder, self.pIdl + elif pIdl[0].mkid.cb==0: # desktop folder + pIShellFolder, pIdl = self.pIShellFolder, self.pIdl + PidlFree(pIdl) else: pIShellFolder = POINTER(IShellFolder)() *************** *** 150,160 **** pIShellFolder.AddRef() ! if self.cwDir[0] != self.pIShellFolder: # desktop folder self.cwDir[0].Release() ! PidlFree(self.cwDir[1]) ! self.cwDir=pIShellFolder, pIdl ! return True ! #-------------------------------------------------------------------- # special methods --- 182,199 ---- pIShellFolder.AddRef() ! if self.cwDir[0] != self.pIShellFolder: # desktop folder self.cwDir[0].Release() ! PidlFree(self.cwDir[1]) ! self.cwDir= pIShellFolder, pIdl ! + def IsDesktopFolder(self): + if not self.cwDir[1]: + return True + else: + if self.cwDir[1][0].mkid.cb == 0: + return True + return False + #-------------------------------------------------------------------- # special methods *************** *** 231,243 **** elif ext1 < ext2: return -1 ! # ...no result yet, prepair filename for comparison ! if n1 > -1: name1 = name1[:n1] ! else: name1=='' ! if n2 > -1: name2 = name2[:n2] ! else: name2=='' ! ! # compare by name ! result = cmp(name1, name2) ! return result # done it... --- 270,278 ---- elif ext1 < ext2: return -1 ! ! # ...no result yet, compair by name ! if name1 > name2: return 1 ! elif name1 < name2: return -1 ! return 0 # done it... *************** *** 281,308 **** def ParseDisplayName(self, path): ! path = unicode(path) eaten = c_ulong() ! attrs = c_ulong() ! pIdl = PIDL(ITEMIDLIST()) self.pIShellFolder.ParseDisplayName(0, None, path, ! byref(eaten), byref(pIdl), byref(attrs)) return pIdl #------------------------------------------------------------------------- # all the attributes here ! ! def _GetName(self, pIShellFolder, pIdl, flag): ! # does the same job, too but requires IE5 ! # p=create_string_buffer(MAX_PATH) ! #shlwapi.StrRetToBufA(byref(self.ret), pIdl, p, MAX_PATH) # flag |= 0x200 ### SHGDN_INCLUDE_NONFILESYS ! pIShellFolder.GetDisplayNameOf(pIdl, flag, byref(self.ret)) ! if self.ret.uType==0: # STRRET_WSTR ! return self.ret._.pOleStr # ?? free the string with ! # malloc.Free did not work ?? ! elif self.ret.uType==1: # STRRET_OFFSET ! return c_char_p(addressof(pIdl[0]) + \ ! self.ret._.uOffset).value ! elif self.ret.uType==2: # STRRET_CSTR ! return self.ret._.cStr def GetName(self, pIdl=None): --- 316,347 ---- def ParseDisplayName(self, path): ! path = unicode(path, LOCALE) eaten = c_ulong() ! #attrs = c_ulong() ! pIdl = PIDL() self.pIShellFolder.ParseDisplayName(0, None, path, ! byref(eaten), byref(pIdl), None) return pIdl #------------------------------------------------------------------------- # all the attributes here ! try: ! # check if StrRetToBuf is defined ! StrRetToBuf ! def _GetName(self, pIShellFolder, pIdl, flag): ! pIShellFolder.GetDisplayNameOf(pIdl, flag, byref(self.ret)) ! StrRetToBuf(byref(self.ret), pIdl, NAME_BUFFER, MAX_PATH + 1) ! return NAME_BUFFER.value ! except: ! def _GetName(self, pIShellFolder, pIdl, flag): ! pIShellFolder.GetDisplayNameOf(pIdl, flag, byref(self.ret)) ! if self.ret.uType==0: # STRRET_WSTR ! return self.ret._.pOleStr # ?? free the string with ! # malloc.Free did not work ?? ! elif self.ret.uType==1: # STRRET_OFFSET ! return string_at(addressof(pIdl[0]) + self.ret._.uOffset) ! elif self.ret.uType==2: # STRRET_CSTR ! return self.ret._.cStr ! def GetName(self, pIdl=None): *************** *** 311,322 **** def GetParseName(self, pIdl=None): - SHGDN_FORPARSING = 0x8000 if pIdl: return self._GetName(self.cwDir[0], pIdl, SHGDN_FORPARSING) return self._GetName(self.pIShellFolder, self.cwDir[1], SHGDN_FORPARSING) def GetAddressBarName(self, pIdl=None): ! SHGDN_FORADDRESSBAR = 0x4000 ! if pIdl: return self._GetName(self.cwDir[0], pIdl, SHGDN_FORADDRESSBAR ) ! return self._GetName(self.pIShellFolder, self.cwDir[1], SHGDN_FORADDRESSBAR ) --- 350,359 ---- def GetParseName(self, pIdl=None): if pIdl: return self._GetName(self.cwDir[0], pIdl, SHGDN_FORPARSING) return self._GetName(self.pIShellFolder, self.cwDir[1], SHGDN_FORPARSING) def GetAddressBarName(self, pIdl=None): ! if pIdl: return self._GetName(self.cwDir[0], pIdl, SHGDN_FORADDRESSBAR) ! return self._GetName(self.pIShellFolder, self.cwDir[1], SHGDN_FORADDRESSBAR) *************** *** 329,434 **** return pIdl ! def _HasAttr(self, pIdl, attr, nItems=1): ! attrs = c_ulong(attr) if pIdl: self.cwDir[0].GetAttributesOf(nItems, byref(pIdl), byref(attrs)) else: ! self.pIShellFolder.GetAttributesOf(nItems, byref(self.cwDir[1]), byref(attrs)) ! if attrs.value & attr: return True ! return False def IsReadOnly(self, pIdl=None): """Returns True if the item is readonly. Having some problems here. Returns allways False""" ! SFGAO_READONLY = 0x00040000 ! return self._HasAttr(pIdl, SFGAO_READONLY) def IsFolder(self, pIdl=None): ! SFGAO_FOLDER = 0x20000000 ! return self._HasAttr(pIdl,SFGAO_FOLDER) def IsFileSystem(self, pIdl=None): ! SFGAO_FILESYSTEM = 0x40000000 ! return self._HasAttr(pIdl, SFGAO_FILESYSTEM) def IsRemovable(self, pIdl=None): ! SFGAO_REMOVABLE = 0x02000000 ! return self._HasAttr(pIdl, SFGAO_REMOVABLE) def IsLink(self, pIdl=None): ! SFGAO_LINK = 0x00010000 ! return self._HasAttr(pIdl,SFGAO_LINK) def IsHidden(self, pIdl=None): ! SFGAO_HIDDEN = 0x00080000 ! return self._HasAttr(pIdl, SFGAO_HIDDEN) def IsShared(self, pIdl=None): ! SFGAO_SHARE = 0x00020000L ! return self._HasAttr(pIdl, SFGAO_SHARE) def IsDropTarget(self, pIdl=None): ! SFGAO_DROPTARGET = 0x00000100 ! return self._HasAttr(pIdl, SFGAO_DROPTARGET) def IsNonEnumerated(self, pIdl=None): ! SFGAO_NONENUMERATED = 0x00100000L ! return self._HasAttr(pIdl, SFGAO_NONENUMERATED) def IsBrowsable(self, pIdl=None): ! SFGAO_BROWSABLE = 0x08000000 ! return self._HasAttr(pIdl, SFGAO_BROWSABLE) def IsCompressed(self, pIdl=None): """Returns True if the item is compressed""" ! SFGAO_COMPRESSED = 0x04000000 ! return self._HasAttr(pIdl, SFGAO_COMPRESSED) def IsNewContent(self, pIdl=None): ! SFGAO_NEWCONTENT = 0x00200000L ! return self._HasAttr(pIdl, SFGAO_NEWCONTENT) def IsGhosted(self, pIdl=None): ! SFGAO_GHOSTED = 0x00080000L ! return self._HasAttr(pIdl, SFGAO_GHOSTED) def HasPropertySheet(self, pIdl=None): ! SFGAO_HASPROPSHEET = 0x00000040 ! return self._HasAttr(pIdl, SFGAO_HASPROPSHEET) def HasSubFolder(self, pIdl=None): ! SFGAO_HASSUBFOLDER = -2147483648 ! return self._HasAttr(pIdl, SFGAO_HASSUBFOLDER) def HasFileSystemSubFolder(self, pIdl=None): ! SFGAO_FILESYSANCESTOR = 0x10000000 ! return self._HasAttr(pIdl, SFGAO_FILESYSANCESTOR) def CanRename(self, pIdl=None): ! SFGAO_CANRENAME = 0x00000010 ! return self._HasAttr(pIdl, SFGAO_CANRENAME) def CanDelete(self, pIdl=None): ! SFGAO_CANDELETE = 0x00000020 ! return self._HasAttr(pIdl, SFGAO_CANDELETE) def CanCopy(self, pIdl=None): ! DROPEFFECT_COPY = 1 ! return self._HasAttr(pIdl, DROPEFFECT_COPY) def CanMove(self, pIdl=None): ! DROPEFFECT_MOVE = 2 ! return self._HasAttr(pIdl, DROPEFFECT_MOVE) def CanLink(self, pIdl=None): """Returns True if the item can be linked to""" ! DROPEFFECT_LINK = 4 ! return self._HasAttr(pIdl, DROPEFFECT_LINK) def Validate(self, pIdl=None, validateall=False): - SFGAO_VALIDATE = 0x01000000 if validateall: validateall = 0 else: validateall = 1 ! return self._HasAttr(pIdl, SFGAO_VALIDATE, validateall) def PrintAttrs(self, pIdl=None): --- 366,502 ---- return pIdl ! ! ! def GetAttributes(self, pIdl, attrs, nItems=1): ! if pIdl: + attrs = c_ulong(attrs) self.cwDir[0].GetAttributesOf(nItems, byref(pIdl), byref(attrs)) + return attrs.value + else: ! ## have to use this till I get XXXGetAttributes to work on the current directory ! ## pretty slow. ! flag= 8|2048 # SHGFI_PIDL | SHGFI_ATTRIBUTES ! shfi= SHFILEINFO() ! if attrs: ! shfi.dwAttributes = attrs ! flag |= 131072 # SHGFI_ATTR_SPECIFIED ! ! if pIdl: ! pIdl= PidlJoin(self.cwDir[1], pIdl) ! result= shell32.SHGetFileInfo(pIdl, 0, byref(shfi), sizeof(SHFILEINFO), flag) ! PidlFree(pIdl) ! else: ! pIdl= self.cwDir[1] ! result= shell32.SHGetFileInfo(pIdl, 0, byref(shfi), sizeof(SHFILEINFO), flag) ! if result: ! return shfi.dwAttributes ! raise RuntimeError, "could not retrieve attributes" + + def XXXGetAttributes(self, pIdl, attrs, nItems=1): + ## never got this to work reliably. So use SHGetFileInfo instead + attrs = c_ulong(attrs) + if pIdl: + self.cwDir[0].GetAttributesOf(nItems, byref(pIdl), byref(attrs)) + else: + if self.IsDesktopFolder(): + self.pIShellFolder.GetAttributesOf(nItems, byref(self.cwDir[1]), byref(attrs)) + else: + ## the messy and non working part, retrieving attrs for the current folder + pIdl= None + pIdl2= None + pIdlFolder= None + try: + pIdl= self.GetCwd() + pIdl2= PidlCopy(pIdl) + pIdlFolder= PidlSplit(pIdl2) + self.DirUp() + self.pIShellFolder.GetAttributesOf(nItems, byref(pIdlFolder), byref(attrs)) + self.SetCwd(pIdl) + pIdl= None ## shell is taking care now + finally: + if pIdl: PidlFree(pIdl) + if pIdl2: PidlFree(pIdl2) + if pIdlFolder: PidlFree(pIdlFolder) + return attrs.value + + def IsReadOnly(self, pIdl=None): """Returns True if the item is readonly. Having some problems here. Returns allways False""" ! return bool(self.GetAttributes(pIdl, SFGAO_READONLY) & SFGAO_READONLY) def IsFolder(self, pIdl=None): ! return bool(self.GetAttributes(pIdl,SFGAO_FOLDER) & SFGAO_FOLDER) def IsFileSystem(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_FILESYSTEM) & SFGAO_FILESYSTEM) def IsRemovable(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_REMOVABLE) & SFGAO_REMOVABLE) def IsLink(self, pIdl=None): ! return bool(self.GetAttributes(pIdl,SFGAO_LINK) & SFGAO_LINK) def IsHidden(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_HIDDEN) & SFGAO_HIDDEN) def IsShared(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_SHARE) & SFGAO_SHARE) def IsDropTarget(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_DROPTARGET) & SFGAO_DROPTARGET) def IsNonEnumerated(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_NONENUMERATED) & SFGAO_NONENUMERATED) def IsBrowsable(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_BROWSABLE) & SFGAO_BROWSABLE) def IsCompressed(self, pIdl=None): """Returns True if the item is compressed""" ! return bool(self.GetAttributes(pIdl, SFGAO_COMPRESSED) & SFGAO_COMPRESSED) def IsNewContent(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_NEWCONTENT) & SFGAO_NEWCONTENT) def IsGhosted(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_GHOSTED) & SFGAO_GHOSTED) def HasPropertySheet(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_HASPROPSHEET) & SFGAO_HASPROPSHEET) def HasSubFolder(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_HASSUBFOLDER) & SFGAO_HASSUBFOLDER) + def IsFileSystemAnchestor(self, pIdl=None): + return bool(self.GetAttributes(pIdl, SFGAO_FILESYSANCESTOR) & SFGAO_FILESYSANCESTOR) + def HasFileSystemSubFolder(self, pIdl=None): ! #warnings.warn("HasFileSystemSubFolder is deprecated, use IsFileSystemAnchestor instead", DeprecationWarning, stacklevel=2) ! return bool(self.GetAttributes(pIdl, SFGAO_FILESYSANCESTOR) & SFGAO_FILESYSANCESTOR) def CanRename(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_CANRENAME) & SFGAO_CANRENAME) def CanDelete(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, SFGAO_CANDELETE) & SFGAO_CANDELETE ) def CanCopy(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, DROPEFFECT_COPY) & DROPEFFECT_COPY) def CanMove(self, pIdl=None): ! return bool(self.GetAttributes(pIdl, DROPEFFECT_MOVE) & DROPEFFECT_MOVE) def CanLink(self, pIdl=None): """Returns True if the item can be linked to""" ! return bool(self.GetAttributes(pIdl, DROPEFFECT_LINK) & DROPEFFECT_LINK) def Validate(self, pIdl=None, validateall=False): if validateall: validateall = 0 else: validateall = 1 ! return self.GetAttributes(pIdl, SFGAO_VALIDATE, validateall) def PrintAttrs(self, pIdl=None): *************** *** 449,453 **** print ' IsGhosted: ', self.IsGhosted(pIdl) print ' HasSubFolder: ', self.HasSubFolder(pIdl) ! print ' HasFileSystemSubFolder: ', self.HasFileSystemSubFolder(pIdl) print ' IsReadonly: ', self.IsReadOnly(pIdl) print ' IsHidden: ', self.IsHidden(pIdl) --- 517,521 ---- print ' IsGhosted: ', self.IsGhosted(pIdl) print ' HasSubFolder: ', self.HasSubFolder(pIdl) ! print ' IsFileSystemAnchestor: ', self.IsFileSystemAnchestor(pIdl) print ' IsReadonly: ', self.IsReadOnly(pIdl) print ' IsHidden: ', self.IsHidden(pIdl) Index: consts.py =================================================================== RCS file: /cvsroot/wnd/wnd/wnd/api/shell/consts.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** consts.py 29 Apr 2005 15:20:07 -0000 1.1.1.1 --- consts.py 15 May 2005 10:14:14 -0000 1.2 *************** *** 1,2 **** --- 1,3 ---- + #*************************************************** # special folder constants - use with Desktop.ListSpecialFolder *************** *** 39,40 **** --- 40,66 ---- SPECIAL_FOLDERS = (0,1,2,3,4,5,6,7,8,9,10,11,16,17,18,19, 20,21,22,23,24,25,26,27,29,30,31,32,33,34) + + + ## file attributes + SFGAO_READONLY = 0x00040000 + SFGAO_FOLDER = 0x20000000 + SFGAO_FILESYSTEM = 0x40000000 + SFGAO_REMOVABLE = 0x02000000 + SFGAO_LINK = 0x00010000 + SFGAO_HIDDEN = 0x00080000 + SFGAO_SHARE = 0x00020000L + SFGAO_DROPTARGET = 0x00000100 + SFGAO_NONENUMERATED = 0x00100000L + SFGAO_BROWSABLE = 0x08000000 + SFGAO_COMPRESSED = 0x04000000 + SFGAO_NEWCONTENT = 0x00200000L + SFGAO_GHOSTED = 0x00080000L + SFGAO_HASPROPSHEET = 0x00000040 + SFGAO_HASSUBFOLDER = -2147483648 + SFGAO_FILESYSANCESTOR = 0x10000000 + SFGAO_CANRENAME = 0x00000010 + SFGAO_CANDELETE = 0x00000020 + DROPEFFECT_COPY = 1 + DROPEFFECT_MOVE = 2 + DROPEFFECT_LINK = 4 + SFGAO_VALIDATE = 0x01000000 \ No newline at end of file |
From: jürgen u. <cer...@us...> - 2005-05-15 10:13:33
|
Update of /cvsroot/wnd/wnd/wnd/api/com/tlb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10235 Modified Files: __init__.py Log Message: ?? Index: __init__.py =================================================================== RCS file: /cvsroot/wnd/wnd/wnd/api/com/tlb/__init__.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** __init__.py 29 Apr 2005 15:20:36 -0000 1.1.1.1 --- __init__.py 15 May 2005 10:13:23 -0000 1.2 *************** *** 0 **** --- 1 ---- + |
From: jürgen u. <cer...@us...> - 2005-05-15 10:12:31
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/gdi/icon In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10067 Modified Files: icon.dtpl Log Message: bit of this and a bit of that Index: icon.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/gdi/icon/icon.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** icon.dtpl 29 Apr 2005 15:16:45 -0000 1.1.1.1 --- icon.dtpl 15 May 2005 10:12:08 -0000 1.2 *************** *** 30,34 **** <br><br> Use this to wrap icon methods around a handle about wich you know ! is has to be closed </P> --- 30,34 ---- <br><br> Use this to wrap icon methods around a handle about wich you know ! it has to be closed </P> *************** *** 160,169 **** <TR> <TD>'smallicon'</TD> ! <TD>retrieves ae small icon</TD> </TR> </Table> <br><br> ! These icons are not shared resources. So you have to close them when done with them.By default the frameworks TrackHandler keeps track of these icons ! and closes them when the process exits. </p> --- 160,185 ---- <TR> <TD>'smallicon'</TD> ! <TD>retrieves the small icon</TD> </TR> </Table> <br><br> ! <b>Notes</b><br> ! <UL> ! <LI>These icons are not shared resources. So you have to close ! them when done with them.By default the frameworks ! TrackHandler keeps track of these icons ! and closes them when the process exits. ! <LI>Drawing the small icon associated to a file does not work ! properly, due to some limitation in DrawIcon. ! in <code class="import">wnd.controls.imagelist</code> there ! is the systemImagelist class to handle these icons properly. ! </UL> ! ! ! ! ! ! ! </p> *************** *** 322,326 **** ::item:: GetShellIconSize ! <code class=import>defined in: wnd.gdi.icons</code><br><br> <code>GetShellIconSize()</code><br> <P> --- 338,342 ---- ::item:: GetShellIconSize ! <code class=import>defined in: wnd.gdi</code><br><br> <code>GetShellIconSize()</code><br> <P> *************** *** 329,333 **** ::item:: GetShellSmallIconSize ! <code class=import>defined in: wnd.gdi.icons</code><br><br> <code>GetShellSmallIconSize()</code><br> <P> --- 345,349 ---- ::item:: GetShellSmallIconSize ! <code class=import>defined in: wnd.gdi</code><br><br> <code>GetShellSmallIconSize()</code><br> <P> *************** *** 335,338 **** --- 351,362 ---- </P> + ::item:: GetSysIconIndex + <code class=import>defined in: wnd.gdi</code><br><br> + <code>GetSysIconIndex(path, *flags)</code><br> + <P> + Returns the index of the requested icon in the system imagelist. + <br><br> + Use is the same as in <a HREF="../class SystemIcon.html">SystemIcon</a> + </P> |
From: jürgen u. <cer...@us...> - 2005-05-15 10:11:01
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/gdi/brush In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9837 Modified Files: brush.dtpl Log Message: bit of this and a bit of that Index: brush.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/gdi/brush/brush.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** brush.dtpl 29 Apr 2005 15:16:24 -0000 1.1.1.1 --- brush.dtpl 15 May 2005 10:10:46 -0000 1.2 *************** *** 15,18 **** --- 15,19 ---- </P> + ::site:: class DisposableBrush <code class=import>defined in: wnd.gdi</code><br><br> *************** *** 27,30 **** --- 28,75 ---- </P> + + ::site:: class StockBrush + <code class=import>defined in: wnd.gdi</code><br><br> + <code>StockBrush(brush)</code><br> + <P>Returns one of brushes gdi allways provides in memory. + <br><br> + Brush can be one of the folloeing brushes: + <br><br> + + <TABLE class="table1" BORDER="1"> + <TR> + <TD>'whitebrush'</TD> + <TD></TD> + </TR> + <TR> + <TD>'ltgraybrush'</TD> + <TD></TD> + </TR> + <TR> + <TD>'graybrush'</TD> + <TD></TD> + </TR> + <TR> + <TD>'dkgraybrush'</TD> + <TD></TD> + </TR> + <TR> + <TD>'blackbrush'</TD> + <TD></TD> + </TR> + <TR> + <TD>'nullbrush'</TD> + <TD></TD> + </TR> + + + </TABLE> + + <br><br> + These brushes are shared resources as shared can be, so closing them + does not have an effect. + </P> + + ::site:: class SolidBrush <code class=import>defined in: wnd.gdi</code><br><br> |
From: jürgen u. <cer...@us...> - 2005-05-15 10:10:15
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/treeview In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9571 Modified Files: treeview.dtpl Log Message: bit of this and a bit of that Index: treeview.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/treeview/treeview.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** treeview.dtpl 29 Apr 2005 15:17:54 -0000 1.1.1.1 --- treeview.dtpl 15 May 2005 10:09:32 -0000 1.2 *************** *** 124,129 **** <DL> <DT>'beginlabeledit' ! <DD>wp=tuple(hItem, lParam)<br> ! wp=text of the item<br> Return False to disallow label editing <br><br> --- 124,130 ---- <DL> <DT>'beginlabeledit' ! <DD>wp=hItem<br> ! lp= tuple(lParam, text) ! <br> Return False to disallow label editing <br><br> *************** *** 131,136 **** <DT>'begindrag' <DD>a drag with the left mouse button<br> ! wp=tuple(lParam, ||type-POINT||)<br> ! lp=hItem<br> ||type-POINT|| holds the coordinates of the item being dragged <br><br> --- 132,137 ---- <DT>'begindrag' <DD>a drag with the left mouse button<br> ! wp= hItem<br> ! wp= tuple(lParam, ||type-POINT||)<br> ||type-POINT|| holds the coordinates of the item being dragged <br><br> *************** *** 138,142 **** <DT>'beginrdrag' <DD>a drag with the right mouse button<br> ! wp=tuple(lParam, ||type-POINT||)<br> lp=hItem<br> ||type-POINT|| holds the coordinates of the item being dragged --- 139,144 ---- <DT>'beginrdrag' <DD>a drag with the right mouse button<br> ! wp=hItem<br> ! lp= tuple(lParam, ||type-POINT||)<br> lp=hItem<br> ||type-POINT|| holds the coordinates of the item being dragged *************** *** 169,175 **** <br><br> <DT>'endlabeledit' ! <DD>wp=tuple(hItem, lParamm-of-the-item)<br> ! wp=new text<br> Return False to disallow the change.<br> If the user canceled label editing no message will be send --- 171,183 ---- <br><br> + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + <DT>'endlabeledit' ! <DD>wp= hItem<br> ! wp==tuple(lParam, text)<br> Return False to disallow the change.<br> If the user canceled label editing no message will be send *************** *** 199,203 **** lp=lParam of the item<br> You will receive this message if one or more aspects of the item are callback items. No matter what aspect is a callback ! you should allways return a 4-tuple(item-text, iImage, iSelectedImage, hasChildren). The dispinfo handler then will decide wich members of the tuple to use. <br> --- 207,211 ---- lp=lParam of the item<br> You will receive this message if one or more aspects of the item are callback items. No matter what aspect is a callback ! you should allways return a 4-tuple(item-text, iImage, iSelectedImage, hasChildren (True or False)). The dispinfo handler then will decide wich members of the tuple to use. <br> *************** *** 224,229 **** <DT>'removeitem' <DD>an item has been removed<br> ! wp=lParam of the item<br> ! lp=hItem <br><br> --- 232,237 ---- <DT>'removeitem' <DD>an item has been removed<br> ! wp=hItem<br> ! lp=lParam of the item <br><br> *************** *** 239,244 **** <DT>'selchange' <DD> position<br> ! wp=allways zero<br> ! lp=tuple(handle-old-item, handle-new-item)<br> If you return False in response this call the change is disallowed --- 247,252 ---- <DT>'selchange' <DD> position<br> ! wp=hItem<br> ! lp=hOldItem<br> If you return False in response this call the change is disallowed *************** *** 248,252 **** <DD>The treview informs you that you must update the information for a callback item<br> wp=handle of the item<br> ! lp=tuple(new text for the item, lParam-of-the-item)<br> This message is typically send in response to a label edit for a callabck item --- 256,260 ---- <DD>The treview informs you that you must update the information for a callback item<br> wp=handle of the item<br> ! lp=tuple(lParam-of-the-item, new text for the item)<br> This message is typically send in response to a label edit for a callabck item *************** *** 495,507 **** <DD>user defined value to associate to the item<br> Can be any int or long <DT>fInsert <DD>the insert flag. Can be 'last' to apend, 'first' to insert before ! or 'sort' to add it sorted. <br><br> <DT>childinfo ! <DD>This flag can be set to True to indicate you are interested ! in setting the information if an item has children at ! runtime<br><br> <DT>integral --- 503,523 ---- <DD>user defined value to associate to the item<br> Can be any int or long + <br><br> + <DT>fInsert <DD>the insert flag. Can be 'last' to apend, 'first' to insert before ! or 'sort' to add it sorted. 'sort' is case insensitive. ! Alternatively you can specify a item handle to insert the item ! after the specified item. <br><br> <DT>childinfo ! <DD>You can set this flag to indicate if the item has children. ! <br><br> ! If you set this flag to True the item is assumed to have children. ! If you set it to -1 the system will call you back ! everytime it needs the information with a 'getdispinfo' message ! to request the required information. ! <br><br> <DT>integral *************** *** 683,687 **** </P> ! ::item:: Select --- 699,713 ---- </P> ! ::item:: SetChildInfo ! <code>SetChildInfo(handle, value)</code><br> ! <P>Alters the flag used to indicate if an item has subitems or not. ! <br><br> ! value can be True, False or -1. ! <br> ! If True the item is supposed have child items. If false it is supposed have no child ! items. -1 makes it a callback item. ! <br><br> ! Displaying of the + - box, for example, is affected by the value of this flag. ! </P> ::item:: Select *************** *** 1050,1055 **** </P> ! ::item:: SetImageListState ! <code>SetImageListState(Imagelist)</code><br> <P>Sets the state Imagelist for the Treeview.<br> Return value is the handle of the previous state --- 1076,1081 ---- </P> ! ::item:: SetImagelistState ! <code>SetImagelistState(Imagelist)</code><br> <P>Sets the state Imagelist for the Treeview.<br> Return value is the handle of the previous state *************** *** 1057,1068 **** </P> ! ::item:: GetImageListState ! <code>GetImageListState()</code><br> <P>Returns the handle of the the state Imagelist of the Treeview or None.<br> </P> ! ::item:: SetImageListNormal ! <code>SetImageListNormal(Imagelist)</code><br> <P>Sets the normal Imagelist for the Treeview.<br> Return value is the handle of the previous normal --- 1083,1094 ---- </P> ! ::item:: GetImagelistState ! <code>GetImagelistState()</code><br> <P>Returns the handle of the the state Imagelist of the Treeview or None.<br> </P> ! ::item:: SetImagelistNormal ! <code>SetImagelistNormal(Imagelist)</code><br> <P>Sets the normal Imagelist for the Treeview.<br> Return value is the handle of the previous normal *************** *** 1070,1075 **** </P> ! ::item:: GetImageListNormal ! <code>GetImageListNormal()</code><br> <P>Returns the handle of the the normal Imagelist of the Treeview or None.<br> --- 1096,1101 ---- </P> ! ::item:: GetImagelistNormal ! <code>GetImagelistNormal()</code><br> <P>Returns the handle of the the normal Imagelist of the Treeview or None.<br> *************** *** 1078,1104 **** - ::item:: - <code></code><br> - <P> - </P> - - - ::item:: - <code></code><br> - <P> - </P> - - - ::item:: - <code></code><br> - <P> - </P> - - - ::item:: - <code></code><br> - <P> - </P> - - --- 1104,1106 ---- |
From: jürgen u. <cer...@us...> - 2005-05-15 10:10:15
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/updown In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9638 Modified Files: updown.dtpl Log Message: bit of this and a bit of that Index: updown.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/updown/updown.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** updown.dtpl 29 Apr 2005 15:18:17 -0000 1.1.1.1 --- updown.dtpl 15 May 2005 10:09:54 -0000 1.2 *************** *** 56,68 **** handler:<br><br> <DL> <DT>'releasedcapture' <DD> The Updown control has released mouse capture<br> wp=allways zero<br> ! lp=allways zero<br> <DT>'setpos' <DD>The updown control is about to change its position<br> wp=the current position<br> lp=the offset of the intended new position<br> ! Return False (not 0 or None -I mean False) to disallow the change </DL> --- 56,77 ---- handler:<br><br> <DL> + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + <DT>'releasedcapture' <DD> The Updown control has released mouse capture<br> wp=allways zero<br> ! lp=allways zero ! <br><br> ! <DT>'setpos' <DD>The updown control is about to change its position<br> wp=the current position<br> lp=the offset of the intended new position<br> ! Return False (not 0 or None -I mean False) to disallow the change ! <br><br> </DL> |
From: jürgen u. <cer...@us...> - 2005-05-15 10:09:09
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/tooltip In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9502 Modified Files: tooltip.dtpl Log Message: bit of this and a bit of that Index: tooltip.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/tooltip/tooltip.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** tooltip.dtpl 29 Apr 2005 15:18:09 -0000 1.1.1.1 --- tooltip.dtpl 15 May 2005 10:08:59 -0000 1.2 *************** *** 125,128 **** --- 125,134 ---- <br><br> + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + <DT>'getdispinfo' <DD>Requests the text for a tooltip<br> |
From: jürgen u. <cer...@us...> - 2005-05-15 10:08:42
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/toolbar In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9416 Modified Files: toolbar.dtpl Log Message: bit of this and a bit of that Index: toolbar.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/toolbar/toolbar.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** toolbar.dtpl 29 Apr 2005 15:17:31 -0000 1.1.1.1 --- toolbar.dtpl 15 May 2005 10:08:34 -0000 1.2 *************** *** 187,190 **** --- 187,196 ---- <br><br> + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + <DT>'dragout' <DD>Used if you want to implement own drag-and-drop handling. |
From: jürgen u. <cer...@us...> - 2005-05-15 10:08:12
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/textin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9321 Modified Files: textin.dtpl Log Message: bit of this and a bit of that Index: textin.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/textin/textin.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** textin.dtpl 29 Apr 2005 15:19:10 -0000 1.1.1.1 --- textin.dtpl 15 May 2005 10:08:03 -0000 1.2 *************** *** 114,117 **** --- 114,123 ---- <br><br> + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + <DT>'errspace' <DD>the system can not allocate enough memory |
From: jürgen u. <cer...@us...> - 2005-05-15 10:07:54
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/tab In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9209 Modified Files: tab.dtpl Log Message: bit of this and a bit of that Index: tab.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/tab/tab.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** tab.dtpl 29 Apr 2005 15:19:06 -0000 1.1.1.1 --- tab.dtpl 15 May 2005 10:07:40 -0000 1.2 *************** *** 85,88 **** --- 85,94 ---- <br><br> + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + <DT>'focuschange' <DD>this message is send when the focus changes from one item to |
From: jürgen u. <cer...@us...> - 2005-05-15 10:07:32
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/statusbar In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9104 Modified Files: statusbar.dtpl Log Message: bit of this and a bit of that Index: statusbar.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/statusbar/statusbar.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** statusbar.dtpl 29 Apr 2005 15:17:18 -0000 1.1.1.1 --- statusbar.dtpl 15 May 2005 10:07:20 -0000 1.2 *************** *** 40,43 **** --- 40,49 ---- <br><br> + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + <DT>'rclick' <DD>the user has clicked on the Statusbar using the right mouse button <br> |
From: jürgen u. <cer...@us...> - 2005-05-15 10:07:04
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/scrollbar In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9026 Modified Files: scrollbar.dtpl Log Message: bit of this and a bit of that Index: scrollbar.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/scrollbar/scrollbar.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** scrollbar.dtpl 29 Apr 2005 15:17:38 -0000 1.1.1.1 --- scrollbar.dtpl 15 May 2005 10:06:55 -0000 1.2 *************** *** 78,89 **** handler:<br><br> <DL> <DT>'hscroll' <DD>the Scrollbar is scrolled horizontally<br> wp==scroll code<br> ! lp=tuple(oldPosition, newPosition)<br> <DT>'vscroll' <DD>the Scrollbar is scrolled vertically<br> wp=scroll code<br> ! lp=tuple(oldPosition, newPosition)<br> </DL> --- 78,99 ---- handler:<br><br> <DL> + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + + <DT>'hscroll' <DD>the Scrollbar is scrolled horizontally<br> wp==scroll code<br> ! lp=tuple(oldPosition, newPosition) ! <br><br> ! <DT>'vscroll' <DD>the Scrollbar is scrolled vertically<br> wp=scroll code<br> ! lp=tuple(oldPosition, newPosition) ! <br><br> </DL> |
From: jürgen u. <cer...@us...> - 2005-05-15 10:06:44
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/radiobox In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8958 Modified Files: radiobox.dtpl Log Message: bit of this and a bit of that Index: radiobox.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/radiobox/radiobox.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** radiobox.dtpl 29 Apr 2005 15:18:01 -0000 1.1.1.1 --- radiobox.dtpl 15 May 2005 10:06:30 -0000 1.2 *************** *** 75,79 **** <br> wp=hwnd of the checked item<br> ! lp=allways zero<br> <DT>'setfocus' <DD>the radiobox or radiogroup has received keyboard focus<br> --- 75,88 ---- <br> wp=hwnd of the checked item<br> ! lp=allways zero ! <br><br> ! ! <DT>'destroy' ! <DD>the control is about to be destroyed<br> ! wp=allways zero<br> ! lp=allways zero ! <br><br> ! ! <DT>'setfocus' <DD>the radiobox or radiogroup has received keyboard focus<br> |
From: jürgen u. <cer...@us...> - 2005-05-15 10:05:32
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/pager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8630 Modified Files: pager.dtpl Log Message: bit of this and a bit of that Index: pager.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/pager/pager.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** pager.dtpl 29 Apr 2005 15:17:15 -0000 1.1.1.1 --- pager.dtpl 15 May 2005 10:04:49 -0000 1.2 *************** *** 36,39 **** --- 36,46 ---- will not brcome visible. <br><br> + + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + <DT>'scroll' <DD><br> |
From: jürgen u. <cer...@us...> - 2005-05-15 10:05:32
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/progressbar In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8737 Modified Files: progressbar.dtpl Log Message: bit of this and a bit of that Index: progressbar.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/progressbar/progressbar.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** progressbar.dtpl 29 Apr 2005 15:18:15 -0000 1.1.1.1 --- progressbar.dtpl 15 May 2005 10:05:17 -0000 1.2 *************** *** 42,47 **** ::site:: Progressbar messages ! A Progressbar is not subclassed by default but does not send ! any messages to the message handler. ::site:: Progressbar styles --- 42,56 ---- ::site:: Progressbar messages ! A Progressbar is send the following ! messages to the message handler. ! ! <DL> ! <DT>'destroy' ! <DD>the control is about to be destroyed<br> ! wp=allways zero<br> ! lp=allways zero ! <br><br> ! </DL> ! ::site:: Progressbar styles |
From: jürgen u. <cer...@us...> - 2005-05-15 10:04:31
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/listview In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8519 Modified Files: listview.dtpl Log Message: bit of this and a bit of that Index: listview.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/listview/listview.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** listview.dtpl 29 Apr 2005 15:18:45 -0000 1.1.1.1 --- listview.dtpl 15 May 2005 10:04:18 -0000 1.2 *************** *** 594,597 **** --- 594,604 ---- <br><br> + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + + <DT>'endlabeledit' <DD>the item has been edited<br> *************** *** 630,644 **** <br><br> ! <DT>'lmdouble' ! <DD> <br><br> <DT>'lmbdown' ! <DT>'lmbup' ! <DD> <br><br> <DT>'return' ! <DD> <br><br> --- 637,656 ---- <br><br> ! <DT>'lmdoubble' ! <DD>left mouse double click on th elistview<br> ! wp=allways zero<br> ! lp=allways zero <br><br> <DT>'lmbdown' ! <DT>left mouse button released<br> ! <DD>wp=allways zero<br> ! lp=allways zero <br><br> <DT>'return' ! <DD>send when the return key is hit<br> ! wp=allways zero<br> ! lp=allways zero <br><br> *************** *** 731,735 **** <P> Append an item to the listview ! See <a HREF="InsertItem.hrml">InsertItem</a> for details <br><br> --- 743,747 ---- <P> Append an item to the listview ! See <a HREF="InsertItem.html">InsertItem</a> for details <br><br> *************** *** 795,799 **** </P> ! ::item::ItemHasFocus <code>ItemHasFocus(lineno)</code><br> <P>Returns True if the item has the keyboard focus, --- 807,811 ---- </P> ! ::item:: ItemHasFocus <code>ItemHasFocus(lineno)</code><br> <P>Returns True if the item has the keyboard focus, *************** *** 1199,1202 **** --- 1211,1215 ---- to the begining of the listview. If wrap is True the search continues at the top of the listview. + <br><br> <b>Return value</b><br> the index of the line containing the string if |
From: jürgen u. <cer...@us...> - 2005-05-15 10:04:04
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/listbox In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8449 Modified Files: listbox.dtpl Log Message: bit of this and a bit of that Index: listbox.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/listbox/listbox.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** listbox.dtpl 29 Apr 2005 15:18:13 -0000 1.1.1.1 --- listbox.dtpl 15 May 2005 10:03:45 -0000 1.2 *************** *** 31,35 **** <DD>Send when the user cancels a selection<br> wp=allways zero<br> ! lp=allways zero<br> <DT>'change' <DD>Send when the selection has changed<br> --- 31,38 ---- <DD>Send when the user cancels a selection<br> wp=allways zero<br> ! lp=allways zero ! <br><br> ! ! <DT>'change' <DD>Send when the selection has changed<br> *************** *** 40,53 **** <a HREF="Select.html"> Select</a> method. <DT>'errspace' <DD>Send when the listbox can hold no more items<br> wp=allways zero<br> ! lp=allways zero<br> <DT>'killfocus' <DD>the Listbox has lost keyboard focus<br> wp=window handle of the window gaining the focus or zero ! lp=allways zero<br> <DT>'lmbdouble' <DD>left mouse button double click<br> --- 43,69 ---- <a HREF="Select.html"> Select</a> method. + <br><br> + + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + + <DT>'errspace' <DD>Send when the listbox can hold no more items<br> wp=allways zero<br> ! lp=allways zero ! <br><br> ! <DT>'killfocus' <DD>the Listbox has lost keyboard focus<br> wp=window handle of the window gaining the focus or zero ! lp=allways zero ! <br><br> ! <DT>'lmbdouble' <DD>left mouse button double click<br> *************** *** 55,58 **** --- 71,76 ---- lp=(x, y) position of the cursor in client coordinates of the listview + <br><br> + <DT>'lmbup' <DD>left mouse button is released<br> *************** *** 60,63 **** --- 78,83 ---- lp=(x, y) position of the cursor in client coordinates of the listview + <br><br> + <DT>'rmbup' <DD>right mouse button is released<br> *************** *** 65,68 **** --- 85,89 ---- lp=(x, y) position of the cursor in client coordinates of the listview + <br><br> *************** *** 71,75 **** wp=window handle of the window which has lost the focus or zero ! lp=allways zero<br> </DL> --- 92,97 ---- wp=window handle of the window which has lost the focus or zero ! lp=allways zero ! <br><br> </DL> *************** *** 87,95 **** <TR> <TD>'extendedsel'</TD> ! <TD>Allows selection of multiple items by using shift key</TD> </TR> <TR> <TD>'muticolumn'</TD> ! <TD>The items are displayed in multiple columns</TD> </TR> <TR> --- 109,123 ---- <TR> <TD>'extendedsel'</TD> ! <TD>Allows selection of multiple items by using shift key. ! This style can not be changed at runtime</TD> ! </TR> ! <TR> ! <TD>'hasstrings'</TD> ! <TD>Used with ownerdrawn Listboxes</TD> </TR> <TR> <TD>'muticolumn'</TD> ! <TD>The items are displayed in multiple columns. ! This style can not be used along with with ownerdrawn Listboxes</TD> </TR> <TR> *************** *** 114,122 **** <TR> <TD>'ownerdrawfixed'</TD> ! <TD>Not yet implemented</TD> </TR> <TR> <TD>'ownerdrawvariable'</TD> ! <TD>Not yet implemented</TD> </TR> <TR> --- 142,150 ---- <TR> <TD>'ownerdrawfixed'</TD> ! <TD>Used with ownerdrawn Listboxes</TD> </TR> <TR> <TD>'ownerdrawvariable'</TD> ! <TD>Used with ownerdrawn Listboxes</TD> </TR> <TR> *************** *** 128,139 **** <TD>Not yet implemented</TD> </TR> - <TR> - <TD>''</TD> - <TD></TD> - </TR> - <TR> - <TD>''</TD> - <TD></TD> - </TR> </TABLE> --- 156,159 ---- |
From: jürgen u. <cer...@us...> - 2005-05-15 10:03:38
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/ipcontrol In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8414 Modified Files: ipcontrol.dtpl Log Message: bit of this and a bit of that Index: ipcontrol.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/ipcontrol/ipcontrol.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** ipcontrol.dtpl 29 Apr 2005 15:17:32 -0000 1.1.1.1 --- ipcontrol.dtpl 15 May 2005 10:03:25 -0000 1.2 *************** *** 32,35 **** --- 32,43 ---- <DL> + + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + + <DT>'fieldchanged'<br> <DD> send whenever the field is changed |
From: jürgen u. <cer...@us...> - 2005-05-15 10:03:16
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/imagelist In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8327 Modified Files: imagelist.dtpl Log Message: bit of this and a bit of that Index: imagelist.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/imagelist/imagelist.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** imagelist.dtpl 29 Apr 2005 15:18:56 -0000 1.1.1.1 --- imagelist.dtpl 15 May 2005 10:03:02 -0000 1.2 *************** *** 230,233 **** --- 230,236 ---- <b>Notes</b><br> <OL> + <LI>it is It is assumed that whoever loaded or created the Imagelist + is taking care about eventually freeing it. So closing the + Imagelist does not have an effect. <LI>ALL bitmaps or icons passed to an imagelist are destroyed in that call, and no longer valid. *************** *** 238,245 **** to extrackted icons. This has bitten ME several times. <LI>.. to be continued. ! <LI> </OL> </P> ::site:: class ImagelistFromBytes <code class=import>defined in: wnd.controls.imagelist</code><br><br> --- 241,358 ---- to extrackted icons. This has bitten ME several times. <LI>.. to be continued. ! </OL> </P> + + ::site:: class Disposableimagelist + <code class=import>defined in: wnd.controls.imagelist</code><br><br> + <code>Disposableimagelist(handle)</code><br> + <P> + Wraps imagelist methods around an Imagelist handle + <br><br> + Use this to wrapImagelist methods around a handle about wich you know + it has to be closed + </P> + + + ::site:: class SystemImagelist + <code class=import>defined in: wnd.controls.imagelist</code><br><br> + <code>SystemImagelist(size='small')</code><br> + <P> + Wraps some methods around the systems imagelist. + <br><br> + The system keeps frequently used icons cached for faster access. + On NT systems the cache is created for each process, filling it + icon by icon, whenever an icon for a file is requested. On 9x systems + the cache is shared amongst all processes. + Currently only + <a HREF="Imagelist methods/Drawicon.html">DrawIcon</a> and + <a HREF="Imagelist methods/DrawiconEx.html">DrawIconEx</a> + <a HREF="Imagelist methods/GetIconSize.html">GetIconSize</a> + methods are supported by this class. + + + <br><br> + This class supports one special method: + <br><br> + + <code>GeticonIndex(path, *flags)</code><br> + <P>Returns the index of the item pointed to by path in the system imagelist. + <br><br> + + <DL> + <DT>path can be: + <DD> + <OL> + <LI>path to the file from wich to retrieve the icon the system uses + <LI>a wildcard identifier like '*.txt' to retrieve + the icon associated to text files. + <LI>a drive name like 'c:\\' ('\\' required) to retrieve the icon for the drive + <LI>'directory' to retrieve the icon used for + directories + </OL> + </DL> + + Valid flags are: + </P> + <br><br> + + <TABLE class="table1" BORDER="1"> + <TR> + <TD>'largeicon'</TD> + <TD>retrieves the large icon</TD> + </TR> + <TR> + <TD>'linkoverlay'</TD> + <TD>blends the icon with the link overlay</TD> + </TR> + <TR> + <TD>'openicon'</TD> + <TD>if path is set to 'directory' you can use this + flag to retrieve the icon used to display an open folder</TD> + </TR> + <TR> + <TD>'selected'</TD> + <TD>lends the icon with the system selected color</TD> + </TR> + <TR> + <TD>'shelliconsize'</TD> + <TD>etrieves a shell sized icon</TD> + </TR> + <TR> + <TD>'smallicon'</TD> + <TD>retrieves the small icon</TD> + </TR> + </Table> + </P> + <br><br> + + On all windows systems these three indexes are guaranteed to + exist in the systems imagelist: + <br><br> + <TABLE class="table1" BORDER="1"> + <TR> + <TD>0</TD> + <TD>Blank page, unassociated document</TD> + </TR> + <TR> + <TD>2</TD> + <TD>Application, with extensions .exe .com or .bat</TD> + </TR> + <TR> + <TD>3</TD> + <TD>Generic closed folder</TD> + </TR> + </TABLE> + + + <br><br> + <b>Note</b><br> + You should never destroy the cache on 9x systems. + + </P> + + ::site:: class ImagelistFromBytes <code class=import>defined in: wnd.controls.imagelist</code><br><br> *************** *** 251,254 **** --- 364,371 ---- containing the raw bytes. See the <a HREF="imagelist methods/Write.html">Write</a> method of Imagelists. + <br><br> + These Imagelists are not shared resources. So you have to close them + when done with them.By default the frameworks TrackHandler keeps + track of these Imagelists and closes them when the process exits. </P> *************** *** 266,269 **** --- 383,390 ---- So the above bitmap wouild be split into 15 images, nicely sorted into the imagelist. Throw on your image editor and try it out. + <br><br> + These Imagelists are not shared resources. So you have to close them + when done with them.By default the frameworks TrackHandler keeps + track of these Imagelists and closes them when the process exits. </P> |
From: jürgen u. <cer...@us...> - 2005-05-15 10:02:45
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/header In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8238 Modified Files: header.dtpl Log Message: bit of this and a bit of that Index: header.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/header/header.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** header.dtpl 29 Apr 2005 15:18:49 -0000 1.1.1.1 --- header.dtpl 15 May 2005 10:02:35 -0000 1.2 *************** *** 89,95 **** lp=a NMCUSTOMDRAW structure containig data used for drawing <br> ! See <a HREF="customdrawing Header controls">customdrawing Header controls</a> for details <br><br> <DT>'endtrack' <DD>the user has stopped dragging a divider<br> --- 89,102 ---- lp=a NMCUSTOMDRAW structure containig data used for drawing <br> ! See <a HREF="customdrawing Header controls.html">customdrawing Header controls</a> for details <br><br> + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + + <DT>'endtrack' <DD>the user has stopped dragging a divider<br> |
From: jürgen u. <cer...@us...> - 2005-05-15 10:02:21
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/editbox In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8104 Modified Files: editbox.dtpl Log Message: bit of this and a bit of that Index: editbox.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/editbox/editbox.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** editbox.dtpl 29 Apr 2005 15:17:58 -0000 1.1.1.1 --- editbox.dtpl 15 May 2005 10:02:10 -0000 1.2 *************** *** 42,45 **** --- 42,53 ---- <br><br> + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + + + <DT>'errspace' <DD>the system can not allocate enough memory |
From: jürgen u. <cer...@us...> - 2005-05-15 10:02:03
|
Update of /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/combobox In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8036 Modified Files: combobox.dtpl Log Message: bit of this and a bit of that Index: combobox.dtpl =================================================================== RCS file: /cvsroot/wnd/wnd/wnd_doc/doc/controls/control classes/combobox/combobox.dtpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** combobox.dtpl 29 Apr 2005 15:18:24 -0000 1.1.1.1 --- combobox.dtpl 15 May 2005 10:01:44 -0000 1.2 *************** *** 42,45 **** --- 42,52 ---- <br><br> + <DT>'destroy' + <DD>the control is about to be destroyed<br> + wp=allways zero<br> + lp=allways zero + <br><br> + + <DT>'errspace' *************** *** 140,148 **** <TR> <TD>'ownerdrawfixed'</TD> ! <TD>Has no effect here. Do not use</TD> </TR> <TR> <TD>'ownerdrawvariable'</TD> ! <TD>Has no effect here. Do not use</TD> </TR> <TR> --- 147,155 ---- <TR> <TD>'ownerdrawfixed'</TD> ! <TD>Used with ownerdrawn comboboxes. Has no effect here</TD> </TR> <TR> <TD>'ownerdrawvariable'</TD> ! <TD>Used with ownerdrawn comboboxes. Has no effect here.</TD> </TR> <TR> |