Common Dialogs


import wx
import wx.lib.wordwrap as wordwrap
import os


class Frame(wx.Frame):
def __init__(
  self, parent, id=-1, title='Common Dialogs', pos=wx.DefaultPosition,
  size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE
  ):
  
  wx.Frame.__init__(self, parent, id, title, pos, size, style)
  
  Panel = wx.Panel(self, -1)
  MenuBar = wx.MenuBar()
  
  FileMenu = wx.Menu()
  MenuItem = FileMenu.Append(-1, 'Exit')
  self.Bind(wx.EVT_MENU, self.OnExit, MenuItem)
  MenuBar.Append(FileMenu, '&File')
  
  TestMenu = wx.Menu()
  MenuItem = TestMenu.Append(-1, 'AboutBox')
  self.Bind(wx.EVT_MENU, self.OnAboutBox, MenuItem)
  MenuItem = TestMenu.Append(-1, 'ColourDialog')
  self.Bind(wx.EVT_MENU, self.OnColourDialog, MenuItem)
  MenuItem = TestMenu.Append(-1, 'DirDialog')
  self.Bind(wx.EVT_MENU, self.OnDirDialog, MenuItem)
  MenuItem = TestMenu.Append(-1, 'FileDialog')
  self.Bind(wx.EVT_MENU, self.OnFileDialog, MenuItem)
  MenuItem = TestMenu.Append(-1, 'FindReplaceDialog')
  self.Bind(wx.EVT_MENU, self.OnFindReplaceDialog, MenuItem)
  MenuItem = TestMenu.Append(-1, 'FontDialog')
  self.Bind(wx.EVT_MENU, self.OnFontDialog, MenuItem)
  MenuItem = TestMenu.Append(-1, 'MessageDialog')
  self.Bind(wx.EVT_MENU, self.OnMessageDialog, MenuItem)
  MenuItem = TestMenu.Append(-1, 'MultiChoiceDialog')
  self.Bind(wx.EVT_MENU, self.OnMultiChoiceDialog, MenuItem)
  MenuItem = TestMenu.Append(-1, 'PageSetupDialog')
  self.Bind(wx.EVT_MENU, self.OnPageSetupDialog, MenuItem)
  MenuItem = TestMenu.Append(-1, 'PrintDialog')
  self.Bind(wx.EVT_MENU, self.OnPrintDialog, MenuItem)
  MenuItem = TestMenu.Append(-1, 'ProgressDialog')
  self.Bind(wx.EVT_MENU, self.OnProgressDialog, MenuItem)
  MenuItem = TestMenu.Append(-1, 'SingleChoiceDialog')
  self.Bind(wx.EVT_MENU, self.OnSingleChoiceDialog, MenuItem)
  MenuItem = TestMenu.Append(-1, 'TextEntryDialog')
  self.Bind(wx.EVT_MENU, self.OnTextEntryDialog, MenuItem)
  
  MenuBar.Append(TestMenu, '&Test')
  self.SetMenuBar(MenuBar)
  
  
def OnExit(self, event):
  self.Close()
  
def OnAboutBox(self, event):
  AboutInfo = wx.AboutDialogInfo()
  AboutInfo.Name = 'Common Dialogs'
  AboutInfo.Version = '2.8.0.1'
  AboutInfo.Copyright = '(C) 2007 Coders Everywhere'
  AboutInfo.Description = wordwrap.wordwrap(
   'This is demo of wxPython\'s Common Dialogs which I entitled '
   'ShowBox. You can apply them in the pratical development to '
   'move quickly.\n\n'
    'You can select Test-Menu to try Boxitem what ShowBox includes.',
    350, wx.ClientDC(self))
  AboutInfo.WebSite = ('http://www.wxpython.org', 'wxPython Home Page')
  AboutInfo.License = wordwrap.wordwrap('cool huh?  '*6, 500, wx.ClientDC(self))
  AboutInfo.Developers = ['Shaka LCF', 'wxPhoenix']
  AboutInfo.DocWriters = ['XiaoJun', 'AXiang', 'LaoGu']
  AboutInfo.Artists = ['XueGe', 'SinSin', 'XiaoYi', 'LaoKong']
  
  wx.AboutBox(AboutInfo)
  
  
def OnColourDialog(self, event):
  ColorDlg = wx.ColourDialog(self)
  if ColorDlg.ShowModal() == wx.ID_OK:
   ColorData = ColorDlg.GetColourData()
   wx.MessageBox('Colour Tuple: %s' % str(ColorData.GetColour().Get()), 'Prompt')
  
  
def OnDirDialog(self, event):
  DirDialog = wx.DirDialog(parent=self,
         message='Select a directory',
         defaultPath=os.getcwd(),
         style=wx.DD_DEFAULT_STYLE|wx.DD_NEW_DIR_BUTTON)
         
  if DirDialog.ShowModal() == wx.ID_OK:
   wx.MessageBox('You selected: %s' % DirDialog.GetPath(), 'Prompt')
  
  
def OnFileDialog(self, event):
  FileDialog = wx.FileDialog(parent=self,
           message='Choose a file',
           defaultDir=os.getcwd(),
           defaultFile='',
           wildcard='Python source(*.py)|*.py',
           style=wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR
           )
  
  if FileDialog.ShowModal() == wx.ID_OK:
   PathList = FileDialog.GetPaths()
   Paths = ''
   for Path in PathList:
    Paths += Path + '\n'
   wx.MessageBox('You selected %d files:\n\n%s' % (len(PathList), Paths), 'Prompt')
              
     
def OnFindReplaceDialog(self, event):
  pass
  
  
def OnFontDialog(self, event):
  pass
  
  
def OnMessageDialog(self, event):
  MessageDialog = wx.MessageDialog(self,
           'This is demo of Common Dialogs',
           'Prompt',
           wx.OK | wx.ICON_INFORMATION
           # wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_INFORMATION
           )
           
  MessageDialog = MessageDialog.ShowModal()
  
  
def OnMultiChoiceDialog(self, event):
  Languages = ['C', 'C++', 'Python', 'Java', 'C#', 'Perl', 'Ruby', 'PHP', 'JavaScript']
  MultiChoiceDialog = wx.MultiChoiceDialog(self,
             'Choose you favourite language(s)',
             'Popular Languages:',
             Languages)
            
  if MultiChoiceDialog.ShowModal() == wx.ID_OK:
   Indexs = MultiChoiceDialog.GetSelections()
   Choices = [Languages[index] for index in Indexs ]
   wx.MessageBox('Your favourite language(s):\n\n%s' % '\n'.join(Choices), 'Prompt')

  
def OnPageSetupDialog(self, event):
  pass
  
  
def OnPrintDialog(self, event):
  pass
  
  
def OnProgressDialog(self, event):
  Max = 100
  ProgressDialog = wx.ProgressDialog(title='Execute Progress',
             message='Waiting...',
             maximum=Max,
             parent=self,
             style=wx.PD_CAN_ABORT | wx.PD_APP_MODAL |
             wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME
             )
            
  Continue, Count= True, 0
  while Continue and Count = Max / 2:
    Continue, Skip = ProgressDialog.Update(Count, 'Half-Time! A moment left!')
   else:
    Continue, Skip = ProgressDialog.Update(Count)


def OnSingleChoiceDialog(self, event):
  SingleChoiceDialog = wx.SingleChoiceDialog(
        self, 'Languages', 'Choose you favourite language',
        ['C/C++', 'Python', 'Java', 'C#', 'Perl', 'PHP'],
        wx.CHOICEDLG_STYLE)
        
  if SingleChoiceDialog.ShowModal() == wx.ID_OK:
   wx.MessageBox('Your favourite language is %s' % SingleChoiceDialog.GetStringSelection(), 'Prompt')
  
  
def OnTextEntryDialog(self, event):
  TextEntryDialog = wx.TextEntryDialog(parent=self,
            message='What is your favourite programming language?',
            caption='Enter some text',
            defaultValue='Python')
            
  if TextEntryDialog.ShowModal() == wx.ID_OK:
   wx.MessageBox('You enter: %s' % TextEntryDialog.GetValue(), 'Prompt')
  
  
def TestFrame():
app = wx.PySimpleApp()
frame = Frame(parent=None)
frame.Centre()
frame.Show()
app.MainLoop()

if __name__ == '__main__':
TestFrame()