ClamWin.py
上传用户:lswyart
上传日期:2008-06-12
资源大小:3441k
文件大小:5k
源码类别:

杀毒

开发平台:

Visual C++

  1. #!/usr/bin/python
  2. #Boa:App:BoaApp
  3. #-----------------------------------------------------------------------------
  4. # Name:        ClamWin.py
  5. # Product:     ClamWin Free Antivirus
  6. #
  7. # Author:      alch [alch at users dot sourceforge dot net]
  8. #
  9. # Created:     2004/19/03
  10. # Copyright:   Copyright alch (c) 2004
  11. # Licence:     
  12. #   This program is free software; you can redistribute it and/or modify
  13. #   it under the terms of the GNU General Public License as published by
  14. #   the Free Software Foundation; either version 2 of the License, or
  15. #   (at your option) any later version.
  16. #   This program is distributed in the hope that it will be useful,
  17. #   but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19. #   GNU General Public License for more details.
  20. #   You should have received a copy of the GNU General Public License
  21. #   along with this program; if not, write to the Free Software
  22. #   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  23. import SetUnicode
  24. import sys, os, locale
  25. import RedirectStd
  26. from wxPython.wx import *
  27. import wxFrameMain, Utils, wxDialogUtils
  28. import Config
  29. modules ={'ClamTray': [0, '', 'ClamTray.py'],
  30.  'CloseWindows': [0, '', 'CloseWindows.py'],
  31.  'Config': [0, '', 'Config.py'],
  32.  'EmailAlert': [0, '', 'EmailAlert.py'],
  33.  'ExplorerShell': [0, '', 'ExplorerShell.py'],
  34.  'MsgBox': [0, '', 'MsgBox.py'],
  35.  'OlAddin': [0, '', 'OlAddin.py'],
  36.  'Process': [0, '', 'Process.py'],
  37.  'RedirectStd': [0, '', 'RedirectStd.py'],
  38.  'Scheduler': [0, '', 'Scheduler.py'],
  39.  'SplashScreen': [0, '', 'SplashScreen.py'],
  40.  'Utils': [0, '', 'Utils.py'],
  41.  'wxDialogAbout': [0, '', 'wxDialogAbout.py'],
  42.  'wxDialogCheckUpdate': [0, '', 'wxDialogCheckUpdate.py'],
  43.  'wxDialogLogViewer': [0, '', 'wxDialogLogViewer.py'],
  44.  'wxDialogPreferences': [0, '', 'wxDialogPreferences.py'],
  45.  'wxDialogScheduledScan': [0, '', 'wxDialogScheduledScan.py'],
  46.  'wxDialogStatus': [0, '', 'wxDialogStatus.py'],
  47.  'wxDialogUtils': [0, '', 'wxDialogUtils.py'],
  48.  'wxFrameMain': [1, 'Main frame of Application', 'wxFrameMain.py']}
  49. class BoaApp(wxApp):
  50.     def __init__(self, params, config, mode='main', autoClose=False, path=''):
  51.         self.config = config
  52.         self.mode = mode       
  53.         self.path = path
  54.         self.autoClose = autoClose
  55.         self.exit_code = 0      
  56.         wxApp.__init__(self, params)
  57.     def OnInit(self):
  58.         wxInitAllImageHandlers()        
  59.         if self.mode == 'scanner':        
  60.             self.exit_code = wxDialogUtils.wxScan(parent=None, config=self.config, path=self.path, autoClose=self.autoClose)         
  61.         elif self.mode == 'update':            
  62.             self.exit_code = wxDialogUtils.wxUpdateVirDB(parent=None, config=self.config, autoClose=self.autoClose)
  63.         elif self.mode == 'configure':            
  64.             wxDialogUtils.wxConfigure(parent=None, config=self.config)
  65.         elif self.mode == 'configure_schedule':            
  66.             wxDialogUtils.wxConfigure(parent=None, config=self.config, switchToSchedule=True)
  67.         elif self.mode == 'about':   
  68.             wxDialogUtils.wxAbout(parent=None, config=self.config)
  69.         elif self.mode == 'viewlog':   
  70.             wxDialogUtils.wxShowLog(parent=None, logfile=self.path.strip('"'))
  71.         elif self.mode == 'checkversion':   
  72.             wxDialogUtils.wxCheckUpdate(parent=None, config=self.config)
  73.         else: #  mode == 'main'
  74.             self.main = wxFrameMain.create(parent=None, config=self.config)
  75.             self.main.Show()
  76.             #workaround for running in wxProcess        
  77.             self.SetTopWindow(self.main)            
  78.         return True
  79. def main(config=None, mode='main', autoClose=False, path='', config_file=None):       
  80.     currentDir = Utils.GetCurrentDir(True)
  81.     os.chdir(currentDir)        
  82.     Utils.CreateProfile()
  83.     if config is None:
  84.         if(config_file is None):
  85.             config_file = os.path.join(Utils.GetProfileDir(True),'ClamWin.conf')                          
  86.         else:
  87.             config_file = Utils.SafeExpandEnvironmentStrings(config_file)        
  88.         config = Config.Settings(config_file)    
  89.         b = config.Read()
  90.         
  91.     app = BoaApp(0, config, mode=mode, autoClose=autoClose, path=path)   
  92.     app.MainLoop()    
  93.     return app.exit_code
  94. if __name__ == '__main__':
  95.     import locale, codecs, encodings
  96.     print "System Locale:", locale.getdefaultlocale()
  97.     print "Default Encoding:", sys.getdefaultencoding()
  98.     
  99.     # set C locale, otherwise python and wxpython complain
  100.     locale.setlocale(locale.LC_ALL, 'C')    
  101.     close = False
  102.     mode = 'main'
  103.     path = ''
  104.     config_file = None
  105.     for arg in sys.argv[1:]:
  106.         if arg == '--close':
  107.             close = True
  108.         if arg.find('--mode=') == 0:
  109.             mode = arg[len('--mode='):]
  110.         if arg.find('--path=') == 0:            
  111.             path += '"' + arg[len('--path='):] + '" '
  112.         if arg.find('--config_file=') == 0:
  113.             config_file = arg[len('--config_file='):]                                
  114.     print "command line path: %s" % path.strip()            
  115.     exit_code = main(mode=mode, autoClose=close, path=path.strip(), config_file=config_file)
  116.     sys.exit(exit_code)