~sproaty/whyteboard/development

« back to all changes in this revision

Viewing changes to whyteboard/gui/app.py

  • Committer: Steven Sproat
  • Date: 2012-02-12 22:40:10 UTC
  • Revision ID: sproaty@gmail.com-20120212224010-fhjru933n799u1ai
add logs to reporting bug email; sorting out logging for release, validate email on bug report/suggest to provide email if blank

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
import wx
31
31
from optparse import OptionParser
32
32
 
33
 
from whyteboard.core import Config
 
33
from whyteboard.core import Config, LogRemembererHandler
34
34
from whyteboard.updater import Updater
35
35
from whyteboard.gui import ExceptionHook, GUI
36
36
from whyteboard.lib import ProgressBar
59
59
        parser.add_option("-u", "--update", action="store_true", help="check for a newer version of whyteboard")
60
60
        parser.add_option("-l", "--lang", help="set language. can be a country code or language (e.g. fr, french; nl, dutch)")
61
61
        parser.add_option("-d", "--debug", action="store_true", help="debug mode. more information about the program is logged")
 
62
        parser.add_option("--filedebug", help="write debug info to file FILE (optional; will default ")
62
63
 
63
64
        (options, args) = parser.parse_args()
64
 
        self.setup_logging(options.debug)
 
65
        self.setup_logging(options.debug, options.filedebug)
65
66
        self._oldhook = sys.excepthook
66
67
        sys.excepthook = ExceptionHook
67
68
 
81
82
        try:
82
83
            _file = options.file or sys.argv[1]
83
84
            _file = os.path.abspath(to_unicode(_file))
84
 
            logger.debug("Loading file [%s]", _file)
85
85
            if os.path.exists(_file):
 
86
                logger.debug("Loading file from command-line: [%s]", _file)
86
87
                self.frame.do_open(_file)
87
88
        except IndexError:
88
89
            pass
102
103
            sys.excepthook = self._oldhook
103
104
 
104
105
 
105
 
    def setup_logging(self, debug):
 
106
    def setup_logging(self, debug, debug_to_file):
 
107
        """
 
108
        We always run the program in debug mode and setup the 'remember' log
 
109
        handler which is used in case the program crashes.
 
110
        """
 
111
        print debug, debug_to_file
 
112
        logger.setLevel(logging.DEBUG)
106
113
        logfile = os.path.join(get_home_dir(), u"whyteboard.log")
107
 
        fh = logging.FileHandler(logfile)
108
 
        ch = logging.StreamHandler()
109
 
        if debug:
110
 
            logger.setLevel(logging.DEBUG)
 
114
        
 
115
        remembererrhandler = LogRemembererHandler()
 
116
        self.setup_handler(remembererrhandler)
 
117
        
 
118
        if debug or debug_to_file:
 
119
            self.setup_handler(logging.StreamHandler())
 
120
            
 
121
        if debug_to_file:
 
122
            self.setup_handler(logging.FileHandler(logfile))
 
123
            
 
124
    def setup_handler(self, handler):
111
125
        formatter = logging.Formatter('%(levelname)s %(asctime)s %(message)s')
112
 
        fh.setFormatter(formatter)
113
 
        ch.setFormatter(formatter)
114
 
        logger.addHandler(fh)
115
 
        logger.addHandler(ch)
116
 
 
 
126
        handler.setFormatter(formatter)
 
127
        logger.addHandler(handler)
 
128
        
117
129
 
118
130
    def delete_temp_update_files(self):
119
131
        tmp_file = os.path.join(get_path(), u"whyteboard-tmp.exe")