X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=src%2Fmain.py;h=f0953a090ffeae2ae82f342f517f2c2314145c4c;hb=760d5d7adfa573dd7f52277e14f85e5b0efa5b54;hp=85065dd9d0721cc481033fea15ec75a2c7dfecef;hpb=b7a99e202b428cf50549b99ae664f1f8f2caeb52;p=matthijs%2Fupstream%2Fmobilegtd.git diff --git a/src/main.py b/src/main.py index 85065dd..f0953a0 100644 --- a/src/main.py +++ b/src/main.py @@ -7,44 +7,35 @@ #tr.go() def run(): - import sys - import e32 - if e32.in_emulator(): - sys.path.append('c:/python/') - - - import os.path - print sys.path -# print os.path.dirname(__file__) -# sys.path.append(os.path.dirname(__file__)) - import log.logging - from log.logging import logger - import sys,os - logger.log_stderr() - sys.stderr.write('stderr logged from default') - - - - lock=None - - from config.config import gtd_directory,read_configurations - read_configurations() - - from inout.io import safe_chdir - safe_chdir(gtd_directory) - print os.getcwd() + logger = None try: + import sys + import e32 + import os + if e32.in_emulator(): + sys.path.append('c:/python/') + + + # Set up logging + from log.logging import logger as _logger + logger = _logger + logger.log_stderr() + + + # Read config + from config import config + import inout + config.read_configurations() + inout.io.safe_chdir(config.gtd_directory) + + # Yield to the scheduler e32.ao_yield() - import sys,os - import config.config, config.defaultconfig - import gui.gui from model.projects import Projects from gui.projects_list.project_list_view import ProjectListView - import inout.io from persistence.projects_directory import ProjectsDirectory - directory = os.path.join(config.config.gtd_directory,'@Projects') + directory = os.path.join(config.gtd_directory,'@Projects') projects = Projects() projects_directory = ProjectsDirectory(projects) @@ -54,35 +45,63 @@ def run(): # projects.process() projects_view = ProjectListView(projects) projects_view.run() - #logger.close() except Exception, e: - import appuifw,traceback - trace = traceback.extract_tb(sys.exc_info()[2]) - print e,trace - def display(objects): - strings=[] - for object in objects: - strings.append(u'%s'%object) - appuifw.selection_list(strings) + import appuifw,traceback,os + print e - error_text = unicode(repr(e.args)) + (type, value, tb) = sys.exc_info() + lines = [] + + # Create error message + for line in traceback.format_exception_only(type, value): + lines.append(unicode(line)) + lines.append("\n") + + # Create stacktrace + trace = traceback.extract_tb(tb) + trace.reverse() + + basedir = os.path.dirname(__file__) + os.sep + for (file, line, func, code) in trace: + # Remove the basedir from any filename, since it is not so + # interesting but takes up precious space. + if file.startswith(basedir): + file = file[len(basedir):] + lines.append(u'\n%s:%s\nin %s:\n%s\n' % (file, line, func, code)) + + # Create and fill an error dialog t = appuifw.Text() - for trace_line in trace: - formatted_trace_line = u'\nIn %s line %s: %s "%s"'%trace_line - logger.log(formatted_trace_line,1) - t.add(formatted_trace_line) - logger.log(error_text,1) - t.add(error_text) + for line in lines: + if logger: + logger.log(line,1) + t.add(line) + + # Put the focus back at the top + t.set_pos(0) + + # Create a lock to wait on lock = e32.Ao_lock() + + # Set up the dialog appuifw.app.menu=[(u'Exit', lock.signal)] appuifw.app.title=u'Error' appuifw.app.body=t - #appuifw.app.exit_key_handler=gui.exit + appuifw.app.exit_key_handler=lock.signal + + # Wait until the exit option or button is chosen lock.wait() - logger.close() + # Exit app when script returns + appuifw.app.set_exit() + + if logger: + logger.close() -run() +try: + run() +except: + import traceback + traceback.print_exc() #tr.stop()