Thursday, December 27, 2007

Get Text from multi column ListBox in Python


y = self.listCtrl.GetItem(a,n)
txt = y.GetText()


where  a =  Row Number n = Column Number

Tuesday, December 25, 2007

Few TK form tricks in Python.

1. Disable max button:
root.overrideredirect(0)

2. Remove all the decorations :
root.overrideredirect(1)

3. Disable Resize:
root.resizable(0,0)

Sunday, December 23, 2007

Adding file type association using vbScript

fext = "fcz"
prgid = "FCZ File"
des = "FCZ File"
extanm = "c:\Program files\TestApps\AppStart.exe"
Set o = CreateObject("wscript.shell")
o.regwrite "HKCR\." + fext + "\" , prgid ', "REG_SZ"
o.regwrite "HKCR\" + prgid + "\", des ', "REG_SZ"
'o.regwrite "HKCR\" + prgid + "\DefaultIcon\", extico, "REG_SZ"
o.regwrite "HKCR\" + prgid + "\Shell\","Open"
o.regwrite "HKCR\" + prgid + "\Shell\Open\Command\", """" + extanm + """ ""%1""", "REG_SZ"

Playing with Registry using Python.,

def regReadValue( regKey, subKey, name ):
#print regKey
aReg = ConnectRegistry(None,regKey)
aKey = OpenKey(aReg, subKey)
index = 0
data = []
while 1:
try:
regName = EnumValue(aKey, index)
if name == regName[0]:
data = regName[1:]
print data
return data
except:
break
index = index + 1
return data

def regRead( regKey, subKey):
#print regKey
aReg = ConnectRegistry(None,regKey)
aKey = OpenKey(aReg, subKey) # r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run')
index = 0
data = []
while 1:
try:
print("Enumkey =" + subKey + "\\" + EnumKey(aKey, index))
data.append( subKey + "\\" + EnumKey(aKey, index))
except:
break
index = index + 1
return data

def regWrite(regKey, subKey, regValue, regData, regType):
aReg = ConnectRegistry(None,regKey)
print subKey
aKey = CreateKey(aReg, subKey) #, 0, KE)
try:
SetValueEx(aKey,regValue,0, regType, regData)
except EnvironmentError:
print "Encountered problems writing into the Registry..."
CloseKey(aKey)
CloseKey(aReg)

def regDelete(regKey, subKey):
#aReg = ConnectRegistry(none,regKey)
reg = regRead(regKey, subKey)
for a in reg:
regDelete(regKey,a)
print a
DeleteKey(regKey, subKey)

Monday, December 17, 2007

Populating Two column in Pascal

Following code can populate them:

with listview1.Items.Add do
begin
caption := 'first Column' ;
SubItems.Add('Second Column');
end ;

Thursday, December 13, 2007

Read and Set CheckBoxes in PythonWin using win32...

# A demo of the win32rcparser module and using win32gui

import win32gui
import win32api
import win32con
import win32rcparser
import commctrl
import sys, os
import win32ui

# We use the .rc file in our 'test' directory.
try:
__file__
except NameError: # pre 2.3
__file__ = sys.argv[0]

this_dir = os.path.abspath(os.path.dirname(__file__))
g_rcname = os.path.abspath(
os.path.join( this_dir, "prefEditing.RC"))

if not os.path.isfile(g_rcname):
raise RuntimeError, "Can't locate resource file (should be at '%s')" % (g_rcname,)

class DemoWindow:
def __init__(self, dlg_template):
self.dlg_template = dlg_template

def CreateWindow(self):
self._DoCreate(win32gui.CreateDialogIndirect)

def DoModal(self):
return self._DoCreate(win32gui.DialogBoxIndirect)

def _DoCreate(self, fn):
message_map = {
win32con.WM_INITDIALOG: self.OnInitDialog,
win32con.WM_CLOSE: self.OnClose,
win32con.WM_DESTROY: self.OnDestroy,
win32con.WM_COMMAND: self.OnCommand,
}
return fn(0, self.dlg_template, 0, message_map)

def OnInitDialog(self, hwnd, msg, wparam, lparam):
self.hwnd = hwnd
# centre the dialog
desktop = win32gui.GetDesktopWindow()
l,t,r,b = win32gui.GetWindowRect(self.hwnd)
dt_l, dt_t, dt_r, dt_b = win32gui.GetWindowRect(desktop)
centre_x, centre_y = win32gui.ClientToScreen( desktop, ( (dt_r-dt_l)/2, (dt_b-dt_t)/2) )
win32gui.MoveWindow(hwnd, centre_x-(r/2), centre_y-(b/2), r-l, b-t, 0)

def getCheckBoxValue(self, hwnd, cbid):
## Gets the Value of the CheckBox #
b = win32gui.GetDlgItem(hwnd, cbid)
val = win32gui.SendMessage(hwnd, win32con.BM_GETCHECK, 0, 0) & win32con.BST_CHECKED
return val

def setCheckBoxValue(self, hwnd, cbid, val):
## Gets the Value of the CheckBox #
b = win32gui.GetDlgItem(hwnd, cbid)
win32gui.SendMessage(b,win32con.BM_SETCHECK,val,0)

def OnCommand(self, hwnd, msg, wparam, lparam):
# Needed to make OK/Cancel work - no other controls are handled.
id = win32api.LOWORD(wparam)
if id in [win32con.IDOK, win32con.IDCANCEL]:
win32gui.EndDialog(hwnd, id)
print id
a = win32gui.GetDesktopWindow()
# This returns the hwnd for the control
b = win32gui.GetDlgItem(hwnd, id)
# ("Hello")
# Changes the Text of control
# # win32gui.SetWindowText(b,"Test")
#yt = win32gui.DialogBoxParam(hwnd, id)
#print b, yt
#yt = win32gui.GetIconInfo( b)
print "Message :" + str(msg)
#win32gui.GetDlgItem(yt)
#print yt
#win32gui.SendMessage(b, commctrl.CDIS_SELECTED,0,0)
##win32gui.DialogBoxParam()
self.setCheckBoxValue(hwnd, id, 0)
#cb1=a.GetDlgItem(win32ui.IDC_PROMPT1)

def OnClose(self, hwnd, msg, wparam, lparam):
win32gui.EndDialog(hwnd, 0)

def OnDestroy(self, hwnd, msg, wparam, lparam):
pass

def DemoModal():
# Load the .rc file.
resources = win32rcparser.Parse(g_rcname)
for id, ddef in resources.dialogs.items():
print "Displaying dialog", id
w=DemoWindow(ddef)
w.DoModal()

if __name__=='__main__':
flags = 0
for flag in """ICC_DATE_CLASSES ICC_ANIMATE_CLASS ICC_ANIMATE_CLASS
ICC_BAR_CLASSES ICC_COOL_CLASSES ICC_DATE_CLASSES
ICC_HOTKEY_CLASS ICC_INTERNET_CLASSES ICC_LISTVIEW_CLASSES
ICC_PAGESCROLLER_CLASS ICC_PROGRESS_CLASS ICC_TAB_CLASSES
ICC_TREEVIEW_CLASSES ICC_UPDOWN_CLASS ICC_USEREX_CLASSES
ICC_WIN95_CLASSES """.split():
flags |= getattr(commctrl, flag)
win32gui.InitCommonControlsEx(flags)
# Need to do this go get rich-edit working.
##win32api.LoadLibrary("riched20.dll")
DemoModal()

Monday, November 26, 2007

Read Registry Files in Python

Reading Python files using open function will not work as Reg files are encoded using UTF-16, thus use the following code to read it

import codecs regFile = codecs.open ("c:/temp/Deve.reg", encoding="utf_16")
reg = regFile.read ()
regFile.close ()
print reg

Thursday, November 22, 2007

Softgrid Helper Ver: 0.02 Released.

Hello All,

Today I am releasing a newer & better version of the Softgrid Helper.

New Features:
1. New Installer: The msi package has been created using War Setup which internally uses Microsoft WIX.
2. Logging Enabled: Now most of the task has been logged so that any issue can be debugged.
3. New Name & Icons: New icons make this application look better.

Bug Fix(es) :
1. Refresh All and clean up issues have been resolved.

The installer can be downloaded from Here

Thanks and Regards,
Mayank Johri

Note:
1. This software is should not be used in production and has not been tested at all.
2. This software has been released under GNU 3.0 License.

Adding the Shortcuts to StartMenu

1. Create a new Directory in "Setup Files" and set the ID as "ProgramMenuFolder"  and set Name as "Programs".

2.  Create a new Directory under this directory and set ID as "ProgramMenuDir".

3. In the shortcut set the Directory as "ProgramMenuDir"

Sunday, November 18, 2007

Adding Scrollbars to TCL/TK listbox in python

The listbox itself doesn’t include a scrollbar. Attaching a scrollbar is pretty straightforward. Simply set the xscrollcommand and yscrollcommand options of the listbox to the set method of the corresponding scrollbar, and the command options of the scrollbars to the corresponding xview and yview methods in the listbox. Also remember to pack the scrollbars before the listbox. In the following example, only a vertical scrollbar is used. For more examples, see pattern section in the Scrollbar description.
frame = Frame(master)
scrollbar = Scrollbar(frame, orient=VERTICAL)
listbox = Listbox(frame, yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)
scrollbar.pack(side=RIGHT, fill=Y)listbox.pack(side=LEFT, fill=BOTH, expand=1)

Copied from http://effbot.org/tkinterbook/listbox.htm for personal use only.
Ok, now how to do this using GUI Builder:

Set the "yscrollcommand" of listbox to scrollbar.set in properties section and command of scrollbar to listbox.yview

Monday, October 29, 2007

This is my second tool which i use to clean up the OSD files, and prepare them to promote them to production server by updating the server name in the OSD files by right clicking them and selecting "update to Prod Server" in Windows Explorer.

The tool can be downloaded from OSD Helper
The source code of the package is also available with the package and is released under GNU 3 License.

NOTE: This program has not been tested fully and will contain many bugs, kindly report them and this program has not been intended to be used in production. Use it at your own risk.

Also comments and suggestions are always welcome.

Tuesday, October 16, 2007

Softgrid Helper.

I  have developed a new tool which can be used to cleanup the cache of softgrid client, refresh specific softgrid server or refresh all server.

Download it from here http://sourceforge.net/projects/softgridhelper/