text: # A Demo of Pythonwin's Dialog and Property Page support.
  
  ###################
  #
  # First demo - use the built-in to Pythonwin "Tab Stop" dialog, but
  # customise it heavily.
  #
  # ID's for the tabstop dialog - out test.
  #
  from win32ui import IDD_SET_TABSTOPS
  from win32ui import IDC_EDIT_TABS
  from win32ui import IDC_PROMPT_TABS
  from win32con import IDOK
  from win32con import IDCANCEL
  
  import win32ui
  import win32con
  
  from pywin.mfc import dialog
  
  class TestDialog(dialog.Dialog):
  	def __init__(self, modal=1):
  		dialog.Dialog.__init__(self, IDD_SET_TABSTOPS)
  		self.counter=0
  		if modal:
  			self.DoModal()
  		else:
  			self.CreateWindow()
  
  	def OnInitDialog(self):
  		# Set the caption of the dialog itself.
  		self.SetWindowText("Used to be Tab Stops!")
  		# Get a child control, remember it, and change its text.
  		self.edit=self.GetDlgItem(IDC_EDIT_TABS)	# the text box.
  		self.edit.SetWindowText("Test")
  		# Hook a Windows message for the dialog.
  		self.edit.HookMessage(self.KillFocus, win32con.WM_KILLFOCUS)
  		# Get the prompt control, and change its next.
  		prompt=self.GetDlgItem(IDC_PROMPT_TABS)	# the prompt box.
  		prompt.SetWindowText("Prompt")
  		# And the same for the button..
  		cancel=self.GetDlgItem(IDCANCEL)	# the cancel button
  		cancel.SetWindowText("&Kill me")
  
  		# And just for demonstration purposes, we hook the notify message for the dialog.
  		# This allows us to be notified when the Edit Control text changes.
  		self.HookCommand(self.OnNotify, IDC_EDIT_TABS)
  
  	def OnNotify(self, controlid, code):
  		if code==win32con.EN_CHANGE:
  			print "Edit text changed!"
  		return 1 # I handled this, so no need to call defaults!
  
  	# kill focus for the edit box.
  	# Simply increment the value in the text box.
  	def KillFocus(self,msg):
  		self.counter=self.counter+1
  		if self.edit != None:
  			self.edit.SetWindowText(str(self.counter))
  
  	# Called when the dialog box is terminating...
  	def OnDestroy(self,msg):
  		del self.edit
  		del self.counter
  
  # A very simply Property Sheet.
  # We only make a new class for demonstration purposes.
  class TestSheet(dialog.PropertySheet):
  	def __init__(self, title):
  		dialog.PropertySheet.__init__(self, title)
  		self.HookMessage(self.OnActivate, win32con.WM_ACTIVATE)
  	def OnActivate(self, msg):
  		pass
  
  # A very simply Property Page, which will be "owned" by the above
  # Property Sheet.
  # We create a new class, just so we can hook a control notification.
  class TestPage(dialog.PropertyPage):
  	def OnInitDialog(self):
  		# We use the HookNotify function to allow Python to respond to
  		# Windows WM_NOTIFY messages.
  		# In this case, we are interested in BN_CLICKED messages.
  		self.HookNotify(self.OnNotify, win32con.BN_CLICKED)
  		
  	def OnNotify(self, std, extra):
  		print "OnNotify", std, extra
  
  # Some code that actually uses these objects.
  def demo(modal = 0):
  	TestDialog(modal)
  	
  	# property sheet/page demo
  	ps=win32ui.CreatePropertySheet('Property Sheet/Page Demo')
  	# Create a completely standard PropertyPage.
  	page1=win32ui.CreatePropertyPage(win32ui.IDD_PROPDEMO1)
  	# Create our custom property page.
  	page2=TestPage(win32ui.IDD_PROPDEMO2)
  	ps.AddPage(page1)
  	ps.AddPage(page2)
  	if modal:
  		ps.DoModal()
  	else:
  		style = win32con.WS_SYSMENU|win32con.WS_POPUP|win32con.WS_CAPTION|win32con.DS_MODALFRAME|win32con.WS_VISIBLE
  		styleex = win32con.WS_EX_DLGMODALFRAME | win32con.WS_EX_PALETTEWINDOW
  		ps.CreateWindow(win32ui.GetMainFrame(), style, styleex)
  	
  	
  def test(modal=1):
  
  #	dlg=dialog.Dialog(1010)
  #	dlg.CreateWindow()
  #	dlg.EndDialog(0)
  #	del dlg
  #	return
  	# property sheet/page demo
  	ps=TestSheet('Property Sheet/Page Demo')
  	page1=win32ui.CreatePropertyPage(win32ui.IDD_PROPDEMO1)
  	page2=win32ui.CreatePropertyPage(win32ui.IDD_PROPDEMO2)
  	ps.AddPage(page1)
  	ps.AddPage(page2)
  	del page1
  	del page2
  	if modal:
  		ps.DoModal()
  	else:
  		ps.CreateWindow(win32ui.GetMainFrame())
  	return ps
  
  def d():
  	dlg = win32ui.CreateDialog(win32ui.IDD_DEBUGGER)
  	dlg.datalist.append((win32ui.IDC_DBG_RADIOSTACK, "radio"))
  	print "data list is ", dlg.datalist
  	dlg.data['radio']=1
  	dlg.DoModal()
  	print dlg.data['radio']
  
  if __name__=='__main__':
  	demo(1)
  