Commit 4cec2c76 authored by Felix Paul Kühne's avatar Felix Paul Kühne

macosx: add and deploy QuincyKit for crashlog reporting

This is for evaluation only. We might want to revert to our previous system for the release.
parent f66dacb3
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">12F45</string>
<string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1187.40</string>
<string key="IBDocument.HIToolboxVersion">626.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">851</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="557403926">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSCustomObject" id="265051856">
<string key="NSClassName">BWQuincyUI</string>
</object>
<object class="NSCustomObject" id="827796767">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="582831428">
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSWindowTemplate" id="802234099">
<int key="NSWindowStyleMask">1</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{602, 592}, {571, 587}}</string>
<int key="NSWTFlags">1886912512</int>
<string key="NSWindowTitle">Crash Reporter</string>
<string key="NSWindowClass">NSWindow</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
<nil key="NSUserInterfaceItemIdentifier"/>
<string key="NSWindowContentMaxSize">{1.7976931348623157e+308, 1.7976931348623157e+308}</string>
<string key="NSWindowContentMinSize">{213, 107}</string>
<object class="NSView" key="NSWindowView" id="346017069">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSBox" id="204457754">
<reference key="NSNextResponder" ref="346017069"/>
<int key="NSvFlags">288</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSView" id="511659880">
<reference key="NSNextResponder" ref="204457754"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTextField" id="696397380">
<reference key="NSNextResponder" ref="511659880"/>
<int key="NSvFlags">290</int>
<string key="NSFrame">{{0, 263}, {442, 24}}</string>
<reference key="NSSuperview" ref="511659880"/>
<reference key="NSNextKeyView" ref="217112912"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="922202055">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">Problem details and system configuration</string>
<object class="NSFont" key="NSSupport" id="113673234">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">13</double>
<int key="NSfFlags">1040</int>
</object>
<reference key="NSControlView" ref="696397380"/>
<object class="NSColor" key="NSBackgroundColor" id="370662603">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor" id="536097992">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="140564637">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlTextColor</string>
<object class="NSColor" key="NSColor" id="824514053">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
</object>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSScrollView" id="217112912">
<reference key="NSNextResponder" ref="511659880"/>
<int key="NSvFlags">290</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSClipView" id="238729313">
<reference key="NSNextResponder" ref="217112912"/>
<int key="NSvFlags">2304</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTextView" id="436407902">
<reference key="NSNextResponder" ref="238729313"/>
<int key="NSvFlags">2322</int>
<object class="NSMutableSet" key="NSDragTypes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="set.sortedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>Apple HTML pasteboard type</string>
<string>Apple PDF pasteboard type</string>
<string>Apple PICT pasteboard type</string>
<string>Apple PNG pasteboard type</string>
<string>Apple URL pasteboard type</string>
<string>CorePasteboardFlavorType 0x6D6F6F76</string>
<string>NSColor pasteboard type</string>
<string>NSFilenamesPboardType</string>
<string>NSStringPboardType</string>
<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
<string>NeXT RTFD pasteboard type</string>
<string>NeXT Rich Text Format v1.0 pasteboard type</string>
<string>NeXT TIFF v4.0 pasteboard type</string>
<string>NeXT font pasteboard type</string>
<string>NeXT ruler pasteboard type</string>
<string>WebURLsWithTitlesPboardType</string>
<string>public.url</string>
</object>
</object>
<string key="NSFrame">{{0, -14}, {437, 253}}</string>
<reference key="NSSuperview" ref="238729313"/>
<reference key="NSNextKeyView" ref="321879571"/>
<object class="NSTextContainer" key="NSTextContainer" id="567359698">
<object class="NSLayoutManager" key="NSLayoutManager">
<object class="NSTextStorage" key="NSTextStorage">
<object class="NSMutableString" key="NSString">
<characters key="NS.bytes"/>
</object>
<nil key="NSDelegate"/>
</object>
<object class="NSMutableArray" key="NSTextContainers">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="567359698"/>
</object>
<int key="NSLMFlags">6</int>
<nil key="NSDelegate"/>
</object>
<reference key="NSTextView" ref="436407902"/>
<double key="NSWidth">437</double>
<int key="NSTCFlags">1</int>
</object>
<object class="NSTextViewSharedData" key="NSSharedData">
<int key="NSFlags">100667363</int>
<int key="NSTextCheckingTypes">0</int>
<nil key="NSMarkedAttributes"/>
<object class="NSColor" key="NSBackgroundColor" id="295167230">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<object class="NSDictionary" key="NSSelectedAttributes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSBackgroundColor</string>
<string>NSColor</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">selectedTextBackgroundColor</string>
<reference key="NSColor" ref="536097992"/>
</object>
<object class="NSColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">selectedTextColor</string>
<reference key="NSColor" ref="824514053"/>
</object>
</object>
</object>
<reference key="NSInsertionColor" ref="824514053"/>
<object class="NSDictionary" key="NSLinkAttributes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSColor</string>
<string>NSUnderline</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDEAA</bytes>
</object>
<integer value="1"/>
</object>
</object>
<nil key="NSDefaultParagraphStyle"/>
<nil key="NSTextFinder"/>
<int key="NSPreferredTextFinderStyle">0</int>
</object>
<int key="NSTVFlags">6</int>
<string key="NSMaxSize">{876, 10000000}</string>
<nil key="NSDelegate"/>
</object>
</object>
<string key="NSFrame">{{1, 1}, {437, 253}}</string>
<reference key="NSSuperview" ref="217112912"/>
<reference key="NSNextKeyView" ref="436407902"/>
<reference key="NSDocView" ref="436407902"/>
<reference key="NSBGColor" ref="295167230"/>
<object class="NSCursor" key="NSCursor">
<string key="NSHotSpot">{4, 5}</string>
<object class="NSImage" key="NSImage">
<int key="NSImageFlags">12582912</int>
<object class="NSMutableArray" key="NSReps">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="0"/>
<object class="NSBitmapImageRep">
<object class="NSData" key="NSTIFFRepresentation">
<bytes key="NS.bytes">TU0AKgAAAHCAFUqgBVKsAAAAwdVQUqwaEQeIRGJRGFlYqwWLQ+JxuOQpVRmEx2RROKwOQyOUQSPyaUym
SxqWyKXyeYxyZzWbSuJTScRCbz2Nz+gRKhUOfTqeUai0OSxiWTiBQSHSGFquGwekxyAgAAAOAQAAAwAA
AAEAEAAAAQEAAwAAAAEAEAAAAQIAAwAAAAIACAAIAQMAAwAAAAEABQAAAQYAAwAAAAEAAQAAAREABAAA
AAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEAAgAAARYAAwAAAAEAEAAAARcABAAAAAEAAABnARwAAwAA
AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
</object>
</object>
</object>
</object>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
</object>
</object>
<int key="NScvFlags">4</int>
</object>
<object class="NSScroller" id="194183608">
<reference key="NSNextResponder" ref="217112912"/>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-30, 1}, {15, 90}}</string>
<reference key="NSSuperview" ref="217112912"/>
<reference key="NSNextKeyView" ref="238729313"/>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<reference key="NSTarget" ref="217112912"/>
<string key="NSAction">_doScroller:</string>
<double key="NSCurValue">1</double>
</object>
<object class="NSScroller" id="321879571">
<reference key="NSNextResponder" ref="217112912"/>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {87, 18}}</string>
<reference key="NSSuperview" ref="217112912"/>
<reference key="NSNextKeyView" ref="194183608"/>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="217112912"/>
<string key="NSAction">_doScroller:</string>
<double key="NSCurValue">1</double>
<double key="NSPercent">0.94565220000000005</double>
</object>
</object>
<string key="NSFrame">{{0, 8}, {439, 255}}</string>
<reference key="NSSuperview" ref="511659880"/>
<reference key="NSNextKeyView" ref="238729313"/>
<int key="NSsFlags">133650</int>
<reference key="NSVScroller" ref="194183608"/>
<reference key="NSHScroller" ref="321879571"/>
<reference key="NSContentView" ref="238729313"/>
<double key="NSMinMagnification">0.25</double>
<double key="NSMaxMagnification">4</double>
<double key="NSMagnification">1</double>
</object>
</object>
<string key="NSFrameSize">{439, 285}</string>
<reference key="NSSuperview" ref="204457754"/>
<reference key="NSNextKeyView" ref="696397380"/>
</object>
</object>
<string key="NSFrame">{{112, 75}, {439, 285}}</string>
<reference key="NSSuperview" ref="346017069"/>
<reference key="NSNextKeyView" ref="511659880"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Title</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">11</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="NSBackgroundColor" id="697590463">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">textBackgroundColor</string>
<reference key="NSColor" ref="295167230"/>
</object>
<object class="NSColor" key="NSTextColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
</object>
</object>
<reference key="NSContentView" ref="511659880"/>
<int key="NSBorderType">0</int>
<int key="NSBoxType">3</int>
<int key="NSTitlePosition">0</int>
<bool key="NSTransparent">NO</bool>
</object>
<object class="NSTextField" id="494776998">
<reference key="NSNextResponder" ref="346017069"/>
<int key="NSvFlags">264</int>
<string key="NSFrame">{{112, 368}, {439, 105}}</string>
<reference key="NSSuperview" ref="346017069"/>
<reference key="NSNextKeyView" ref="69401596"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="794055832">
<int key="NSCellFlags">-1805647871</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="113673234"/>
<string key="NSPlaceholderString">Placeholder</string>
<reference key="NSControlView" ref="494776998"/>
<bool key="NSDrawsBackground">YES</bool>
<reference key="NSBackgroundColor" ref="697590463"/>
<object class="NSColor" key="NSTextColor" id="301634927">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">textColor</string>
<reference key="NSColor" ref="824514053"/>
</object>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="654062154">
<reference key="NSNextResponder" ref="346017069"/>
<int key="NSvFlags">264</int>
<string key="NSFrame">{{109, 508}, {445, 59}}</string>
<reference key="NSSuperview" ref="346017069"/>
<reference key="NSNextKeyView" ref="182606009"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="154211884">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">%@ unexpectedly quit the last time it was run. Would you like to send a crash report to %@?</string>
<reference key="NSSupport" ref="113673234"/>
<reference key="NSControlView" ref="654062154"/>
<reference key="NSBackgroundColor" ref="370662603"/>
<reference key="NSTextColor" ref="140564637"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="69401596">
<reference key="NSNextResponder" ref="346017069"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{106, 35}, {119, 32}}</string>
<reference key="NSSuperview" ref="346017069"/>
<reference key="NSNextKeyView" ref="483277688"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="371323797">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Show Details</string>
<reference key="NSSupport" ref="113673234"/>
<reference key="NSControlView" ref="69401596"/>
<int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="113673234"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="483277688">
<reference key="NSNextResponder" ref="346017069"/>
<int key="NSvFlags">-2147483356</int>
<string key="NSFrame">{{106, 35}, {119, 32}}</string>
<reference key="NSSuperview" ref="346017069"/>
<reference key="NSNextKeyView" ref="204457754"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="87187545">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Hide Details</string>
<reference key="NSSupport" ref="113673234"/>
<reference key="NSControlView" ref="483277688"/>
<int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="113673234"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="640734563">
<reference key="NSNextResponder" ref="346017069"/>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{393, 35}, {82, 32}}</string>
<reference key="NSSuperview" ref="346017069"/>
<reference key="NSNextKeyView" ref="154373665"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="151764572">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Cancel</string>
<reference key="NSSupport" ref="113673234"/>
<reference key="NSControlView" ref="640734563"/>
<int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="113673234"/>
<string key="NSAlternateContents"/>
<string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="154373665">
<reference key="NSNextResponder" ref="346017069"/>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{475, 35}, {82, 32}}</string>
<reference key="NSSuperview" ref="346017069"/>
<reference key="NSNextKeyView" ref="54059672"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="713846517">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Send</string>
<reference key="NSSupport" ref="113673234"/>
<reference key="NSControlView" ref="154373665"/>
<int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="113673234"/>
<string key="NSAlternateContents"/>
<string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="182606009">
<reference key="NSNextResponder" ref="346017069"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{112, 481}, {13, 13}}</string>
<reference key="NSSuperview" ref="346017069"/>
<reference key="NSNextKeyView" ref="101270370"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="717745301">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="113673234"/>
<reference key="NSControlView" ref="182606009"/>
<int key="NSButtonFlags">-1198637056</int>
<int key="NSButtonFlags2">5</int>
<reference key="NSAlternateImage" ref="113673234"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
</object>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="101270370">
<reference key="NSNextResponder" ref="346017069"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{130, 479}, {115, 18}}</string>
<reference key="NSSuperview" ref="346017069"/>
<reference key="NSNextKeyView" ref="494776998"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="881936640">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">Comments</string>
<reference key="NSSupport" ref="113673234"/>
<reference key="NSControlView" ref="101270370"/>
<reference key="NSBackgroundColor" ref="370662603"/>
<reference key="NSTextColor" ref="140564637"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSImageView" id="828078923">
<reference key="NSNextResponder" ref="346017069"/>
<int key="NSvFlags">268</int>
<object class="NSMutableSet" key="NSDragTypes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="set.sortedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>Apple PDF pasteboard type</string>
<string>Apple PICT pasteboard type</string>
<string>Apple PNG pasteboard type</string>
<string>NSFilenamesPboardType</string>
<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
<string>NeXT TIFF v4.0 pasteboard type</string>
</object>
</object>
<string key="NSFrame">{{20, 503}, {64, 64}}</string>
<reference key="NSSuperview" ref="346017069"/>
<reference key="NSNextKeyView" ref="654062154"/>
<bool key="NSEnabled">YES</bool>
<object class="NSImageCell" key="NSCell" id="670809899">
<int key="NSCellFlags">0</int>
<int key="NSCellFlags2">33554432</int>
<object class="NSCustomResource" key="NSContents">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSApplicationIcon</string>
</object>
<int key="NSAlign">0</int>
<int key="NSScale">0</int>
<int key="NSStyle">0</int>
<bool key="NSAnimates">NO</bool>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<bool key="NSEditable">YES</bool>
</object>
<object class="NSTextField" id="54059672">
<reference key="NSNextResponder" ref="346017069"/>
<int key="NSvFlags">290</int>
<string key="NSFrame">{{109, 20}, {445, 11}}</string>
<reference key="NSSuperview" ref="346017069"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="131703194">
<int key="NSCellFlags">-1541406719</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents"/>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">9</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSPlaceholderString">Note</string>
<reference key="NSControlView" ref="54059672"/>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">4</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<reference key="NSTextColor" ref="301634927"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrameSize">{571, 587}</string>
<reference key="NSNextKeyView" ref="828078923"/>
</object>
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
<string key="NSMinSize">{213, 129}</string>
<string key="NSMaxSize">{1.7976931348623157e+308, 1.7976931348623157e+308}</string>
<bool key="NSWindowIsRestorable">YES</bool>
</object>
<object class="NSUserDefaultsController" id="561136420">
<bool key="NSSharedInstance">YES</bool>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">initialFirstResponder</string>
<reference key="source" ref="802234099"/>
<reference key="destination" ref="154373665"/>
</object>
<int key="connectionID">395</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">submitReport:</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="154373665"/>
</object>
<int key="connectionID">398</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="802234099"/>
<reference key="destination" ref="265051856"/>
</object>
<int key="connectionID">399</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">window</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="802234099"/>
</object>
<int key="connectionID">401</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">submitButton</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="154373665"/>
</object>
<int key="connectionID">402</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">cancelButton</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="640734563"/>
</object>
<int key="connectionID">406</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">crashLogTextView</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="436407902"/>
</object>
<int key="connectionID">408</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">hideButton</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="483277688"/>
</object>
<int key="connectionID">413</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">showButton</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="69401596"/>
</object>
<int key="connectionID">414</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">hideDetails:</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="483277688"/>
</object>
<int key="connectionID">415</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">showDetails:</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="69401596"/>
</object>
<int key="connectionID">416</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">showComments:</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="182606009"/>
</object>
<int key="connectionID">417</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: self</string>
<reference key="source" ref="436407902"/>
<reference key="destination" ref="265051856"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="436407902"/>
<reference key="NSDestination" ref="265051856"/>
<string key="NSLabel">value: self</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">self</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">419</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: showComments</string>
<reference key="source" ref="182606009"/>
<reference key="destination" ref="265051856"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="182606009"/>
<reference key="NSDestination" ref="265051856"/>
<string key="NSLabel">value: showComments</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">showComments</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">438</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">hidden: showDetails</string>
<reference key="source" ref="204457754"/>
<reference key="destination" ref="265051856"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="204457754"/>
<reference key="NSDestination" ref="265051856"/>
<string key="NSLabel">hidden: showDetails</string>
<string key="NSBinding">hidden</string>
<string key="NSKeyPath">showDetails</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSNegateBoolean</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">444</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">hidden: showDetails</string>
<reference key="source" ref="483277688"/>
<reference key="destination" ref="265051856"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="483277688"/>
<reference key="NSDestination" ref="265051856"/>
<string key="NSLabel">hidden: showDetails</string>
<string key="NSBinding">hidden</string>
<string key="NSKeyPath">showDetails</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSNegateBoolean</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">452</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">hidden: showDetails</string>
<reference key="source" ref="69401596"/>
<reference key="destination" ref="265051856"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="69401596"/>
<reference key="NSDestination" ref="265051856"/>
<string key="NSLabel">hidden: showDetails</string>
<string key="NSBinding">hidden</string>
<string key="NSKeyPath">showDetails</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">453</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">cancelReport:</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="640734563"/>
</object>
<int key="connectionID">454</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">descriptionTextField</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="494776998"/>
</object>
<int key="connectionID">458</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">noteText</string>
<reference key="source" ref="265051856"/>
<reference key="destination" ref="54059672"/>
</object>
<int key="connectionID">479</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">displayPatternValue1: applicationName</string>
<reference key="source" ref="654062154"/>
<reference key="destination" ref="265051856"/>
<object class="NSNibBindingConnector" key="connector" id="485960292">
<reference key="NSSource" ref="654062154"/>
<reference key="NSDestination" ref="265051856"/>
<string key="NSLabel">displayPatternValue1: applicationName</string>
<string key="NSBinding">displayPatternValue1</string>
<string key="NSKeyPath">applicationName</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSDisplayPattern</string>
<string key="NS.object.0">%{value1}@ has unexpectedly quit last time it was run. Would you like to send a crash report to %{value2}@?</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">480</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">displayPatternValue2: companyName</string>
<reference key="source" ref="654062154"/>
<reference key="destination" ref="265051856"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="654062154"/>
<reference key="NSDestination" ref="265051856"/>
<string key="NSLabel">displayPatternValue2: companyName</string>
<string key="NSBinding">displayPatternValue2</string>
<string key="NSKeyPath">companyName</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSDisplayPattern</string>
<string key="NS.object.0">%{value1}@ has unexpectedly quit last time it was run. Would you like to send a crash report to %{value2}@?</string>
</object>
<reference key="NSPreviousConnector" ref="485960292"/>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">481</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">hidden: showComments</string>
<reference key="source" ref="494776998"/>
<reference key="destination" ref="265051856"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="494776998"/>
<reference key="NSDestination" ref="265051856"/>
<string key="NSLabel">hidden: showComments</string>
<string key="NSBinding">hidden</string>
<string key="NSKeyPath">showComments</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSNegateBoolean</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">485</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="494776998"/>
<reference key="destination" ref="265051856"/>
</object>
<int key="connectionID">486</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<object class="NSArray" key="object" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="children" ref="557403926"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="265051856"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="827796767"/>
<reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="582831428"/>
<reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">361</int>
<reference key="object" ref="802234099"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="346017069"/>
</object>
<reference key="parent" ref="0"/>
<string key="objectName">Window</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">362</int>
<reference key="object" ref="346017069"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="828078923"/>
<reference ref="101270370"/>
<reference ref="182606009"/>
<reference ref="154373665"/>
<reference ref="654062154"/>
<reference ref="483277688"/>
<reference ref="494776998"/>
<reference ref="54059672"/>
<reference ref="640734563"/>
<reference ref="204457754"/>
<reference ref="69401596"/>
</object>
<reference key="parent" ref="802234099"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">364</int>
<reference key="object" ref="204457754"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="696397380"/>
<reference ref="217112912"/>
</object>
<reference key="parent" ref="346017069"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">365</int>
<reference key="object" ref="828078923"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="670809899"/>
</object>
<reference key="parent" ref="346017069"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">366</int>
<reference key="object" ref="101270370"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="881936640"/>
</object>
<reference key="parent" ref="346017069"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">367</int>
<reference key="object" ref="182606009"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="717745301"/>
</object>
<reference key="parent" ref="346017069"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">369</int>
<reference key="object" ref="154373665"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="713846517"/>
</object>
<reference key="parent" ref="346017069"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">370</int>
<reference key="object" ref="654062154"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="154211884"/>
</object>
<reference key="parent" ref="346017069"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">371</int>
<reference key="object" ref="154211884"/>
<reference key="parent" ref="654062154"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">372</int>
<reference key="object" ref="713846517"/>
<reference key="parent" ref="154373665"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">374</int>
<reference key="object" ref="717745301"/>
<reference key="parent" ref="182606009"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">375</int>
<reference key="object" ref="881936640"/>
<reference key="parent" ref="101270370"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">376</int>
<reference key="object" ref="670809899"/>
<reference key="parent" ref="828078923"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">396</int>
<reference key="object" ref="69401596"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="371323797"/>
</object>
<reference key="parent" ref="346017069"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">397</int>
<reference key="object" ref="371323797"/>
<reference key="parent" ref="69401596"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">411</int>
<reference key="object" ref="483277688"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="87187545"/>
</object>
<reference key="parent" ref="346017069"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">412</int>
<reference key="object" ref="87187545"/>
<reference key="parent" ref="483277688"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">440</int>
<reference key="object" ref="561136420"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">455</int>
<reference key="object" ref="494776998"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="794055832"/>
</object>
<reference key="parent" ref="346017069"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">456</int>
<reference key="object" ref="794055832"/>
<reference key="parent" ref="494776998"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">477</int>
<reference key="object" ref="54059672"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="131703194"/>
</object>
<reference key="parent" ref="346017069"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">478</int>
<reference key="object" ref="131703194"/>
<reference key="parent" ref="54059672"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">368</int>
<reference key="object" ref="640734563"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="151764572"/>
</object>
<reference key="parent" ref="346017069"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">373</int>
<reference key="object" ref="151764572"/>
<reference key="parent" ref="640734563"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">377</int>
<reference key="object" ref="696397380"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="922202055"/>
</object>
<reference key="parent" ref="204457754"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">394</int>
<reference key="object" ref="922202055"/>
<reference key="parent" ref="696397380"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">378</int>
<reference key="object" ref="217112912"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="321879571"/>
<reference ref="194183608"/>
<reference ref="436407902"/>
</object>
<reference key="parent" ref="204457754"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">393</int>
<reference key="object" ref="321879571"/>
<reference key="parent" ref="217112912"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">392</int>
<reference key="object" ref="194183608"/>
<reference key="parent" ref="217112912"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">391</int>
<reference key="object" ref="436407902"/>
<reference key="parent" ref="217112912"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.IBPluginDependency</string>
<string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
<string>361.IBPluginDependency</string>
<string>361.IBWindowTemplateEditedContentRect</string>
<string>361.windowTemplate.hasMinSize</string>
<string>361.windowTemplate.minSize</string>
<string>362.IBPluginDependency</string>
<string>364.IBPluginDependency</string>
<string>365.IBPluginDependency</string>
<string>366.IBPluginDependency</string>
<string>367.IBPluginDependency</string>
<string>368.IBPluginDependency</string>
<string>369.IBPluginDependency</string>
<string>370.IBPluginDependency</string>
<string>371.IBPluginDependency</string>
<string>372.IBPluginDependency</string>
<string>373.IBPluginDependency</string>
<string>374.IBPluginDependency</string>
<string>375.IBPluginDependency</string>
<string>376.IBPluginDependency</string>
<string>377.IBPluginDependency</string>
<string>378.IBPluginDependency</string>
<string>391.IBAttributePlaceholdersKey</string>
<string>391.IBPluginDependency</string>
<string>392.IBPluginDependency</string>
<string>392.IBShouldRemoveOnLegacySave</string>
<string>393.IBPluginDependency</string>
<string>393.IBShouldRemoveOnLegacySave</string>
<string>394.IBPluginDependency</string>
<string>396.IBPluginDependency</string>
<string>397.IBPluginDependency</string>
<string>411.IBPluginDependency</string>
<string>412.IBPluginDependency</string>
<string>440.IBPluginDependency</string>
<string>455.IBPluginDependency</string>
<string>456.IBPluginDependency</string>
<string>477.IBPluginDependency</string>
<string>478.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{406, 702}, {571, 294}}</string>
<boolean value="YES"/>
<string>{213, 107}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSMutableDictionary">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>AccessibilityDescription</string>
<string>AccessibilityHelp</string>
<string>ToolTip</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBAccessibilityAttribute">
<string key="name">AccessibilityDescription</string>
<reference key="object" ref="436407902"/>
<string key="accessibilityValue">Please describe any steps needed to trigger the problem</string>
</object>
<object class="IBAccessibilityAttribute">
<string key="name">AccessibilityHelp</string>
<reference key="object" ref="436407902"/>
<string key="accessibilityValue">Please describe any steps needed to trigger the problem</string>
</object>
<object class="IBToolTipAttribute">
<string key="name">ToolTip</string>
<reference key="object" ref="436407902"/>
<string key="toolTip">Please describe any steps needed to trigger the problem</string>
</object>
</object>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">486</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">BWQuincyUI</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>cancelReport:</string>
<string>hideDetails:</string>
<string>showComments:</string>
<string>showDetails:</string>
<string>submitReport:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>cancelReport:</string>
<string>hideDetails:</string>
<string>showComments:</string>
<string>showDetails:</string>
<string>submitReport:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">cancelReport:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">hideDetails:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">showComments:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">showDetails:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">submitReport:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>cancelButton</string>
<string>crashLogTextView</string>
<string>descriptionTextField</string>
<string>hideButton</string>
<string>noteText</string>
<string>showButton</string>
<string>submitButton</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSButton</string>
<string>NSTextView</string>
<string>NSTextField</string>
<string>NSButton</string>
<string>NSTextField</string>
<string>NSButton</string>
<string>NSButton</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>cancelButton</string>
<string>crashLogTextView</string>
<string>descriptionTextField</string>
<string>hideButton</string>
<string>noteText</string>
<string>showButton</string>
<string>submitButton</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">cancelButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">crashLogTextView</string>
<string key="candidateClassName">NSTextView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">descriptionTextField</string>
<string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">hideButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">noteText</string>
<string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">showButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">submitButton</string>
<string key="candidateClassName">NSButton</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/BWQuincyUI.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
<real value="1050" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
<integer value="3000" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<nil key="IBDocument.LastKnownRelativeProjectPath"/>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NS.key.0">NSApplicationIcon</string>
<string key="NS.object.0">{128, 128}</string>
</object>
</data>
</archive>
......@@ -7,6 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
7D3F6525188051F2005776C4 /* BWQuincyMain.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D3F6523188051F2005776C4 /* BWQuincyMain.xib */; };
7D8BB0B71830311300FAE9B7 /* DebugMessageVisualizer.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0B51830311300FAE9B7 /* DebugMessageVisualizer.xib */; };
7D8BB0BA1830367200FAE9B7 /* PlaylistMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0B81830367200FAE9B7 /* PlaylistMenu.xib */; };
7D8BB0C01830393300FAE9B7 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0BE1830393300FAE9B7 /* MainWindow.xib */; };
......@@ -469,6 +470,11 @@
5CCED71314C0D4A90057F8D1 /* ExtensionsManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ExtensionsManager.m; path = ../../../modules/gui/macosx/ExtensionsManager.m; sourceTree = SOURCE_ROOT; };
5CCED71414C0D4A90057F8D1 /* VLCUIWidgets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCUIWidgets.h; path = ../../../modules/gui/macosx/VLCUIWidgets.h; sourceTree = SOURCE_ROOT; };
5CCED71514C0D4A90057F8D1 /* VLCUIWidgets.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCUIWidgets.m; path = ../../../modules/gui/macosx/VLCUIWidgets.m; sourceTree = SOURCE_ROOT; };
7D3F6524188051F2005776C4 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/BWQuincyMain.xib; sourceTree = "<group>"; };
7D3F652618805297005776C4 /* BWQuincyManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BWQuincyManager.h; path = ../../../modules/gui/macosx/BWQuincyManager.h; sourceTree = "<group>"; };
7D3F652718805297005776C4 /* BWQuincyManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = BWQuincyManager.m; path = ../../../modules/gui/macosx/BWQuincyManager.m; sourceTree = "<group>"; };
7D3F652818805297005776C4 /* BWQuincyUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BWQuincyUI.h; path = ../../../modules/gui/macosx/BWQuincyUI.h; sourceTree = "<group>"; };
7D3F652918805297005776C4 /* BWQuincyUI.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = BWQuincyUI.m; path = ../../../modules/gui/macosx/BWQuincyUI.m; sourceTree = "<group>"; };
7D7DC2CA182E86D9008C9E3E /* darwinvlc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = darwinvlc.c; path = ../../../bin/darwinvlc.c; sourceTree = "<group>"; };
7D8BB0B318302AC000FAE9B7 /* DebugMessageVisualizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DebugMessageVisualizer.h; path = ../../../modules/gui/macosx/DebugMessageVisualizer.h; sourceTree = "<group>"; };
7D8BB0B418302AC000FAE9B7 /* DebugMessageVisualizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = DebugMessageVisualizer.m; path = ../../../modules/gui/macosx/DebugMessageVisualizer.m; sourceTree = "<group>"; };
......@@ -1172,6 +1178,17 @@
name = Products;
sourceTree = "<group>";
};
7D3F652A1880529C005776C4 /* QuincyKit */ = {
isa = PBXGroup;
children = (
7D3F652618805297005776C4 /* BWQuincyManager.h */,
7D3F652718805297005776C4 /* BWQuincyManager.m */,
7D3F652818805297005776C4 /* BWQuincyUI.h */,
7D3F652918805297005776C4 /* BWQuincyUI.m */,
);
name = QuincyKit;
sourceTree = "<group>";
};
8E445F86047289E50059A3A7 /* fileicons */ = {
isa = PBXGroup;
children = (
......@@ -1511,6 +1528,7 @@
CC0CD0E513DE0FC600B0D90D /* Imported Code */ = {
isa = PBXGroup;
children = (
7D3F652A1880529C005776C4 /* QuincyKit */,
CC6D8D9C0A878DED006F2BBE /* AppleRemote.h */,
CC6D8D9D0A878DED006F2BBE /* AppleRemote.m */,
CC0CD0E413DE0EB500B0D90D /* PXSourceList */,
......@@ -1792,6 +1810,7 @@
7D8BB0B81830367200FAE9B7 /* PlaylistMenu.xib */,
7D8BB0BE1830393300FAE9B7 /* MainWindow.xib */,
7DE88F281831396A00CD9DA2 /* PlaylistAccessoryView.xib */,
7D3F6523188051F2005776C4 /* BWQuincyMain.xib */,
);
name = xibs;
sourceTree = "<group>";
......@@ -1854,6 +1873,7 @@
CC402EB90E00ABBB006A4BA4 /* vlc.scriptSuite in Resources */,
CC402EBA0E00ABBB006A4BA4 /* vlc.scriptTerminology in Resources */,
CC402EBB0E00ABBB006A4BA4 /* README.MacOSX.rtf in Resources */,
7D3F6525188051F2005776C4 /* BWQuincyMain.xib in Resources */,
CC402F3C0E00ABBB006A4BA4 /* noart.png in Resources */,
CC04323D13B246DF00D7D52E /* effects-double-buttons_dark.png in Resources */,
CC04323E13B246DF00D7D52E /* effects-double-buttons-blue_dark.png in Resources */,
......@@ -2277,6 +2297,14 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXVariantGroup section */
7D3F6523188051F2005776C4 /* BWQuincyMain.xib */ = {
isa = PBXVariantGroup;
children = (
7D3F6524188051F2005776C4 /* English */,
);
name = BWQuincyMain.xib;
sourceTree = "<group>";
};
7D8BB0B51830311300FAE9B7 /* DebugMessageVisualizer.xib */ = {
isa = PBXVariantGroup;
children = (
......
/*
* Author: Andreas Linde <mail@andreaslinde.de>
* Kent Sutherland
*
* Copyright (c) 2011 Andreas Linde & Kent Sutherland.
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#import <Cocoa/Cocoa.h>
typedef enum CrashAlertType {
CrashAlertTypeSend = 0,
CrashAlertTypeFeedback = 1,
} CrashAlertType;
typedef enum CrashReportStatus {
// This app version is set to discontinued, no new crash reports accepted by the server
CrashReportStatusFailureVersionDiscontinued = -30,
// XML: Sender ersion string contains not allowed characters, only alphanumberical including space and . are allowed
CrashReportStatusFailureXMLSenderVersionNotAllowed = -21,
// XML: Version string contains not allowed characters, only alphanumberical including space and . are allowed
CrashReportStatusFailureXMLVersionNotAllowed = -20,
// SQL for adding a symoblicate todo entry in the database failed
CrashReportStatusFailureSQLAddSymbolicateTodo = -18,
// SQL for adding crash log in the database failed
CrashReportStatusFailureSQLAddCrashlog = -17,
// SQL for adding a new version in the database failed
CrashReportStatusFailureSQLAddVersion = -16,
// SQL for checking if the version is already added in the database failed
CrashReportStatusFailureSQLCheckVersionExists = -15,
// SQL for creating a new pattern for this bug and set amount of occurrances to 1 in the database failed
CrashReportStatusFailureSQLAddPattern = -14,
// SQL for checking the status of the bugfix version in the database failed
CrashReportStatusFailureSQLCheckBugfixStatus = -13,
// SQL for updating the occurances of this pattern in the database failed
CrashReportStatusFailureSQLUpdatePatternOccurances = -12,
// SQL for getting all the known bug patterns for the current app version in the database failed
CrashReportStatusFailureSQLFindKnownPatterns = -11,
// SQL for finding the bundle identifier in the database failed
CrashReportStatusFailureSQLSearchAppName = -10,
// the post request didn't contain valid data
CrashReportStatusFailureInvalidPostData = -3,
// incoming data may not be added, because e.g. bundle identifier wasn't found
CrashReportStatusFailureInvalidIncomingData = -2,
// database cannot be accessed, check hostname, username, password and database name settings in config.php
CrashReportStatusFailureDatabaseNotAvailable = -1,
CrashReportStatusUnknown = 0,
CrashReportStatusAssigned = 1,
CrashReportStatusSubmitted = 2,
CrashReportStatusAvailable = 3,
} CrashReportStatus;
@class BWQuincyUI;
@protocol BWQuincyManagerDelegate <NSObject>
@required
// Invoked once the modal sheets are gone
- (void) showMainApplicationWindow;
@optional
// Return the description the crashreport should contain, empty by default. The string will automatically be wrapped into <[DATA[ ]]>, so make sure you don't do that in your string.
-(NSString *) crashReportDescription;
// Return the userid the crashreport should contain, empty by default
-(NSString *) crashReportUserID;
// Return the contact value (e.g. email) the crashreport should contain, empty by default
-(NSString *) crashReportContact;
@end
@interface BWQuincyManager : NSObject
#if defined(MAC_OS_X_VERSION_10_6) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
<NSXMLParserDelegate>
#endif
{
CrashReportStatus _serverResult;
NSInteger _statusCode;
NSMutableString *_contentOfProperty;
id<BWQuincyManagerDelegate> _delegate;
NSString *_submissionURL;
NSString *_companyName;
NSString *_appIdentifier;
BOOL _autoSubmitCrashReport;
NSString *_crashFile;
BWQuincyUI *_quincyUI;
}
- (NSString*) modelVersion;
+ (BWQuincyManager *)sharedQuincyManager;
// submission URL defines where to send the crash reports to (required)
@property (nonatomic, retain) NSString *submissionURL;
// defines the company name to be shown in the crash reporting dialog
@property (nonatomic, retain) NSString *companyName;
// delegate is required
@property (nonatomic, assign) id <BWQuincyManagerDelegate> delegate;
// if YES, the crash report will be submitted without asking the user
// if NO, the user will be asked if the crash report can be submitted (default)
@property (nonatomic, assign, getter=isAutoSubmitCrashReport) BOOL autoSubmitCrashReport;
///////////////////////////////////////////////////////////////////////////////////////////////////
// settings
// If you want to use HockeyApp instead of your own server, this is required
@property (nonatomic, retain) NSString *appIdentifier;
- (void) cancelReport;
- (void) sendReportCrash:(NSString*)crashContent
description:(NSString*)description;
- (NSString *) applicationName;
- (NSString *) applicationVersionString;
- (NSString *) applicationVersion;
@end
/*
* Author: Andreas Linde <mail@andreaslinde.de>
* Kent Sutherland
*
* Copyright (c) 2011 Andreas Linde & Kent Sutherland.
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#import "BWQuincyManager.h"
#import "BWQuincyUI.h"
#import <sys/sysctl.h>
#define SDK_NAME @"Quincy"
#define SDK_VERSION @"2.1.6"
@interface BWQuincyManager(private)
- (void) startManager;
- (void) _postXML:(NSString*)xml toURL:(NSURL*)url;
- (void) searchCrashLogFile:(NSString *)path;
- (BOOL) hasPendingCrashReport;
- (void) returnToMainApplication;
@end
@implementation BWQuincyManager
@synthesize delegate = _delegate;
@synthesize submissionURL = _submissionURL;
@synthesize companyName = _companyName;
@synthesize appIdentifier = _appIdentifier;
@synthesize autoSubmitCrashReport = _autoSubmitCrashReport;
+ (BWQuincyManager *)sharedQuincyManager {
static BWQuincyManager *quincyManager = nil;
if (quincyManager == nil) {
quincyManager = [[BWQuincyManager alloc] init];
}
return quincyManager;
}
- (id) init {
if ((self = [super init])) {
_serverResult = CrashReportStatusFailureDatabaseNotAvailable;
_quincyUI = nil;
_submissionURL = nil;
_appIdentifier = nil;
_crashFile = nil;
self.delegate = nil;
self.companyName = @"";
}
return self;
}
- (void)dealloc {
_companyName = nil;
_delegate = nil;
_submissionURL = nil;
_appIdentifier = nil;
[_crashFile release];
[_quincyUI release];
[super dealloc];
}
- (void) searchCrashLogFile:(NSString *)path {
NSFileManager* fman = [NSFileManager defaultManager];
NSError* error;
NSMutableArray* filesWithModificationDate = [NSMutableArray array];
NSArray* crashLogFiles = [fman contentsOfDirectoryAtPath:path error:&error];
NSEnumerator* filesEnumerator = [crashLogFiles objectEnumerator];
NSString* crashFile;
while((crashFile = [filesEnumerator nextObject])) {
NSString* crashLogPath = [path stringByAppendingPathComponent:crashFile];
NSDate* modDate = [[[NSFileManager defaultManager] attributesOfItemAtPath:crashLogPath error:&error] fileModificationDate];
[filesWithModificationDate addObject:[NSDictionary dictionaryWithObjectsAndKeys:crashFile,@"name",crashLogPath,@"path",modDate,@"modDate",nil]];
}
NSSortDescriptor* dateSortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"modDate" ascending:YES] autorelease];
NSArray* sortedFiles = [filesWithModificationDate sortedArrayUsingDescriptors:[NSArray arrayWithObject:dateSortDescriptor]];
NSPredicate* filterPredicate = [NSPredicate predicateWithFormat:@"name BEGINSWITH %@", [self applicationName]];
NSArray* filteredFiles = [sortedFiles filteredArrayUsingPredicate:filterPredicate];
_crashFile = [[[filteredFiles valueForKeyPath:@"path"] lastObject] copy];
}
#pragma mark -
#pragma mark setter
- (void)setSubmissionURL:(NSString *)anSubmissionURL {
if (_submissionURL != anSubmissionURL) {
[_submissionURL release];
_submissionURL = [anSubmissionURL copy];
}
[self performSelector:@selector(startManager) withObject:nil afterDelay:0.1f];
}
- (void)setAppIdentifier:(NSString *)anAppIdentifier {
if (_appIdentifier != anAppIdentifier) {
[_appIdentifier release];
_appIdentifier = [anAppIdentifier copy];
}
[self setSubmissionURL:@"https://rink.hockeyapp.net/"];
}
- (void)storeLastCrashDate:(NSDate *) date {
[[NSUserDefaults standardUserDefaults] setValue:date forKey:@"CrashReportSender.lastCrashDate"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (NSDate *)loadLastCrashDate {
NSDate *date = [[NSUserDefaults standardUserDefaults] valueForKey:@"CrashReportSender.lastCrashDate"];
return date ?: [NSDate distantPast];
}
- (void)storeAppVersion:(NSString *) version {
[[NSUserDefaults standardUserDefaults] setValue:version forKey:@"CrashReportSender.appVersion"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (NSString *)loadAppVersion {
NSString *appVersion = [[NSUserDefaults standardUserDefaults] valueForKey:@"CrashReportSender.appVersion"];
return appVersion ?: nil;
}
#pragma mark -
#pragma mark GetCrashData
- (BOOL) hasPendingCrashReport {
BOOL returnValue = NO;
NSString *appVersion = [self loadAppVersion];
NSDate *lastCrashDate = [self loadLastCrashDate];
if (!appVersion || ![appVersion isEqualToString:[self applicationVersion]] || [lastCrashDate isEqualToDate:[NSDate distantPast]]) {
[self storeAppVersion:[self applicationVersion]];
[self storeLastCrashDate:[NSDate date]];
return NO;
}
NSArray* libraryDirectories = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, TRUE);
// Snow Leopard is having the log files in another location
[self searchCrashLogFile:[[libraryDirectories lastObject] stringByAppendingPathComponent:@"Logs/DiagnosticReports"]];
if (_crashFile == nil) {
[self searchCrashLogFile:[[libraryDirectories lastObject] stringByAppendingPathComponent:@"Logs/CrashReporter"]];
if (_crashFile == nil) {
NSString *sandboxFolder = [NSString stringWithFormat:@"/Containers/%@/Data/Library", [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"]];
if ([[libraryDirectories lastObject] rangeOfString:sandboxFolder].location != NSNotFound) {
NSString *libFolderName = [[libraryDirectories lastObject] stringByReplacingOccurrencesOfString:sandboxFolder withString:@""];
[self searchCrashLogFile:[libFolderName stringByAppendingPathComponent:@"Logs/DiagnosticReports"]];
}
}
// Search machine diagnostic reports directory
if (_crashFile == nil) {
NSArray* libraryDirectories = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSLocalDomainMask, TRUE);
[self searchCrashLogFile:[[libraryDirectories lastObject] stringByAppendingPathComponent:@"Logs/DiagnosticReports"]];
if (_crashFile == nil) {
[self searchCrashLogFile:[[libraryDirectories lastObject] stringByAppendingPathComponent:@"Logs/CrashReporter"]];
}
}
}
if (_crashFile) {
NSError* error;
NSDate *crashLogModificationDate = [[[NSFileManager defaultManager] attributesOfItemAtPath:_crashFile error:&error] fileModificationDate];
unsigned long long crashLogFileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:_crashFile error:&error] fileSize];
if ([crashLogModificationDate compare: lastCrashDate] == NSOrderedDescending && crashLogFileSize > 0) {
[self storeLastCrashDate:crashLogModificationDate];
returnValue = YES;
}
}
return returnValue;
}
- (void) returnToMainApplication {
if ( self.delegate != nil && [self.delegate respondsToSelector:@selector(showMainApplicationWindow)])
[self.delegate showMainApplicationWindow];
}
- (void) startManager {
if ([self hasPendingCrashReport]) {
if (!self.autoSubmitCrashReport) {
_quincyUI = [[BWQuincyUI alloc] initWithManager:self crashFile:_crashFile companyName:_companyName applicationName:[self applicationName]];
[_quincyUI askCrashReportDetails];
} else {
NSError* error = nil;
NSString *crashLogs = [NSString stringWithContentsOfFile:_crashFile encoding:NSUTF8StringEncoding error:&error];
if (!error) {
NSString *lastCrash = [[crashLogs componentsSeparatedByString: @"**********\n\n"] lastObject];
NSString* description = @"";
if (_delegate && [_delegate respondsToSelector:@selector(crashReportDescription)]) {
description = [_delegate crashReportDescription];
}
[self sendReportCrash:lastCrash description:description];
} else {
[self returnToMainApplication];
}
}
} else {
[self returnToMainApplication];
}
}
- (NSString*) modelVersion {
NSString * modelString = nil;
int modelInfo[2] = { CTL_HW, HW_MODEL };
size_t modelSize;
if (sysctl(modelInfo,
2,
NULL,
&modelSize,
NULL, 0) == 0) {
void * modelData = malloc(modelSize);
if (modelData) {
if (sysctl(modelInfo,
2,
modelData,
&modelSize,
NULL, 0) == 0) {
modelString = [NSString stringWithUTF8String:modelData];
}
free(modelData);
}
}
return modelString;
}
- (void) cancelReport {
[self returnToMainApplication];
}
- (void) sendReportCrash:(NSString*)crashContent
description:(NSString*)notes
{
NSString *userid = @"";
NSString *contact = @"";
SInt32 versionMajor, versionMinor, versionBugFix;
if (Gestalt(gestaltSystemVersionMajor, &versionMajor) != noErr) versionMajor = 0;
if (Gestalt(gestaltSystemVersionMinor, &versionMinor) != noErr) versionMinor= 0;
if (Gestalt(gestaltSystemVersionBugFix, &versionBugFix) != noErr) versionBugFix = 0;
NSString* xml = [NSString stringWithFormat:@"<crash><applicationname>%s</applicationname><bundleidentifier>%s</bundleidentifier><systemversion>%@</systemversion><senderversion>%@</senderversion><version>%@</version><platform>%@</platform><userid>%@</userid><contact>%@</contact><description><![CDATA[%@]]></description><log><![CDATA[%@]]></log></crash>",
[[self applicationName] UTF8String],
[[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"] UTF8String],
[NSString stringWithFormat:@"%i.%i.%i", versionMajor, versionMinor, versionBugFix],
[self applicationVersion],
[self applicationVersion],
[self modelVersion],
userid,
contact,
notes,
crashContent
];
[self returnToMainApplication];
[self _postXML:[NSString stringWithFormat:@"<crashes>%@</crashes>", xml] toURL:[NSURL URLWithString:self.submissionURL]];
}
- (void)_postXML:(NSString*)xml toURL:(NSURL*)url {
NSMutableURLRequest *request = nil;
NSString *boundary = @"----FOO";
if (self.appIdentifier) {
request = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString:[NSString stringWithFormat:@"%@api/2/apps/%@/crashes?sdk=%@&sdk_version=%@",
self.submissionURL,
[self.appIdentifier stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
SDK_NAME,
SDK_VERSION
]
]];
} else {
request = [NSMutableURLRequest requestWithURL:url];
}
[request setValue:@"Quincy/Mac" forHTTPHeaderField:@"User-Agent"];
[request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
[request setTimeoutInterval: 15];
[request setHTTPMethod:@"POST"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request setValue:contentType forHTTPHeaderField:@"Content-type"];
NSMutableData *postBody = [NSMutableData data];
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
if (self.appIdentifier) {
[postBody appendData:[@"Content-Disposition: form-data; name=\"xml\"; filename=\"crash.xml\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[[NSString stringWithFormat:@"Content-Type: text/xml\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
} else {
[postBody appendData:[@"Content-Disposition: form-data; name=\"xmlstring\"\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
}
[postBody appendData:[xml dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:postBody];
_serverResult = CrashReportStatusUnknown;
_statusCode = 200;
NSHTTPURLResponse *response = nil;
NSError *error = nil;
NSData *responseData = nil;
responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
_statusCode = [response statusCode];
if (responseData != nil) {
if (_statusCode >= 200 && _statusCode < 400) {
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:responseData];
// Set self as the delegate of the parser so that it will receive the parser delegate methods callbacks.
[parser setDelegate:self];
// Depending on the XML document you're parsing, you may want to enable these features of NSXMLParser.
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
[parser release];
}
}
}
#pragma mark NSXMLParser
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if (qName) {
elementName = qName;
}
if ([elementName isEqualToString:@"result"]) {
_contentOfProperty = [NSMutableString string];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if (qName) {
elementName = qName;
}
if ([elementName isEqualToString:@"result"]) {
if ([_contentOfProperty intValue] > _serverResult) {
_serverResult = [_contentOfProperty intValue];
}
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if (_contentOfProperty) {
// If the current element is one whose content we care about, append 'string'
// to the property that holds the content of the current element.
if (string != nil) {
[_contentOfProperty appendString:string];
}
}
}
#pragma mark GetterSetter
- (NSString *) applicationName {
NSString *applicationName = [[[NSBundle mainBundle] localizedInfoDictionary] valueForKey: @"CFBundleExecutable"];
if (!applicationName)
applicationName = [[[NSBundle mainBundle] infoDictionary] valueForKey: @"CFBundleExecutable"];
return applicationName;
}
- (NSString*) applicationVersionString {
NSString* string = [[[NSBundle mainBundle] localizedInfoDictionary] valueForKey: @"CFBundleShortVersionString"];
if (!string)
string = [[[NSBundle mainBundle] infoDictionary] valueForKey: @"CFBundleShortVersionString"];
return string;
}
- (NSString *) applicationVersion {
NSString* string = [[[NSBundle mainBundle] localizedInfoDictionary] valueForKey: @"CFBundleVersion"];
if (!string)
string = [[[NSBundle mainBundle] infoDictionary] valueForKey: @"CFBundleVersion"];
return string;
}
@end
/*
* Author: Andreas Linde <mail@andreaslinde.de>
* Kent Sutherland
*
* Copyright (c) 2011 Andreas Linde & Kent Sutherland.
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#import <Cocoa/Cocoa.h>
@class BWQuincyManager;
@interface BWQuincyUI : NSWindowController {
IBOutlet NSTextField *descriptionTextField;
IBOutlet NSTextView *crashLogTextView;
IBOutlet NSTextField *noteText;
IBOutlet NSButton *showButton;
IBOutlet NSButton *hideButton;
IBOutlet NSButton *cancelButton;
IBOutlet NSButton *submitButton;
BWQuincyManager *_quincyManager;
NSString *_xml;
NSString *_crashFile;
NSString *_companyName;
NSString *_applicationName;
NSMutableString *_consoleContent;
NSString *_crashLogContent;
BOOL showComments;
BOOL showDetails;
}
- (id)initWithManager:(BWQuincyManager *)quincyManager crashFile:(NSString *)crashFile companyName:(NSString *)companyName applicationName:(NSString *)applicationName;
- (void) askCrashReportDetails;
- (IBAction) cancelReport:(id)sender;
- (IBAction) submitReport:(id)sender;
- (IBAction) showDetails:(id)sender;
- (IBAction) hideDetails:(id)sender;
- (IBAction) showComments:(id)sender;
- (BOOL)showComments;
- (void)setShowComments:(BOOL)value;
- (BOOL)showDetails;
- (void)setShowDetails:(BOOL)value;
@end
\ No newline at end of file
/*
* Author: Andreas Linde <mail@andreaslinde.de>
* Kent Sutherland
*
* Copyright (c) 2011 Andreas Linde & Kent Sutherland.
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#import "BWQuincyUI.h"
#import "BWQuincyManager.h"
#import <sys/sysctl.h>
#define CRASHREPORTSENDER_MAX_CONSOLE_SIZE 50000
@interface BWQuincyUI(private)
- (void) askCrashReportDetails;
- (void) endCrashReporter;
@end
const CGFloat kCommentsHeight = 105;
const CGFloat kDetailsHeight = 285;
@implementation BWQuincyUI
- (id)initWithManager:(BWQuincyManager *)quincyManager crashFile:(NSString *)crashFile companyName:(NSString *)companyName applicationName:(NSString *)applicationName {
self = [super initWithWindowNibName: @"BWQuincyMain"];
if ( self != nil) {
_xml = nil;
_quincyManager = quincyManager;
_crashFile = crashFile;
_companyName = companyName;
_applicationName = applicationName;
[self setShowComments: YES];
[self setShowDetails: NO];
NSRect windowFrame = [[self window] frame];
windowFrame.size = NSMakeSize(windowFrame.size.width, windowFrame.size.height - kDetailsHeight);
windowFrame.origin.y -= kDetailsHeight;
[[self window] setFrame: windowFrame
display: YES
animate: NO];
}
return self;
}
- (void)awakeFromNib
{
crashLogTextView.editable = NO;
crashLogTextView.selectable = NO;
crashLogTextView.automaticSpellingCorrectionEnabled = NO;
}
- (void) endCrashReporter {
[self close];
}
- (IBAction) showComments: (id) sender {
NSRect windowFrame = [[self window] frame];
if ([sender intValue]) {
[self setShowComments: NO];
windowFrame.size = NSMakeSize(windowFrame.size.width, windowFrame.size.height + kCommentsHeight);
windowFrame.origin.y -= kCommentsHeight;
[[self window] setFrame: windowFrame
display: YES
animate: YES];
[self setShowComments: YES];
} else {
[self setShowComments: NO];
windowFrame.size = NSMakeSize(windowFrame.size.width, windowFrame.size.height - kCommentsHeight);
windowFrame.origin.y += kCommentsHeight;
[[self window] setFrame: windowFrame
display: YES
animate: YES];
}
}
- (IBAction) showDetails:(id)sender {
NSRect windowFrame = [[self window] frame];
windowFrame.size = NSMakeSize(windowFrame.size.width, windowFrame.size.height + kDetailsHeight);
windowFrame.origin.y -= kDetailsHeight;
[[self window] setFrame: windowFrame
display: YES
animate: YES];
[self setShowDetails:YES];
}
- (IBAction) hideDetails:(id)sender {
NSRect windowFrame = [[self window] frame];
[self setShowDetails:NO];
windowFrame.size = NSMakeSize(windowFrame.size.width, windowFrame.size.height - kDetailsHeight);
windowFrame.origin.y += kDetailsHeight;
[[self window] setFrame: windowFrame
display: YES
animate: YES];
}
- (IBAction) cancelReport:(id)sender {
[self endCrashReporter];
[NSApp stopModal];
[_quincyManager cancelReport];
}
- (void) _sendReportAfterDelay {
NSString *notes = [NSString stringWithFormat:@"Comments:\n%@\n\nConsole:\n%@", [descriptionTextField stringValue], _consoleContent];
[_quincyManager sendReportCrash:_crashLogContent description:notes];
[_crashLogContent release];
_crashLogContent = nil;
}
- (IBAction) submitReport:(id)sender {
[submitButton setEnabled:NO];
[[self window] makeFirstResponder: nil];
[self performSelector:@selector(_sendReportAfterDelay) withObject:nil afterDelay:0.01];
[self endCrashReporter];
[NSApp stopModal];
}
- (void) askCrashReportDetails {
NSError *error;
[[self window] setTitle:[NSString stringWithFormat:NSLocalizedString(@"Problem Report for %@", @"Window title"), _applicationName]];
[[descriptionTextField cell] setPlaceholderString:NSLocalizedString(@"Please describe any steps needed to trigger the problem", @"User description placeholder")];
[noteText setStringValue:NSLocalizedString(@"No personal information will be sent with this report.", @"Note text")];
// get the crash log
NSString *crashLogs = [NSString stringWithContentsOfFile:_crashFile encoding:NSUTF8StringEncoding error:&error];
NSString *lastCrash = [[crashLogs componentsSeparatedByString: @"**********\n\n"] lastObject];
_crashLogContent = [lastCrash retain];
// get the console log
NSEnumerator *theEnum = [[[NSString stringWithContentsOfFile:@"/private/var/log/system.log" encoding:NSUTF8StringEncoding error:&error] componentsSeparatedByString: @"\n"] objectEnumerator];
NSString* currentObject;
NSMutableArray* applicationStrings = [NSMutableArray array];
NSString* searchString = [_applicationName stringByAppendingString:@"["];
while ( (currentObject = [theEnum nextObject]) ) {
if ([currentObject rangeOfString:searchString].location != NSNotFound)
[applicationStrings addObject: currentObject];
}
_consoleContent = [[NSMutableString alloc] initWithString:@""];
NSInteger i;
for(i = ((NSInteger)[applicationStrings count])-1; (i>=0 && i>((NSInteger)[applicationStrings count])-100); i--) {
[_consoleContent appendString:[applicationStrings objectAtIndex:i]];
[_consoleContent appendString:@"\n"];
}
// Now limit the content to CRASHREPORTSENDER_MAX_CONSOLE_SIZE (default: 50kByte)
if ([_consoleContent length] > CRASHREPORTSENDER_MAX_CONSOLE_SIZE) {
_consoleContent = (NSMutableString *)[_consoleContent substringWithRange:NSMakeRange([_consoleContent length]-CRASHREPORTSENDER_MAX_CONSOLE_SIZE-1, CRASHREPORTSENDER_MAX_CONSOLE_SIZE)];
}
[crashLogTextView setString:[NSString stringWithFormat:@"%@\n\n%@", _crashLogContent, _consoleContent]];
NSBeep();
[NSApp runModalForWindow:[self window]];
}
- (void)dealloc {
[_consoleContent release]; _consoleContent = nil;
_companyName = nil;
_quincyManager = nil;
[super dealloc];
}
- (BOOL)showComments {
return showComments;
}
- (void)setShowComments:(BOOL)value {
showComments = value;
}
- (BOOL)showDetails {
return showDetails;
}
- (void)setShowDetails:(BOOL)value {
showDetails = value;
}
#pragma mark NSTextField Delegate
- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector {
BOOL commandHandled = NO;
if (commandSelector == @selector(insertNewline:)) {
[textView insertNewlineIgnoringFieldEditor:self];
commandHandled = YES;
}
return commandHandled;
}
@end
......@@ -85,5 +85,9 @@ SOURCES_macosx = \
VLCVoutWindowController.h \
DebugMessageVisualizer.m \
DebugMessageVisualizer.h \
BWQuincyManager.h \
BWQuincyManager.m \
BWQuincyUI.h \
BWQuincyUI.m \
iTunes.h \
$(NULL)
......@@ -64,6 +64,7 @@
#import "TrackSynchronization.h"
#import "VLCVoutWindowController.h"
#import "ExtensionsManager.h"
#import "BWQuincyManager.h"
#import "VideoEffects.h"
#import "AudioEffects.h"
......@@ -762,6 +763,17 @@ static VLCMain *_o_sharedMainInstance = nil;
if (!p_intf)
return;
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] valueForKey: @"CFBundleVersion"];
NSRange endRande = [appVersion rangeOfString:@"-"];
if (endRande.location != NSNotFound)
appVersion = [appVersion substringToIndex:endRande.location];
BWQuincyManager *quincyManager = [BWQuincyManager sharedQuincyManager];
[quincyManager setApplicationVersion:appVersion];
[quincyManager setSubmissionURL:@"http://crash.videolan.org/crash_v200.php"];
[quincyManager setDelegate:self];
[quincyManager setCompanyName:@"VideoLAN"];
[self updateCurrentlyUsedHotkeys];
/* init media key support */
......@@ -780,8 +792,6 @@ static VLCMain *_o_sharedMainInstance = nil;
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(computerWillSleep:)
name:NSWorkspaceWillSleepNotification object:nil];
[self performSelector:@selector(lookForCrashLog) withObject:nil afterDelay:1.5];
/* we will need this, so let's load it here so the interface appears to be more responsive */
nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner: NSApp];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment