Split CLI from GUI. These changes allow CLI to work without GTK

Part 1. To do: pylint on new files.


svn: r12674
This commit is contained in:
Benny Malengier
2009-06-18 21:56:37 +00:00
parent c71367ed54
commit 4b7692708c
23 changed files with 1304 additions and 1189 deletions

View File

@@ -8,7 +8,7 @@ import sys, os,bsddb
class ErrorReportAssistant(object):
def __init__(self,error_detail,rotate_handler):
def __init__(self,error_detail,rotate_handler, ownthread=False):
self._error_detail = error_detail
self._rotate_handler = rotate_handler
@@ -18,6 +18,9 @@ class ErrorReportAssistant(object):
self._final_report_text_buffer = None
self.w = Assistant.Assistant(None,None,self.complete)
#connect our extra close to close by x, and close by cancel click
self.w.window.connect('delete-event', self.close)
self.w.cancel.connect('clicked', self.close)
self.w.add_text_page(
_('Report a bug'),
@@ -52,13 +55,23 @@ class ErrorReportAssistant(object):
self.w.connect('page-changed',self.on_page_changed)
self.w.show()
self.ownthread = ownthread
if self.ownthread:
gtk.main()
def close(self, *obj):
if self.ownthread:
gtk.main_quit()
def on_page_changed(self, obj,page,data=None):
if page in self.cb:
self.cb[page]()
def complete(self):
pass
if self.ownthread:
#stop the thread we started
gtk.main_quit()
def _copy_to_clipboard(self, obj=None):
clipboard = gtk.Clipboard()
@@ -75,7 +88,8 @@ class ErrorReportAssistant(object):
def _start_email_client(self, obj=None):
import GrampsDisplay
GrampsDisplay.url('mailto:gramps-bugs@lists.sourceforge.net?subject="bug report"&body="%s"' \
GrampsDisplay.url('mailto:gramps-bugs@lists.sourceforge.net?subject='
'"bug report"&body="%s"' \
% self._final_report_text_buffer.get_text(
self._final_report_text_buffer.get_start_iter(),
self._final_report_text_buffer.get_end_iter()))

View File

@@ -46,9 +46,12 @@ class ErrorView(object):
if response == gtk.RESPONSE_HELP:
self.help_clicked()
elif response == gtk.RESPONSE_YES:
self.top.destroy()
ErrorReportAssistant(error_detail = self._error_detail,
rotate_handler = self._rotate_handler)
self.top.destroy()
rotate_handler = self._rotate_handler,
ownthread=True)
elif response == gtk.RESPONSE_CANCEL:
self.top.destroy()
def help_clicked(self):
"""Display the relevant portion of GRAMPS manual"""

View File

@@ -21,9 +21,7 @@ class GtkHandler(logging.Handler):
def emit(self, record):
"""
Add the record to the rotating buffer.
"""
self._record = record
ErrorView(error_detail=self,rotate_handler=self._rotate_handler)