mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
Moved Cocoa error reporting to Github mode.
This commit is contained in:
parent
10d1363334
commit
7d107d8efa
@ -14,7 +14,7 @@ class PyDupeGuruBase(PyBaseApp):
|
||||
@dontwrap
|
||||
def _init(self, modelclass):
|
||||
logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(message)s')
|
||||
install_exception_hook()
|
||||
install_exception_hook('https://github.com/hsoft/dupeguru/issues')
|
||||
install_cocoa_logger()
|
||||
patch_threaded_job_performer()
|
||||
self.model = modelclass(self)
|
||||
|
@ -11,14 +11,16 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
@interface HSErrorReportWindow : NSWindowController
|
||||
{
|
||||
NSTextView *contentTextView;
|
||||
NSString *githubUrl;
|
||||
}
|
||||
|
||||
@property (readwrite, retain) NSTextView *contentTextView;
|
||||
@property (readwrite, retain) NSString *githubUrl;
|
||||
|
||||
// True if the user wants to send the report
|
||||
+ (BOOL)showErrorReportWithContent:(NSString *)content;
|
||||
- (id)initWithContent:(NSString *)content;
|
||||
+ (void)showErrorReportWithContent:(NSString *)content githubUrl:(NSString *)githubUrl;
|
||||
- (id)initWithContent:(NSString *)content githubUrl:(NSString *)githubUrl;
|
||||
|
||||
- (void)send;
|
||||
- (void)dontSend;
|
||||
- (void)goToGithub;
|
||||
- (void)close;
|
||||
@end
|
@ -12,33 +12,33 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
@implementation HSErrorReportWindow
|
||||
|
||||
@synthesize contentTextView;
|
||||
@synthesize githubUrl;
|
||||
|
||||
+ (BOOL)showErrorReportWithContent:(NSString *)content
|
||||
+ (void)showErrorReportWithContent:(NSString *)content githubUrl:(NSString *)githubUrl
|
||||
{
|
||||
HSErrorReportWindow *report = [[HSErrorReportWindow alloc] initWithContent:content];
|
||||
NSInteger result = [NSApp runModalForWindow:[report window]];
|
||||
HSErrorReportWindow *report = [[HSErrorReportWindow alloc] initWithContent:content githubUrl:githubUrl];
|
||||
[NSApp runModalForWindow:[report window]];
|
||||
[report release];
|
||||
return result == NSOKButton;
|
||||
}
|
||||
|
||||
- (id)initWithContent:(NSString *)content
|
||||
- (id)initWithContent:(NSString *)content githubUrl:(NSString *)aGithubUrl
|
||||
{
|
||||
self = [super initWithWindow:nil];
|
||||
[self setWindow:createHSErrorReportWindow_UI(self)];
|
||||
[contentTextView alignLeft:nil];
|
||||
[[[contentTextView textStorage] mutableString] setString:content];
|
||||
self.githubUrl = aGithubUrl;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)send
|
||||
- (void)goToGithub
|
||||
{
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:self.githubUrl]];
|
||||
}
|
||||
|
||||
- (void)close
|
||||
{
|
||||
[[self window] orderOut:self];
|
||||
[NSApp stopModalWithCode:NSOKButton];
|
||||
}
|
||||
|
||||
- (void)dontSend
|
||||
{
|
||||
[[self window] orderOut:self];
|
||||
[NSApp stopModalWithCode:NSCancelButton];
|
||||
}
|
||||
@end
|
@ -28,7 +28,7 @@
|
||||
- (NSString *)url2path:(NSString *)url;
|
||||
- (void)createPool;
|
||||
- (void)destroyPool;
|
||||
- (BOOL)reportCrash:(NSString *)crashReport;
|
||||
- (void)reportCrash:(NSString *)crashReport withGithubUrl:(NSString *)githubUrl;
|
||||
- (void)log:(NSString *)s;
|
||||
- (NSDictionary *)readExifData:(NSString *)imagePath;
|
||||
@end
|
@ -143,9 +143,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)reportCrash:(NSString *)crashReport
|
||||
- (void)reportCrash:(NSString *)crashReport withGithubUrl:(NSString *)githubUrl
|
||||
{
|
||||
return [HSErrorReportWindow showErrorReportWithContent:crashReport];
|
||||
return [HSErrorReportWindow showErrorReportWithContent:crashReport githubUrl:githubUrl];
|
||||
}
|
||||
|
||||
- (void)log:(NSString *)s
|
||||
|
@ -11,7 +11,6 @@ import time
|
||||
import traceback
|
||||
import sys
|
||||
|
||||
from hscommon.error_report import send_error_report
|
||||
from .CocoaProxy import CocoaProxy
|
||||
|
||||
proxy = CocoaProxy()
|
||||
@ -81,21 +80,20 @@ def safe_format_exception(type, value, tb):
|
||||
result.extend(traceback.format_exception_only(type, value))
|
||||
return result
|
||||
|
||||
def report_crash(type, value, tb):
|
||||
app_identifier = proxy.bundleIdentifier()
|
||||
app_version = proxy.appVersion()
|
||||
osx_version = proxy.osxVersion()
|
||||
s = "Application Identifier: {}\n".format(app_identifier)
|
||||
s += "Application Version: {}\n".format(app_version)
|
||||
s += "Mac OS X Version: {}\n\n".format(osx_version)
|
||||
s += ''.join(safe_format_exception(type, value, tb))
|
||||
if LOG_BUFFER:
|
||||
s += '\nRelevant Console logs:\n\n'
|
||||
s += '\n'.join(LOG_BUFFER)
|
||||
if proxy.reportCrash_(s):
|
||||
send_error_report(s)
|
||||
def install_exception_hook(github_url):
|
||||
def report_crash(type, value, tb):
|
||||
app_identifier = proxy.bundleIdentifier()
|
||||
app_version = proxy.appVersion()
|
||||
osx_version = proxy.osxVersion()
|
||||
s = "Application Identifier: {}\n".format(app_identifier)
|
||||
s += "Application Version: {}\n".format(app_version)
|
||||
s += "Mac OS X Version: {}\n\n".format(osx_version)
|
||||
s += ''.join(safe_format_exception(type, value, tb))
|
||||
if LOG_BUFFER:
|
||||
s += '\nRelevant Console logs:\n\n'
|
||||
s += '\n'.join(LOG_BUFFER)
|
||||
proxy.reportCrash_withGithubUrl_(s, github_url)
|
||||
|
||||
def install_exception_hook():
|
||||
sys.excepthook = report_crash
|
||||
|
||||
# A global log buffer to use for error reports
|
||||
|
@ -1,33 +1,41 @@
|
||||
ownerclass = 'HSErrorReportWindow'
|
||||
ownerimport = 'HSErrorReportWindow.h'
|
||||
|
||||
result = Window(524, 390, "Error Report")
|
||||
result = Window(524, 470, "Error Report")
|
||||
result.canClose = False
|
||||
result.canResize = False
|
||||
result.canMinimize = False
|
||||
label1 = Label(result, "Something went wrong. Would you like to send the error report to Hardcoded Software?")
|
||||
label1 = Label(result, "Something went wrong. How about reporting the error?")
|
||||
errorTextView = TextView(result)
|
||||
label2 = Label(result, "Although the application should continue to run after this error, it may be in an instable state, so it is recommended that you restart the application.")
|
||||
sendButton = Button(result, "Send")
|
||||
dontSendButton = Button(result, "Don't Send")
|
||||
label2 = Label(result,
|
||||
"Error reports should be reported as Github issues. You can copy the error traceback "
|
||||
"above and paste it in a new issue (bonus point if you run a search to make sure the "
|
||||
"issue doesn't already exist). What usually really helps is if you add a description "
|
||||
"of how you got the error. Thanks!"
|
||||
"\n\n"
|
||||
"Although the application should continue to run after this error, it may be in an "
|
||||
"unstable state, so it is recommended that you restart the application."
|
||||
)
|
||||
sendButton = Button(result, "Go to Github")
|
||||
dontSendButton = Button(result, "Close")
|
||||
|
||||
owner.contentTextView = errorTextView
|
||||
sendButton.action = Action(owner, 'send')
|
||||
sendButton.action = Action(owner, 'goToGithub')
|
||||
sendButton.keyEquivalent = "\\r"
|
||||
dontSendButton.action = Action(owner, 'dontSend')
|
||||
dontSendButton.action = Action(owner, 'close')
|
||||
dontSendButton.keyEquivalent = "\\E"
|
||||
|
||||
label1.height = 34
|
||||
errorTextView.height = 221
|
||||
label2.height = 51
|
||||
label2.height = 130
|
||||
sendButton.width = 100
|
||||
dontSendButton.width = 100
|
||||
|
||||
label1.packToCorner(Pack.UpperLeft)
|
||||
label1.moveTo(Pack.UpperLeft)
|
||||
label1.fill(Pack.Right)
|
||||
errorTextView.packRelativeTo(label1, Pack.Below, Pack.Left)
|
||||
errorTextView.moveNextTo(label1, Pack.Below, Pack.Left)
|
||||
errorTextView.fill(Pack.Right)
|
||||
label2.packRelativeTo(errorTextView, Pack.Below, Pack.Left)
|
||||
label2.moveNextTo(errorTextView, Pack.Below, Pack.Left)
|
||||
label2.fill(Pack.Right)
|
||||
sendButton.packRelativeTo(label2, Pack.Below, Pack.Right)
|
||||
dontSendButton.packRelativeTo(sendButton, Pack.Left, Pack.Middle)
|
||||
sendButton.moveNextTo(label2, Pack.Below, Pack.Right)
|
||||
dontSendButton.moveNextTo(sendButton, Pack.Left, Pack.Middle)
|
||||
|
Loading…
x
Reference in New Issue
Block a user