diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2011-01-12 20:21:17 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2011-01-12 20:21:17 +0000 |
commit | b58dcc351f3f7ec32ecb0553436ff9ee76e52551 (patch) | |
tree | fed57c711a544fb8272423e2645c5bbf2def25d7 | |
parent | 8c09af55681ff4d4e40eba62fca0c219443a2fc7 (diff) | |
download | netsurf-b58dcc351f3f7ec32ecb0553436ff9ee76e52551.tar.gz netsurf-b58dcc351f3f7ec32ecb0553436ff9ee76e52551.tar.bz2 |
Cocoa front end (credit: Sven Weidauer)
svn path=/trunk/netsurf/; revision=11292
33 files changed, 5640 insertions, 0 deletions
diff --git a/cocoa/BrowserView.h b/cocoa/BrowserView.h new file mode 100644 index 000000000..9598936c1 --- /dev/null +++ b/cocoa/BrowserView.h @@ -0,0 +1,47 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import <Cocoa/Cocoa.h> + + +@interface BrowserView : NSView { + struct browser_window *browser; + BOOL spinning; + NSString *status; + + NSPoint caretPoint; + CGFloat caretHeight; + BOOL caretVisible; + BOOL hasCaret; + NSTimer *caretTimer; +} + +@property (readwrite, assign, nonatomic) struct browser_window *browser; +@property (readwrite, assign, nonatomic) BOOL spinning; +@property (readwrite, copy, nonatomic) NSString *status; +@property (readwrite, retain, nonatomic) NSTimer *caretTimer; + +- (void) removeCaret; +- (void) addCaretAt: (NSPoint) point height: (CGFloat) height; + +- (IBAction) goBack: (id) sender; +- (IBAction) goForward: (id) sender; +- (IBAction) showHistory: (id) sender; +- (IBAction) reloadPage: (id) sender; + +@end diff --git a/cocoa/BrowserView.m b/cocoa/BrowserView.m new file mode 100644 index 000000000..96f12699a --- /dev/null +++ b/cocoa/BrowserView.m @@ -0,0 +1,289 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import "BrowserView.h" + +#import "desktop/browser.h" +#import "desktop/history_core.h" +#import "desktop/plotters.h" +#import "desktop/textinput.h" + +@implementation BrowserView + +@synthesize browser; +@synthesize spinning; +@synthesize status; +@synthesize caretTimer; + +static const CGFloat CaretWidth = 1.0; +static const NSTimeInterval CaretBlinkTime = 0.8; + +static inline NSRect cocoa_get_caret_rect( BrowserView *view ) +{ + NSRect caretRect = { + .origin = view->caretPoint, + .size = NSMakeSize( CaretWidth, view->caretHeight ) + }; + + return caretRect; +} + +- (void) removeCaret; +{ + hasCaret = NO; + [self setNeedsDisplayInRect: cocoa_get_caret_rect( self )]; + + [caretTimer invalidate]; + [self setCaretTimer: nil]; +} + +- (void) addCaretAt: (NSPoint) point height: (CGFloat) height; +{ + if (hasCaret) { + [self setNeedsDisplayInRect: cocoa_get_caret_rect( self )]; + } + + caretPoint = point; + caretHeight = height; + hasCaret = YES; + caretVisible = YES; + + if (nil == caretTimer) { + [self setCaretTimer: [NSTimer scheduledTimerWithTimeInterval: CaretBlinkTime target: self selector: @selector(caretBlink:) userInfo: nil repeats: YES]]; + } else { + [caretTimer setFireDate: [NSDate dateWithTimeIntervalSinceNow: CaretBlinkTime]]; + } + + [self setNeedsDisplayInRect: cocoa_get_caret_rect( self )]; +} + + +- (void) caretBlink: (NSTimer *)timer; +{ + if (hasCaret) { + caretVisible = !caretVisible; + [self setNeedsDisplayInRect: cocoa_get_caret_rect( self )]; + } +} + +- (void)drawRect:(NSRect)dirtyRect; +{ + + if (NULL == browser->current_content) return; + + NSRect frame = [self bounds]; + + plot.clip(0, 0, frame.size.width, frame.size.height); + + content_redraw(browser->current_content, + 0, + 0, + NSWidth( frame ), + NSHeight( frame ), + NSMinX( dirtyRect ), + NSMinY( dirtyRect ), + NSMaxX( dirtyRect ), + NSMaxY( dirtyRect ), + browser->scale, + 0xFFFFFF); + + + NSRect caretRect = cocoa_get_caret_rect( self ); + if (hasCaret && caretVisible && [self needsToDrawRect: caretRect]) { + [[NSColor blackColor] set]; + [NSBezierPath fillRect: caretRect]; + } + +} + +- (BOOL) isFlipped; +{ + return YES; +} + +- (void) mouseDown: (NSEvent *)theEvent; +{ + NSPoint location = [self convertPoint: [theEvent locationInWindow] fromView: nil]; + + browser_window_mouse_click( browser, BROWSER_MOUSE_PRESS_1, location.x, location.y ); +} + +- (void) mouseUp: (NSEvent *)theEvent; +{ + NSPoint location = [self convertPoint: [theEvent locationInWindow] fromView: nil]; + + browser_window_mouse_click( browser, BROWSER_MOUSE_CLICK_1, location.x, location.y ); +} + +- (void) mouseDragged: (NSEvent *)theEvent; +{ +} + +- (void) mouseMoved: (NSEvent *)theEvent; +{ + NSPoint location = [self convertPoint: [theEvent locationInWindow] fromView: nil]; + browser_window_mouse_click( browser, 0, location.x, location.y ); +} + +- (void) keyDown: (NSEvent *)theEvent; +{ + [self interpretKeyEvents: [NSArray arrayWithObject: theEvent]]; +} + +- (void) insertText: (id)string; +{ + for (NSUInteger i = 0, length = [string length]; i < length; i++) { + unichar ch = [string characterAtIndex: i]; + browser_window_key_press( browser, ch ); + } +} + +- (void) moveLeft: (id)sender; +{ + browser_window_key_press( browser, KEY_LEFT ); +} + +- (void) moveRight: (id)sender; +{ + browser_window_key_press( browser, KEY_RIGHT ); +} + +- (void) moveUp: (id)sender; +{ + browser_window_key_press( browser, KEY_UP ); +} + +- (void) moveDown: (id)sender; +{ + browser_window_key_press( browser, KEY_DOWN ); +} + +- (void) deleteBackward: (id)sender; +{ + browser_window_key_press( browser, KEY_DELETE_LEFT ); +} + +- (void) deleteForward: (id)sender; +{ + browser_window_key_press( browser, KEY_DELETE_RIGHT ); +} + +- (void) cancelOperation: (id)sender; +{ + browser_window_key_press( browser, KEY_ESCAPE ); +} + +- (void) scrollPageUp: (id)sender; +{ + browser_window_key_press( browser, KEY_PAGE_UP ); +} + +- (void) scrollPageDown: (id)sender; +{ + browser_window_key_press( browser, KEY_PAGE_DOWN ); +} + +- (void) insertTab: (id)sender; +{ + browser_window_key_press( browser, KEY_TAB ); +} + +- (void) insertBacktab: (id)sender; +{ + browser_window_key_press( browser, KEY_SHIFT_TAB ); +} + +- (void) moveToBeginningOfLine: (id)sender; +{ + browser_window_key_press( browser, KEY_LINE_START ); +} + +- (void) moveToEndOfLine: (id)sender; +{ + browser_window_key_press( browser, KEY_LINE_END ); +} + +- (void) moveToBeginningOfDocument: (id)sender; +{ + browser_window_key_press( browser, KEY_TEXT_START ); +} + +- (void) moveToEndOfDocument: (id)sender; +{ + browser_window_key_press( browser, KEY_TEXT_END ); +} + +- (void) insertNewline: (id)sender; +{ + browser_window_key_press( browser, KEY_NL ); +} + +- (void) setFrame: (NSRect)frameRect; +{ + [super setFrame: frameRect]; + browser_window_reformat( browser, [self bounds].size.width, [self bounds].size.height ); +} + + +- (IBAction) goBack: (id) sender; +{ + if (browser && history_back_available( browser->history )) { + history_back(browser, browser->history); + } +} + +- (IBAction) goForward: (id) sender; +{ + if (browser && history_forward_available( browser->history )) { + history_forward(browser, browser->history); + } +} + +- (IBAction) showHistory: (id) sender; +{ +} + +- (IBAction) reloadPage: (id) sender; +{ + browser_window_reload( browser, true ); +} + +- (BOOL) validateToolbarItem: (NSToolbarItem *)theItem; +{ + SEL action = [theItem action]; + + if (action == @selector( goBack: )) { + return browser != NULL && history_back_available( browser->history ); + } + + if (action == @selector( goForward: )) { + return browser != NULL && history_forward_available( browser->history ); + } + + if (action == @selector( reloadPage: )) { + return browser_window_reload_available( browser ); + } + + return YES; +} +- (BOOL) acceptsFirstResponder; +{ + return YES; +} + +@end diff --git a/cocoa/BrowserWindow.h b/cocoa/BrowserWindow.h new file mode 100644 index 000000000..02d6c6ca9 --- /dev/null +++ b/cocoa/BrowserWindow.h @@ -0,0 +1,39 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import <Cocoa/Cocoa.h> + +struct browser_window; + +@class BrowserView; + +@interface BrowserWindow : NSWindowController { + struct browser_window *browser; + NSString *url; + BrowserView *view; +} + +@property (readwrite, assign, nonatomic) struct browser_window *browser; +@property (readwrite, copy, nonatomic) NSString *url; +@property (readwrite, retain, nonatomic) IBOutlet BrowserView *view; + +- initWithBrowser: (struct browser_window *) bw; + +- (IBAction) navigate: (id) sender; + +@end diff --git a/cocoa/BrowserWindow.m b/cocoa/BrowserWindow.m new file mode 100644 index 000000000..727eba765 --- /dev/null +++ b/cocoa/BrowserWindow.m @@ -0,0 +1,53 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import "BrowserWindow.h" +#import "BrowserView.h" + +#import "desktop/browser.h" + +@implementation BrowserWindow + +@synthesize browser; +@synthesize url; +@synthesize view; + +- initWithBrowser: (struct browser_window *) bw; +{ + if ((self = [super initWithWindowNibName: @"Browser"]) == nil) return nil; + + browser = bw; + + NSWindow *win = [self window]; + [win setAcceptsMouseMovedEvents: YES]; + [win makeKeyAndOrderFront: self]; + + return self; +} + +- (IBAction) navigate: (id) sender; +{ + browser_window_go( browser, [url UTF8String], NULL, true ); +} + +- (void) awakeFromNib; +{ + [view setBrowser: browser]; +} + +@end diff --git a/cocoa/NetSurf.xcodeproj/project.pbxproj b/cocoa/NetSurf.xcodeproj/project.pbxproj new file mode 100644 index 000000000..9e85fa744 --- /dev/null +++ b/cocoa/NetSurf.xcodeproj/project.pbxproj @@ -0,0 +1,1011 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 44; + objects = { + +/* Begin PBXBuildFile section */ + 260F200A12D620E800D9B07F /* content.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F6312D620E800D9B07F /* content.c */; }; + 260F200B12D620E800D9B07F /* dirlist.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F6712D620E800D9B07F /* dirlist.c */; }; + 260F200C12D620E800D9B07F /* fetch.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F6912D620E800D9B07F /* fetch.c */; }; + 260F200D12D620E800D9B07F /* fetch_curl.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F6C12D620E800D9B07F /* fetch_curl.c */; }; + 260F200E12D620E800D9B07F /* fetch_data.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F6E12D620E800D9B07F /* fetch_data.c */; }; + 260F200F12D620E800D9B07F /* fetch_file.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F7012D620E800D9B07F /* fetch_file.c */; }; + 260F201012D620E800D9B07F /* hlcache.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F7212D620E800D9B07F /* hlcache.c */; }; + 260F201112D620E800D9B07F /* llcache.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F7412D620E800D9B07F /* llcache.c */; }; + 260F201212D620E800D9B07F /* urldb.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F7612D620E800D9B07F /* urldb.c */; }; + 260F201312D620E800D9B07F /* css.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F7912D620E800D9B07F /* css.c */; }; + 260F201412D620E800D9B07F /* dump.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F7B12D620E800D9B07F /* dump.c */; }; + 260F201512D620E800D9B07F /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F7D12D620E800D9B07F /* internal.c */; }; + 260F201612D620E800D9B07F /* select.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F7F12D620E800D9B07F /* select.c */; }; + 260F201712D620E800D9B07F /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F8112D620E800D9B07F /* utils.c */; }; + 260F201812D620E800D9B07F /* browser.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F8512D620E800D9B07F /* browser.c */; }; + 260F201912D620E800D9B07F /* cookies.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F8712D620E800D9B07F /* cookies.c */; }; + 260F201A12D620E800D9B07F /* download.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F8912D620E800D9B07F /* download.c */; }; + 260F201B12D620E800D9B07F /* frames.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F8B12D620E800D9B07F /* frames.c */; }; + 260F201C12D620E800D9B07F /* history_core.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F8E12D620E800D9B07F /* history_core.c */; }; + 260F201D12D620E800D9B07F /* history_global_core.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F9012D620E800D9B07F /* history_global_core.c */; }; + 260F201E12D620E800D9B07F /* hotlist.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F9212D620E800D9B07F /* hotlist.c */; }; + 260F201F12D620E800D9B07F /* knockout.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F9412D620E800D9B07F /* knockout.c */; }; + 260F202012D620E800D9B07F /* mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F9612D620E800D9B07F /* mouse.c */; }; + 260F202112D620E800D9B07F /* netsurf.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F9812D620E800D9B07F /* netsurf.c */; }; + 260F202212D620E800D9B07F /* options.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F9A12D620E800D9B07F /* options.c */; }; + 260F202312D620E800D9B07F /* plot_style.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F9C12D620E800D9B07F /* plot_style.c */; }; + 260F202412D620E800D9B07F /* print.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1F9F12D620E800D9B07F /* print.c */; }; + 260F202512D620E800D9B07F /* save_complete.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FA212D620E800D9B07F /* save_complete.c */; }; + 260F202612D620E800D9B07F /* font_haru.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FA512D620E800D9B07F /* font_haru.c */; }; + 260F202712D620E800D9B07F /* pdf_plotters.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FA712D620E800D9B07F /* pdf_plotters.c */; }; + 260F202912D620E800D9B07F /* save_text.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FAA12D620E800D9B07F /* save_text.c */; }; + 260F202A12D620E800D9B07F /* scroll.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FAC12D620E800D9B07F /* scroll.c */; }; + 260F202B12D620E800D9B07F /* search.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FAE12D620E800D9B07F /* search.c */; }; + 260F202C12D620E800D9B07F /* searchweb.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FB012D620E800D9B07F /* searchweb.c */; }; + 260F202D12D620E800D9B07F /* selection.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FB212D620E800D9B07F /* selection.c */; }; + 260F202E12D620E800D9B07F /* sslcert.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FB412D620E800D9B07F /* sslcert.c */; }; + 260F202F12D620E800D9B07F /* textarea.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FB612D620E800D9B07F /* textarea.c */; }; + 260F203012D620E800D9B07F /* textinput.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FB812D620E800D9B07F /* textinput.c */; }; + 260F203112D620E800D9B07F /* tree.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FBA12D620E800D9B07F /* tree.c */; }; + 260F203212D620E800D9B07F /* tree_url_node.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FBC12D620E800D9B07F /* tree_url_node.c */; }; + 260F203312D620E800D9B07F /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FBE12D620E800D9B07F /* version.c */; }; + 260F203A12D620E800D9B07F /* box.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FC712D620E800D9B07F /* box.c */; }; + 260F203B12D620E800D9B07F /* box_construct.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FC912D620E800D9B07F /* box_construct.c */; }; + 260F203C12D620E800D9B07F /* box_normalise.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FCA12D620E800D9B07F /* box_normalise.c */; }; + 260F203D12D620E800D9B07F /* favicon.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FCB12D620E800D9B07F /* favicon.c */; }; + 260F203E12D620E800D9B07F /* font.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FCD12D620E800D9B07F /* font.c */; }; + 260F203F12D620E800D9B07F /* form.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FCF12D620E800D9B07F /* form.c */; }; + 260F204012D620E800D9B07F /* html.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FD112D620E800D9B07F /* html.c */; }; + 260F204112D620E800D9B07F /* html_interaction.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FD312D620E800D9B07F /* html_interaction.c */; }; + 260F204212D620E800D9B07F /* html_redraw.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FD412D620E800D9B07F /* html_redraw.c */; }; + 260F204312D620E800D9B07F /* hubbub_binding.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FD512D620E800D9B07F /* hubbub_binding.c */; }; + 260F204412D620E800D9B07F /* imagemap.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FD612D620E800D9B07F /* imagemap.c */; }; + 260F204512D620E800D9B07F /* layout.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FD812D620E800D9B07F /* layout.c */; }; + 260F204612D620E800D9B07F /* list.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FDA12D620E800D9B07F /* list.c */; }; + 260F204712D620E800D9B07F /* table.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FDD12D620E800D9B07F /* table.c */; }; + 260F204812D620E800D9B07F /* textplain.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FE012D620E800D9B07F /* textplain.c */; }; + 260F204912D620E800D9B07F /* base64.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FE312D620E800D9B07F /* base64.c */; }; + 260F204A12D620E800D9B07F /* container.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FE612D620E800D9B07F /* container.c */; }; + 260F204B12D620E800D9B07F /* filename.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FE912D620E800D9B07F /* filename.c */; }; + 260F204C12D620E800D9B07F /* findresource.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FEB12D620E800D9B07F /* findresource.c */; }; + 260F204D12D620E800D9B07F /* hashtable.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FED12D620E800D9B07F /* hashtable.c */; }; + 260F204E12D620E800D9B07F /* http.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FEF12D620E800D9B07F /* http.c */; }; + 260F204F12D620E800D9B07F /* locale.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FF112D620E800D9B07F /* locale.c */; }; + 260F205012D620E800D9B07F /* log.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FF312D620E800D9B07F /* log.c */; }; + 260F205212D620E800D9B07F /* memdebug.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FF612D620E800D9B07F /* memdebug.c */; }; + 260F205312D620E800D9B07F /* messages.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FF812D620E800D9B07F /* messages.c */; }; + 260F205412D620E800D9B07F /* talloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FFB12D620E800D9B07F /* talloc.c */; }; + 260F205712D620E800D9B07F /* url.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F1FFF12D620E800D9B07F /* url.c */; }; + 260F205812D620E800D9B07F /* useragent.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F200112D620E800D9B07F /* useragent.c */; }; + 260F205912D620E800D9B07F /* utf8.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F200312D620E800D9B07F /* utf8.c */; }; + 260F205A12D620E800D9B07F /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 260F200512D620E800D9B07F /* utils.c */; }; + 260F20AF12D6228C00D9B07F /* libssl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 260F20AE12D6228C00D9B07F /* libssl.dylib */; }; + 260F20B112D6229900D9B07F /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 260F20B012D6229900D9B07F /* libxml2.dylib */; }; + 260F20B512D622AA00D9B07F /* libcurl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 260F20B412D622AA00D9B07F /* libcurl.dylib */; }; + 260F20B912D622C600D9B07F /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 260F20B812D622C600D9B07F /* libcrypto.dylib */; }; + 260F20BD12D622F500D9B07F /* libnsbmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 260F20BC12D622F500D9B07F /* libnsbmp.a */; }; + 260F20BF12D622F500D9B07F /* libnsgif.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 260F20BE12D622F500D9B07F /* libnsgif.a */; }; + 260F20C612D6230B00D9B07F /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 260F20C512D6230B00D9B07F /* libz.dylib */; }; + 260F20CB12D6231E00D9B07F /* libhubbub.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 260F20CA12D6231E00D9B07F /* libhubbub.a */; }; + 260F20CD12D6232D00D9B07F /* libcss.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 260F20CC12D6232D00D9B07F /* libcss.a */; }; + 260F20D212D6235200D9B07F /* libparserutils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 260F20D112D6235200D9B07F /* libparserutils.a */; }; + 260F20D712D6237E00D9B07F /* libwapcaplet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 260F20D612D6237E00D9B07F /* libwapcaplet.a */; }; + 260F20DB12D623D000D9B07F /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 260F20DA12D623D000D9B07F /* libiconv.dylib */; }; + 26121DA912D700B800E10F91 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 26121DA812D700B800E10F91 /* MainMenu.xib */; }; + 26121DD912D703F400E10F91 /* NetSurfApp.m in Sources */ = {isa = PBXBuildFile; fileRef = 26121DD812D703F400E10F91 /* NetSurfApp.m */; }; + 26121E3F12D70A1A00E10F91 /* BrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 26121E3E12D70A1A00E10F91 /* BrowserWindow.m */; }; + 26121EAC12D70E0A00E10F91 /* Browser.xib in Resources */ = {isa = PBXBuildFile; fileRef = 26121EAB12D70E0A00E10F91 /* Browser.xib */; }; + 26121EFD12D7132100E10F91 /* BrowserView.m in Sources */ = {isa = PBXBuildFile; fileRef = 26121EFC12D7132100E10F91 /* BrowserView.m */; }; + 2612205612D7247900E10F91 /* libjpeg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2612205512D7247900E10F91 /* libjpeg.dylib */; }; + 2612265A12D7ACB500E10F91 /* default.css in Resources */ = {isa = PBXBuildFile; fileRef = 2612265712D7ACB500E10F91 /* default.css */; }; + 2612265C12D7ACB500E10F91 /* quirks.css in Resources */ = {isa = PBXBuildFile; fileRef = 2612265912D7ACB500E10F91 /* quirks.css */; }; + 2612266D12D7AD6800E10F91 /* adblock.css in Resources */ = {isa = PBXBuildFile; fileRef = 2612265D12D7AD6800E10F91 /* adblock.css */; }; + 2612269112D7AE4100E10F91 /* Messages in Resources */ = {isa = PBXBuildFile; fileRef = 2612268F12D7AE4100E10F91 /* Messages */; }; + 265F311A12D663F50048B600 /* gui.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F311912D663F50048B600 /* gui.m */; }; + 265F314812D666660048B600 /* plotter.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F314712D666660048B600 /* plotter.m */; }; + 265F315212D667060048B600 /* history.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F315112D667060048B600 /* history.m */; }; + 265F316212D667E10048B600 /* schedule.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F316112D667E10048B600 /* schedule.m */; }; + 265F316712D668130048B600 /* thumbnail.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F316612D668130048B600 /* thumbnail.m */; }; + 265F317012D668790048B600 /* fetch.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F316F12D668790048B600 /* fetch.m */; }; + 265F319112D668DB0048B600 /* url.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F319012D668DB0048B600 /* url.m */; }; + 265F31C512D66A0D0048B600 /* save.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F31C412D66A0D0048B600 /* save.m */; }; + 265F31DF12D66A890048B600 /* bmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 265F31CB12D66A890048B600 /* bmp.c */; }; + 265F31E012D66A890048B600 /* gif.c in Sources */ = {isa = PBXBuildFile; fileRef = 265F31CD12D66A890048B600 /* gif.c */; }; + 265F31E112D66A890048B600 /* ico.c in Sources */ = {isa = PBXBuildFile; fileRef = 265F31CF12D66A890048B600 /* ico.c */; }; + 265F31E212D66A890048B600 /* jpeg.c in Sources */ = {isa = PBXBuildFile; fileRef = 265F31D112D66A890048B600 /* jpeg.c */; }; + 265F31E312D66A890048B600 /* mng.c in Sources */ = {isa = PBXBuildFile; fileRef = 265F31D312D66A890048B600 /* mng.c */; }; + 265F31E412D66A890048B600 /* nssprite.c in Sources */ = {isa = PBXBuildFile; fileRef = 265F31D512D66A890048B600 /* nssprite.c */; }; + 265F31E512D66A890048B600 /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = 265F31D712D66A890048B600 /* png.c */; }; + 265F31E612D66A890048B600 /* rsvg.c in Sources */ = {isa = PBXBuildFile; fileRef = 265F31D912D66A890048B600 /* rsvg.c */; }; + 265F31E712D66A890048B600 /* svg.c in Sources */ = {isa = PBXBuildFile; fileRef = 265F31DB12D66A890048B600 /* svg.c */; }; + 265F31E812D66A890048B600 /* webp.c in Sources */ = {isa = PBXBuildFile; fileRef = 265F31DD12D66A890048B600 /* webp.c */; }; + 265F31EC12D66B190048B600 /* bitmap.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F31EB12D66B190048B600 /* bitmap.m */; }; + 265F320612D66C200048B600 /* utf8.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F320512D66C200048B600 /* utf8.m */; }; + 265F321412D66CD90048B600 /* utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F321312D66CD90048B600 /* utils.m */; }; + 265F321F12D66D510048B600 /* font.m in Sources */ = {isa = PBXBuildFile; fileRef = 265F321E12D66D510048B600 /* font.m */; }; + 2671AA2112D8D32300B8A46A /* libpng.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2671AA2012D8D32300B8A46A /* libpng.dylib */; }; + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; + 260F1F6312D620E800D9B07F /* content.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = content.c; sourceTree = "<group>"; }; + 260F1F6412D620E800D9B07F /* content.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = content.h; sourceTree = "<group>"; }; + 260F1F6512D620E800D9B07F /* content_protected.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = content_protected.h; sourceTree = "<group>"; }; + 260F1F6612D620E800D9B07F /* content_type.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = content_type.h; sourceTree = "<group>"; }; + 260F1F6712D620E800D9B07F /* dirlist.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dirlist.c; sourceTree = "<group>"; }; + 260F1F6812D620E800D9B07F /* dirlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dirlist.h; sourceTree = "<group>"; }; + 260F1F6912D620E800D9B07F /* fetch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fetch.c; sourceTree = "<group>"; }; + 260F1F6A12D620E800D9B07F /* fetch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fetch.h; sourceTree = "<group>"; }; + 260F1F6C12D620E800D9B07F /* fetch_curl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fetch_curl.c; sourceTree = "<group>"; }; + 260F1F6D12D620E800D9B07F /* fetch_curl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fetch_curl.h; sourceTree = "<group>"; }; + 260F1F6E12D620E800D9B07F /* fetch_data.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fetch_data.c; sourceTree = "<group>"; }; + 260F1F6F12D620E800D9B07F /* fetch_data.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fetch_data.h; sourceTree = "<group>"; }; + 260F1F7012D620E800D9B07F /* fetch_file.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fetch_file.c; sourceTree = "<group>"; }; + 260F1F7112D620E800D9B07F /* fetch_file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fetch_file.h; sourceTree = "<group>"; }; + 260F1F7212D620E800D9B07F /* hlcache.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hlcache.c; sourceTree = "<group>"; }; + 260F1F7312D620E800D9B07F /* hlcache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hlcache.h; sourceTree = "<group>"; }; + 260F1F7412D620E800D9B07F /* llcache.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = llcache.c; sourceTree = "<group>"; }; + 260F1F7512D620E800D9B07F /* llcache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = llcache.h; sourceTree = "<group>"; }; + 260F1F7612D620E800D9B07F /* urldb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = urldb.c; sourceTree = "<group>"; }; + 260F1F7712D620E800D9B07F /* urldb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = urldb.h; sourceTree = "<group>"; }; + 260F1F7912D620E800D9B07F /* css.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = css.c; sourceTree = "<group>"; }; + 260F1F7A12D620E800D9B07F /* css.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = css.h; sourceTree = "<group>"; }; + 260F1F7B12D620E800D9B07F /* dump.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dump.c; sourceTree = "<group>"; }; + 260F1F7C12D620E800D9B07F /* dump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dump.h; sourceTree = "<group>"; }; + 260F1F7D12D620E800D9B07F /* internal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = internal.c; sourceTree = "<group>"; }; + 260F1F7E12D620E800D9B07F /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = internal.h; sourceTree = "<group>"; }; + 260F1F7F12D620E800D9B07F /* select.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = select.c; sourceTree = "<group>"; }; + 260F1F8012D620E800D9B07F /* select.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = select.h; sourceTree = "<group>"; }; + 260F1F8112D620E800D9B07F /* utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = utils.c; sourceTree = "<group>"; }; + 260F1F8212D620E800D9B07F /* utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = "<group>"; }; + 260F1F8412D620E800D9B07F /* 401login.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 401login.h; sourceTree = "<group>"; }; + 260F1F8512D620E800D9B07F /* browser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = browser.c; sourceTree = "<group>"; }; + 260F1F8612D620E800D9B07F /* browser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = browser.h; sourceTree = "<group>"; }; + 260F1F8712D620E800D9B07F /* cookies.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cookies.c; sourceTree = "<group>"; }; + 260F1F8812D620E800D9B07F /* cookies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cookies.h; sourceTree = "<group>"; }; + 260F1F8912D620E800D9B07F /* download.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = download.c; sourceTree = "<group>"; }; + 260F1F8A12D620E800D9B07F /* download.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = download.h; sourceTree = "<group>"; }; + 260F1F8B12D620E800D9B07F /* frames.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frames.c; sourceTree = "<group>"; }; + 260F1F8C12D620E800D9B07F /* frames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = frames.h; sourceTree = "<group>"; }; + 260F1F8D12D620E800D9B07F /* gui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gui.h; sourceTree = "<group>"; }; + 260F1F8E12D620E800D9B07F /* history_core.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = history_core.c; sourceTree = "<group>"; }; + 260F1F8F12D620E800D9B07F /* history_core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = history_core.h; sourceTree = "<group>"; }; + 260F1F9012D620E800D9B07F /* history_global_core.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = history_global_core.c; sourceTree = "<group>"; }; + 260F1F9112D620E800D9B07F /* history_global_core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = history_global_core.h; sourceTree = "<group>"; }; + 260F1F9212D620E800D9B07F /* hotlist.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hotlist.c; sourceTree = "<group>"; }; + 260F1F9312D620E800D9B07F /* hotlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hotlist.h; sourceTree = "<group>"; }; + 260F1F9412D620E800D9B07F /* knockout.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = knockout.c; sourceTree = "<group>"; }; + 260F1F9512D620E800D9B07F /* knockout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = knockout.h; sourceTree = "<group>"; }; + 260F1F9612D620E800D9B07F /* mouse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mouse.c; sourceTree = "<group>"; }; + 260F1F9712D620E800D9B07F /* mouse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mouse.h; sourceTree = "<group>"; }; + 260F1F9812D620E800D9B07F /* netsurf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = netsurf.c; sourceTree = "<group>"; }; + 260F1F9912D620E800D9B07F /* netsurf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netsurf.h; sourceTree = "<group>"; }; + 260F1F9A12D620E800D9B07F /* options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = options.c; sourceTree = "<group>"; }; + 260F1F9B12D620E800D9B07F /* options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = options.h; sourceTree = "<group>"; }; + 260F1F9C12D620E800D9B07F /* plot_style.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = plot_style.c; sourceTree = "<group>"; }; + 260F1F9D12D620E800D9B07F /* plot_style.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plot_style.h; sourceTree = "<group>"; }; + 260F1F9E12D620E800D9B07F /* plotters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plotters.h; sourceTree = "<group>"; }; + 260F1F9F12D620E800D9B07F /* print.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = print.c; sourceTree = "<group>"; }; + 260F1FA012D620E800D9B07F /* print.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = print.h; sourceTree = "<group>"; }; + 260F1FA112D620E800D9B07F /* printer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = printer.h; sourceTree = "<group>"; }; + 260F1FA212D620E800D9B07F /* save_complete.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = save_complete.c; sourceTree = "<group>"; }; + 260F1FA312D620E800D9B07F /* save_complete.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = save_complete.h; sourceTree = "<group>"; }; + 260F1FA512D620E800D9B07F /* font_haru.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = font_haru.c; sourceTree = "<group>"; }; + 260F1FA612D620E800D9B07F /* font_haru.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = font_haru.h; sourceTree = "<group>"; }; + 260F1FA712D620E800D9B07F /* pdf_plotters.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pdf_plotters.c; sourceTree = "<group>"; }; + 260F1FA812D620E800D9B07F /* pdf_plotters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pdf_plotters.h; sourceTree = "<group>"; }; + 260F1FAA12D620E800D9B07F /* save_text.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = save_text.c; sourceTree = "<group>"; }; + 260F1FAB12D620E800D9B07F /* save_text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = save_text.h; sourceTree = "<group>"; }; + 260F1FAC12D620E800D9B07F /* scroll.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = scroll.c; sourceTree = "<group>"; }; + 260F1FAD12D620E800D9B07F /* scroll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scroll.h; sourceTree = "<group>"; }; + 260F1FAE12D620E800D9B07F /* search.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = search.c; sourceTree = "<group>"; }; + 260F1FAF12D620E800D9B07F /* search.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = search.h; sourceTree = "<group>"; }; + 260F1FB012D620E800D9B07F /* searchweb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = searchweb.c; sourceTree = "<group>"; }; + 260F1FB112D620E800D9B07F /* searchweb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = searchweb.h; sourceTree = "<group>"; }; + 260F1FB212D620E800D9B07F /* selection.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = selection.c; sourceTree = "<group>"; }; + 260F1FB312D620E800D9B07F /* selection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = selection.h; sourceTree = "<group>"; }; + 260F1FB412D620E800D9B07F /* sslcert.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sslcert.c; sourceTree = "<group>"; }; + 260F1FB512D620E800D9B07F /* sslcert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sslcert.h; sourceTree = "<group>"; }; + 260F1FB612D620E800D9B07F /* textarea.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = textarea.c; sourceTree = "<group>"; }; + 260F1FB712D620E800D9B07F /* textarea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = textarea.h; sourceTree = "<group>"; }; + 260F1FB812D620E800D9B07F /* textinput.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = textinput.c; sourceTree = "<group>"; }; + 260F1FB912D620E800D9B07F /* textinput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = textinput.h; sourceTree = "<group>"; }; + 260F1FBA12D620E800D9B07F /* tree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tree.c; sourceTree = "<group>"; }; + 260F1FBB12D620E800D9B07F /* tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tree.h; sourceTree = "<group>"; }; + 260F1FBC12D620E800D9B07F /* tree_url_node.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tree_url_node.c; sourceTree = "<group>"; }; + 260F1FBD12D620E800D9B07F /* tree_url_node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tree_url_node.h; sourceTree = "<group>"; }; + 260F1FBE12D620E800D9B07F /* version.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = version.c; sourceTree = "<group>"; }; + 260F1FC712D620E800D9B07F /* box.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = box.c; sourceTree = "<group>"; }; + 260F1FC812D620E800D9B07F /* box.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = box.h; sourceTree = "<group>"; }; + 260F1FC912D620E800D9B07F /* box_construct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = box_construct.c; sourceTree = "<group>"; }; + 260F1FCA12D620E800D9B07F /* box_normalise.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = box_normalise.c; sourceTree = "<group>"; }; + 260F1FCB12D620E800D9B07F /* favicon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = favicon.c; sourceTree = "<group>"; }; + 260F1FCC12D620E800D9B07F /* favicon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = favicon.h; sourceTree = "<group>"; }; + 260F1FCD12D620E800D9B07F /* font.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = font.c; sourceTree = "<group>"; }; + 260F1FCE12D620E800D9B07F /* font.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = "<group>"; }; + 260F1FCF12D620E800D9B07F /* form.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = form.c; sourceTree = "<group>"; }; + 260F1FD012D620E800D9B07F /* form.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = form.h; sourceTree = "<group>"; }; + 260F1FD112D620E800D9B07F /* html.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = html.c; sourceTree = "<group>"; }; + 260F1FD212D620E800D9B07F /* html.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = html.h; sourceTree = "<group>"; }; + 260F1FD312D620E800D9B07F /* html_interaction.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = html_interaction.c; sourceTree = "<group>"; }; + 260F1FD412D620E800D9B07F /* html_redraw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = html_redraw.c; sourceTree = "<group>"; }; + 260F1FD512D620E800D9B07F /* hubbub_binding.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hubbub_binding.c; sourceTree = "<group>"; }; + 260F1FD612D620E800D9B07F /* imagemap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = imagemap.c; sourceTree = "<group>"; }; + 260F1FD712D620E800D9B07F /* imagemap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = imagemap.h; sourceTree = "<group>"; }; + 260F1FD812D620E800D9B07F /* layout.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = layout.c; sourceTree = "<group>"; }; + 260F1FD912D620E800D9B07F /* layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = layout.h; sourceTree = "<group>"; }; + 260F1FDA12D620E800D9B07F /* list.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = list.c; sourceTree = "<group>"; }; + 260F1FDB12D620E800D9B07F /* list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = list.h; sourceTree = "<group>"; }; + 260F1FDC12D620E800D9B07F /* parser_binding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parser_binding.h; sourceTree = "<group>"; }; + 260F1FDD12D620E800D9B07F /* table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = table.c; sourceTree = "<group>"; }; + 260F1FDE12D620E800D9B07F /* table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = table.h; sourceTree = "<group>"; }; + 260F1FE012D620E800D9B07F /* textplain.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = textplain.c; sourceTree = "<group>"; }; + 260F1FE112D620E800D9B07F /* textplain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = textplain.h; sourceTree = "<group>"; }; + 260F1FE312D620E800D9B07F /* base64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = base64.c; sourceTree = "<group>"; }; + 260F1FE412D620E800D9B07F /* base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = "<group>"; }; + 260F1FE512D620E800D9B07F /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; }; + 260F1FE612D620E800D9B07F /* container.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = container.c; sourceTree = "<group>"; }; + 260F1FE712D620E800D9B07F /* container.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = container.h; sourceTree = "<group>"; }; + 260F1FE812D620E800D9B07F /* errors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = errors.h; sourceTree = "<group>"; }; + 260F1FE912D620E800D9B07F /* filename.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filename.c; sourceTree = "<group>"; }; + 260F1FEA12D620E800D9B07F /* filename.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filename.h; sourceTree = "<group>"; }; + 260F1FEB12D620E800D9B07F /* findresource.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = findresource.c; sourceTree = "<group>"; }; + 260F1FEC12D620E800D9B07F /* findresource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = findresource.h; sourceTree = "<group>"; }; + 260F1FED12D620E800D9B07F /* hashtable.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hashtable.c; sourceTree = "<group>"; }; + 260F1FEE12D620E800D9B07F /* hashtable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hashtable.h; sourceTree = "<group>"; }; + 260F1FEF12D620E800D9B07F /* http.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = http.c; sourceTree = "<group>"; }; + 260F1FF012D620E800D9B07F /* http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = http.h; sourceTree = "<group>"; }; + 260F1FF112D620E800D9B07F /* locale.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = locale.c; sourceTree = "<group>"; }; + 260F1FF212D620E800D9B07F /* locale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = locale.h; sourceTree = "<group>"; }; + 260F1FF312D620E800D9B07F /* log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = log.c; sourceTree = "<group>"; }; + 260F1FF412D620E800D9B07F /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; }; + 260F1FF612D620E800D9B07F /* memdebug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = memdebug.c; sourceTree = "<group>"; }; + 260F1FF712D620E800D9B07F /* memdebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memdebug.h; sourceTree = "<group>"; }; + 260F1FF812D620E800D9B07F /* messages.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = messages.c; sourceTree = "<group>"; }; + 260F1FF912D620E800D9B07F /* messages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = messages.h; sourceTree = "<group>"; }; + 260F1FFA12D620E800D9B07F /* ring.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ring.h; sourceTree = "<group>"; }; + 260F1FFB12D620E800D9B07F /* talloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = talloc.c; sourceTree = "<group>"; }; + 260F1FFC12D620E800D9B07F /* talloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = talloc.h; sourceTree = "<group>"; }; + 260F1FFF12D620E800D9B07F /* url.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = url.c; sourceTree = "<group>"; }; + 260F200012D620E800D9B07F /* url.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = url.h; sourceTree = "<group>"; }; + 260F200112D620E800D9B07F /* useragent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = useragent.c; sourceTree = "<group>"; }; + 260F200212D620E800D9B07F /* useragent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = useragent.h; sourceTree = "<group>"; }; + 260F200312D620E800D9B07F /* utf8.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = utf8.c; sourceTree = "<group>"; }; + 260F200412D620E800D9B07F /* utf8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utf8.h; sourceTree = "<group>"; }; + 260F200512D620E800D9B07F /* utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = utils.c; sourceTree = "<group>"; }; + 260F200612D620E800D9B07F /* utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = "<group>"; }; + 260F200712D620E800D9B07F /* utsname.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utsname.h; sourceTree = "<group>"; }; + 260F20AE12D6228C00D9B07F /* libssl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libssl.dylib; path = usr/lib/libssl.dylib; sourceTree = SDKROOT; }; + 260F20B012D6229900D9B07F /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = usr/lib/libxml2.dylib; sourceTree = SDKROOT; }; + 260F20B412D622AA00D9B07F /* libcurl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcurl.dylib; path = usr/lib/libcurl.dylib; sourceTree = SDKROOT; }; + 260F20B812D622C600D9B07F /* libcrypto.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcrypto.dylib; path = usr/lib/libcrypto.dylib; sourceTree = SDKROOT; }; + 260F20BC12D622F500D9B07F /* libnsbmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libnsbmp.a; path = /usr/local/lib/libnsbmp.a; sourceTree = "<absolute>"; }; + 260F20BE12D622F500D9B07F /* libnsgif.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libnsgif.a; path = /usr/local/lib/libnsgif.a; sourceTree = "<absolute>"; }; + 260F20C512D6230B00D9B07F /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; + 260F20CA12D6231E00D9B07F /* libhubbub.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libhubbub.a; path = /usr/local/lib/libhubbub.a; sourceTree = "<absolute>"; }; + 260F20CC12D6232D00D9B07F /* libcss.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcss.a; path = /usr/local/lib/libcss.a; sourceTree = "<absolute>"; }; + 260F20D112D6235200D9B07F /* libparserutils.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libparserutils.a; path = /usr/local/lib/libparserutils.a; sourceTree = "<absolute>"; }; + 260F20D612D6237E00D9B07F /* libwapcaplet.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libwapcaplet.a; path = /usr/local/lib/libwapcaplet.a; sourceTree = "<absolute>"; }; + 260F20DA12D623D000D9B07F /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; }; + 260FC03112D85ACE00079C00 /* bitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitmap.h; sourceTree = "<group>"; }; + 26121DA812D700B800E10F91 /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = "<group>"; }; + 26121DD712D703F400E10F91 /* NetSurfApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetSurfApp.h; sourceTree = "<group>"; }; + 26121DD812D703F400E10F91 /* NetSurfApp.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NetSurfApp.m; sourceTree = "<group>"; }; + 26121E3D12D70A1A00E10F91 /* BrowserWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BrowserWindow.h; sourceTree = "<group>"; }; + 26121E3E12D70A1A00E10F91 /* BrowserWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BrowserWindow.m; sourceTree = "<group>"; }; + 26121EAB12D70E0A00E10F91 /* Browser.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Browser.xib; sourceTree = "<group>"; }; + 26121EFB12D7132100E10F91 /* BrowserView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BrowserView.h; sourceTree = "<group>"; }; + 26121EFC12D7132100E10F91 /* BrowserView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BrowserView.m; sourceTree = "<group>"; }; + 2612205512D7247900E10F91 /* libjpeg.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libjpeg.dylib; path = usr/local/lib/libjpeg.dylib; sourceTree = SDKROOT; }; + 261223B712D77F9C00E10F91 /* font.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = "<group>"; }; + 261223CB12D7805300E10F91 /* plotter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plotter.h; sourceTree = "<group>"; }; + 2612265712D7ACB500E10F91 /* default.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = default.css; sourceTree = "<group>"; }; + 2612265912D7ACB500E10F91 /* quirks.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = quirks.css; sourceTree = "<group>"; }; + 2612265D12D7AD6800E10F91 /* adblock.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = adblock.css; sourceTree = "<group>"; }; + 2612269012D7AE4100E10F91 /* de */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = de; path = de.lproj/Messages; sourceTree = "<group>"; }; + 2612269312D7AE9B00E10F91 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text; name = nl; path = nl.lproj/Messages; sourceTree = "<group>"; }; + 2612269412D7AEA800E10F91 /* en */ = {isa = PBXFileReference; lastKnownFileType = text; name = en; path = en.lproj/Messages; sourceTree = "<group>"; }; + 2612269512D7AEB500E10F91 /* it */ = {isa = PBXFileReference; lastKnownFileType = text; name = it; path = it.lproj/Messages; sourceTree = "<group>"; }; + 2612269612D7AEBE00E10F91 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text; name = fr; path = fr.lproj/Messages; sourceTree = "<group>"; }; + 265F30A712D6637E0048B600 /* NetSurf-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "NetSurf-Info.plist"; sourceTree = "<group>"; }; + 265F30AB12D6637E0048B600 /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = "<group>"; }; + 265F311912D663F50048B600 /* gui.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = gui.m; sourceTree = "<group>"; }; + 265F314712D666660048B600 /* plotter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = plotter.m; sourceTree = "<group>"; }; + 265F315112D667060048B600 /* history.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = history.m; sourceTree = "<group>"; }; + 265F316112D667E10048B600 /* schedule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = schedule.m; sourceTree = "<group>"; }; + 265F316612D668130048B600 /* thumbnail.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = thumbnail.m; sourceTree = "<group>"; }; + 265F316F12D668790048B600 /* fetch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = fetch.m; sourceTree = "<group>"; }; + 265F319012D668DB0048B600 /* url.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = url.m; sourceTree = "<group>"; }; + 265F31C412D66A0D0048B600 /* save.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = save.m; sourceTree = "<group>"; }; + 265F31CA12D66A890048B600 /* bitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitmap.h; sourceTree = "<group>"; }; + 265F31CB12D66A890048B600 /* bmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bmp.c; sourceTree = "<group>"; }; + 265F31CC12D66A890048B600 /* bmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bmp.h; sourceTree = "<group>"; }; + 265F31CD12D66A890048B600 /* gif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gif.c; sourceTree = "<group>"; }; + 265F31CE12D66A890048B600 /* gif.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gif.h; sourceTree = "<group>"; }; + 265F31CF12D66A890048B600 /* ico.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ico.c; sourceTree = "<group>"; }; + 265F31D012D66A890048B600 /* ico.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ico.h; sourceTree = "<group>"; }; + 265F31D112D66A890048B600 /* jpeg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jpeg.c; sourceTree = "<group>"; }; + 265F31D212D66A890048B600 /* jpeg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jpeg.h; sourceTree = "<group>"; }; + 265F31D312D66A890048B600 /* mng.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mng.c; sourceTree = "<group>"; }; + 265F31D412D66A890048B600 /* mng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mng.h; sourceTree = "<group>"; }; + 265F31D512D66A890048B600 /* nssprite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nssprite.c; sourceTree = "<group>"; }; + 265F31D612D66A890048B600 /* nssprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nssprite.h; sourceTree = "<group>"; }; + 265F31D712D66A890048B600 /* png.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = png.c; sourceTree = "<group>"; }; + 265F31D812D66A890048B600 /* png.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = "<group>"; }; + 265F31D912D66A890048B600 /* rsvg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rsvg.c; sourceTree = "<group>"; }; + 265F31DA12D66A890048B600 /* rsvg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rsvg.h; sourceTree = "<group>"; }; + 265F31DB12D66A890048B600 /* svg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = svg.c; sourceTree = "<group>"; }; + 265F31DC12D66A890048B600 /* svg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = svg.h; sourceTree = "<group>"; }; + 265F31DD12D66A890048B600 /* webp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = webp.c; sourceTree = "<group>"; }; + 265F31DE12D66A890048B600 /* webp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = webp.h; sourceTree = "<group>"; }; + 265F31EB12D66B190048B600 /* bitmap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = bitmap.m; sourceTree = "<group>"; }; + 265F320512D66C200048B600 /* utf8.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = utf8.m; sourceTree = "<group>"; }; + 265F321312D66CD90048B600 /* utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = utils.m; sourceTree = "<group>"; }; + 265F321E12D66D510048B600 /* font.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = font.m; sourceTree = "<group>"; }; + 2671AA2012D8D32300B8A46A /* libpng.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpng.dylib; path = usr/X11/lib/libpng.3.dylib; sourceTree = SDKROOT; }; + 8D1107320486CEB800E47090 /* NetSurf.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NetSurf.app; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D11072E0486CEB800E47090 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, + 260F20AF12D6228C00D9B07F /* libssl.dylib in Frameworks */, + 260F20B112D6229900D9B07F /* libxml2.dylib in Frameworks */, + 260F20B512D622AA00D9B07F /* libcurl.dylib in Frameworks */, + 260F20B912D622C600D9B07F /* libcrypto.dylib in Frameworks */, + 260F20BD12D622F500D9B07F /* libnsbmp.a in Frameworks */, + 260F20BF12D622F500D9B07F /* libnsgif.a in Frameworks */, + 260F20C612D6230B00D9B07F /* libz.dylib in Frameworks */, + 260F20CB12D6231E00D9B07F /* libhubbub.a in Frameworks */, + 260F20CD12D6232D00D9B07F /* libcss.a in Frameworks */, + 260F20D212D6235200D9B07F /* libparserutils.a in Frameworks */, + 260F20D712D6237E00D9B07F /* libwapcaplet.a in Frameworks */, + 260F20DB12D623D000D9B07F /* libiconv.dylib in Frameworks */, + 2612205612D7247900E10F91 /* libjpeg.dylib in Frameworks */, + 2671AA2112D8D32300B8A46A /* libpng.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D1107320486CEB800E47090 /* NetSurf.app */, + ); + name = Products; + sourceTree = "<group>"; + }; + 260F1F6212D620E800D9B07F /* content */ = { + isa = PBXGroup; + children = ( + 260F1F6312D620E800D9B07F /* content.c */, + 260F1F6412D620E800D9B07F /* content.h */, + 260F1F6512D620E800D9B07F /* content_protected.h */, + 260F1F6612D620E800D9B07F /* content_type.h */, + 260F1F6712D620E800D9B07F /* dirlist.c */, + 260F1F6812D620E800D9B07F /* dirlist.h */, + 260F1F6912D620E800D9B07F /* fetch.c */, + 260F1F6A12D620E800D9B07F /* fetch.h */, + 260F1F6B12D620E800D9B07F /* fetchers */, + 260F1F7212D620E800D9B07F /* hlcache.c */, + 260F1F7312D620E800D9B07F /* hlcache.h */, + 260F1F7412D620E800D9B07F /* llcache.c */, + 260F1F7512D620E800D9B07F /* llcache.h */, + 260F1F7612D620E800D9B07F /* urldb.c */, + 260F1F7712D620E800D9B07F /* urldb.h */, + ); + name = content; + path = ../content; + sourceTree = SOURCE_ROOT; + }; + 260F1F6B12D620E800D9B07F /* fetchers */ = { + isa = PBXGroup; + children = ( + 260F1F6C12D620E800D9B07F /* fetch_curl.c */, + 260F1F6D12D620E800D9B07F /* fetch_curl.h */, + 260F1F6E12D620E800D9B07F /* fetch_data.c */, + 260F1F6F12D620E800D9B07F /* fetch_data.h */, + 260F1F7012D620E800D9B07F /* fetch_file.c */, + 260F1F7112D620E800D9B07F /* fetch_file.h */, + ); + path = fetchers; + sourceTree = "<group>"; + }; + 260F1F7812D620E800D9B07F /* css */ = { + isa = PBXGroup; + children = ( + 260F1F7912D620E800D9B07F /* css.c */, + 260F1F7A12D620E800D9B07F /* css.h */, + 260F1F7B12D620E800D9B07F /* dump.c */, + 260F1F7C12D620E800D9B07F /* dump.h */, + 260F1F7D12D620E800D9B07F /* internal.c */, + 260F1F7E12D620E800D9B07F /* internal.h */, + 260F1F7F12D620E800D9B07F /* select.c */, + 260F1F8012D620E800D9B07F /* select.h */, + 260F1F8112D620E800D9B07F /* utils.c */, + 260F1F8212D620E800D9B07F /* utils.h */, + ); + name = css; + path = ../css; + sourceTree = SOURCE_ROOT; + }; + 260F1F8312D620E800D9B07F /* desktop */ = { + isa = PBXGroup; + children = ( + 260F1F8412D620E800D9B07F /* 401login.h */, + 260F1F8512D620E800D9B07F /* browser.c */, + 260F1F8612D620E800D9B07F /* browser.h */, + 260F1F8712D620E800D9B07F /* cookies.c */, + 260F1F8812D620E800D9B07F /* cookies.h */, + 260F1F8912D620E800D9B07F /* download.c */, + 260F1F8A12D620E800D9B07F /* download.h */, + 260F1F8B12D620E800D9B07F /* frames.c */, + 260F1F8C12D620E800D9B07F /* frames.h */, + 260F1F8D12D620E800D9B07F /* gui.h */, + 260F1F8E12D620E800D9B07F /* history_core.c */, + 260F1F8F12D620E800D9B07F /* history_core.h */, + 260F1F9012D620E800D9B07F /* history_global_core.c */, + 260F1F9112D620E800D9B07F /* history_global_core.h */, + 260F1F9212D620E800D9B07F /* hotlist.c */, + 260F1F9312D620E800D9B07F /* hotlist.h */, + 260F1F9412D620E800D9B07F /* knockout.c */, + 260F1F9512D620E800D9B07F /* knockout.h */, + 260F1F9612D620E800D9B07F /* mouse.c */, + 260F1F9712D620E800D9B07F /* mouse.h */, + 260F1F9812D620E800D9B07F /* netsurf.c */, + 260F1F9912D620E800D9B07F /* netsurf.h */, + 260F1F9A12D620E800D9B07F /* options.c */, + 260F1F9B12D620E800D9B07F /* options.h */, + 260F1F9C12D620E800D9B07F /* plot_style.c */, + 260F1F9D12D620E800D9B07F /* plot_style.h */, + 260F1F9E12D620E800D9B07F /* plotters.h */, + 260F1F9F12D620E800D9B07F /* print.c */, + 260F1FA012D620E800D9B07F /* print.h */, + 260F1FA112D620E800D9B07F /* printer.h */, + 260F1FA212D620E800D9B07F /* save_complete.c */, + 260F1FA312D620E800D9B07F /* save_complete.h */, + 260F1FA412D620E800D9B07F /* save_pdf */, + 260F1FAA12D620E800D9B07F /* save_text.c */, + 260F1FAB12D620E800D9B07F /* save_text.h */, + 260F1FAC12D620E800D9B07F /* scroll.c */, + 260F1FAD12D620E800D9B07F /* scroll.h */, + 260F1FAE12D620E800D9B07F /* search.c */, + 260F1FAF12D620E800D9B07F /* search.h */, + 260F1FB012D620E800D9B07F /* searchweb.c */, + 260F1FB112D620E800D9B07F /* searchweb.h */, + 260F1FB212D620E800D9B07F /* selection.c */, + 260F1FB312D620E800D9B07F /* selection.h */, + 260F1FB412D620E800D9B07F /* sslcert.c */, + 260F1FB512D620E800D9B07F /* sslcert.h */, + 260F1FB612D620E800D9B07F /* textarea.c */, + 260F1FB712D620E800D9B07F /* textarea.h */, + 260F1FB812D620E800D9B07F /* textinput.c */, + 260F1FB912D620E800D9B07F /* textinput.h */, + 260F1FBA12D620E800D9B07F /* tree.c */, + 260F1FBB12D620E800D9B07F /* tree.h */, + 260F1FBC12D620E800D9B07F /* tree_url_node.c */, + 260F1FBD12D620E800D9B07F /* tree_url_node.h */, + 260F1FBE12D620E800D9B07F /* version.c */, + ); + name = desktop; + path = ../desktop; + sourceTree = SOURCE_ROOT; + }; + 260F1FA412D620E800D9B07F /* save_pdf */ = { + isa = PBXGroup; + children = ( + 260F1FA512D620E800D9B07F /* font_haru.c */, + 260F1FA612D620E800D9B07F /* font_haru.h */, + 260F1FA712D620E800D9B07F /* pdf_plotters.c */, + 260F1FA812D620E800D9B07F /* pdf_plotters.h */, + ); + path = save_pdf; + sourceTree = "<group>"; + }; + 260F1FC612D620E800D9B07F /* render */ = { + isa = PBXGroup; + children = ( + 260F1FC712D620E800D9B07F /* box.c */, + 260F1FC812D620E800D9B07F /* box.h */, + 260F1FC912D620E800D9B07F /* box_construct.c */, + 260F1FCA12D620E800D9B07F /* box_normalise.c */, + 260F1FCB12D620E800D9B07F /* favicon.c */, + 260F1FCC12D620E800D9B07F /* favicon.h */, + 260F1FCD12D620E800D9B07F /* font.c */, + 260F1FCE12D620E800D9B07F /* font.h */, + 260F1FCF12D620E800D9B07F /* form.c */, + 260F1FD012D620E800D9B07F /* form.h */, + 260F1FD112D620E800D9B07F /* html.c */, + 260F1FD212D620E800D9B07F /* html.h */, + 260F1FD312D620E800D9B07F /* html_interaction.c */, + 260F1FD412D620E800D9B07F /* html_redraw.c */, + 260F1FD512D620E800D9B07F /* hubbub_binding.c */, + 260F1FD612D620E800D9B07F /* imagemap.c */, + 260F1FD712D620E800D9B07F /* imagemap.h */, + 260F1FD812D620E800D9B07F /* layout.c */, + 260F1FD912D620E800D9B07F /* layout.h */, + 260F1FDA12D620E800D9B07F /* list.c */, + 260F1FDB12D620E800D9B07F /* list.h */, + 260F1FDC12D620E800D9B07F /* parser_binding.h */, + 260F1FDD12D620E800D9B07F /* table.c */, + 260F1FDE12D620E800D9B07F /* table.h */, + 260F1FDF12D620E800D9B07F /* test */, + 260F1FE012D620E800D9B07F /* textplain.c */, + 260F1FE112D620E800D9B07F /* textplain.h */, + ); + name = render; + path = ../render; + sourceTree = SOURCE_ROOT; + }; + 260F1FDF12D620E800D9B07F /* test */ = { + isa = PBXGroup; + children = ( + ); + path = test; + sourceTree = "<group>"; + }; + 260F1FE212D620E800D9B07F /* utils */ = { + isa = PBXGroup; + children = ( + 260F1FE312D620E800D9B07F /* base64.c */, + 260F1FE412D620E800D9B07F /* base64.h */, + 260F1FE512D620E800D9B07F /* config.h */, + 260F1FE612D620E800D9B07F /* container.c */, + 260F1FE712D620E800D9B07F /* container.h */, + 260F1FE812D620E800D9B07F /* errors.h */, + 260F1FE912D620E800D9B07F /* filename.c */, + 260F1FEA12D620E800D9B07F /* filename.h */, + 260F1FEB12D620E800D9B07F /* findresource.c */, + 260F1FEC12D620E800D9B07F /* findresource.h */, + 260F1FED12D620E800D9B07F /* hashtable.c */, + 260F1FEE12D620E800D9B07F /* hashtable.h */, + 260F1FEF12D620E800D9B07F /* http.c */, + 260F1FF012D620E800D9B07F /* http.h */, + 260F1FF112D620E800D9B07F /* locale.c */, + 260F1FF212D620E800D9B07F /* locale.h */, + 260F1FF312D620E800D9B07F /* log.c */, + 260F1FF412D620E800D9B07F /* log.h */, + 260F1FF612D620E800D9B07F /* memdebug.c */, + 260F1FF712D620E800D9B07F /* memdebug.h */, + 260F1FF812D620E800D9B07F /* messages.c */, + 260F1FF912D620E800D9B07F /* messages.h */, + 260F1FFA12D620E800D9B07F /* ring.h */, + 260F1FFB12D620E800D9B07F /* talloc.c */, + 260F1FFC12D620E800D9B07F /* talloc.h */, + 260F1FFF12D620E800D9B07F /* url.c */, + 260F200012D620E800D9B07F /* url.h */, + 260F200112D620E800D9B07F /* useragent.c */, + 260F200212D620E800D9B07F /* useragent.h */, + 260F200312D620E800D9B07F /* utf8.c */, + 260F200412D620E800D9B07F /* utf8.h */, + 260F200512D620E800D9B07F /* utils.c */, + 260F200612D620E800D9B07F /* utils.h */, + 260F200712D620E800D9B07F /* utsname.h */, + ); + name = utils; + path = ../utils; + sourceTree = SOURCE_ROOT; + }; + 265F303F12D6637E0048B600 /* cocoa */ = { + isa = PBXGroup; + children = ( + 265F310F12D663C20048B600 /* res */, + 265F30AB12D6637E0048B600 /* Prefix.pch */, + 265F311912D663F50048B600 /* gui.m */, + 261223CB12D7805300E10F91 /* plotter.h */, + 265F314712D666660048B600 /* plotter.m */, + 265F315112D667060048B600 /* history.m */, + 265F316112D667E10048B600 /* schedule.m */, + 265F316612D668130048B600 /* thumbnail.m */, + 265F316F12D668790048B600 /* fetch.m */, + 265F319012D668DB0048B600 /* url.m */, + 265F31C412D66A0D0048B600 /* save.m */, + 260FC03112D85ACE00079C00 /* bitmap.h */, + 265F31EB12D66B190048B600 /* bitmap.m */, + 265F320512D66C200048B600 /* utf8.m */, + 265F321312D66CD90048B600 /* utils.m */, + 261223B712D77F9C00E10F91 /* font.h */, + 265F321E12D66D510048B600 /* font.m */, + 26121DD712D703F400E10F91 /* NetSurfApp.h */, + 26121DD812D703F400E10F91 /* NetSurfApp.m */, + 26121E3D12D70A1A00E10F91 /* BrowserWindow.h */, + 26121E3E12D70A1A00E10F91 /* BrowserWindow.m */, + 26121EFB12D7132100E10F91 /* BrowserView.h */, + 26121EFC12D7132100E10F91 /* BrowserView.m */, + ); + name = cocoa; + sourceTree = "<group>"; + }; + 265F310F12D663C20048B600 /* res */ = { + isa = PBXGroup; + children = ( + 2612268F12D7AE4100E10F91 /* Messages */, + 2612265D12D7AD6800E10F91 /* adblock.css */, + 2612265712D7ACB500E10F91 /* default.css */, + 2612265912D7ACB500E10F91 /* quirks.css */, + 265F30A712D6637E0048B600 /* NetSurf-Info.plist */, + 26121DA812D700B800E10F91 /* MainMenu.xib */, + 26121EAB12D70E0A00E10F91 /* Browser.xib */, + ); + path = res; + sourceTree = "<group>"; + }; + 265F31C912D66A890048B600 /* image */ = { + isa = PBXGroup; + children = ( + 265F31CA12D66A890048B600 /* bitmap.h */, + 265F31CB12D66A890048B600 /* bmp.c */, + 265F31CC12D66A890048B600 /* bmp.h */, + 265F31CD12D66A890048B600 /* gif.c */, + 265F31CE12D66A890048B600 /* gif.h */, + 265F31CF12D66A890048B600 /* ico.c */, + 265F31D012D66A890048B600 /* ico.h */, + 265F31D112D66A890048B600 /* jpeg.c */, + 265F31D212D66A890048B600 /* jpeg.h */, + 265F31D312D66A890048B600 /* mng.c */, + 265F31D412D66A890048B600 /* mng.h */, + 265F31D512D66A890048B600 /* nssprite.c */, + 265F31D612D66A890048B600 /* nssprite.h */, + 265F31D712D66A890048B600 /* png.c */, + 265F31D812D66A890048B600 /* png.h */, + 265F31D912D66A890048B600 /* rsvg.c */, + 265F31DA12D66A890048B600 /* rsvg.h */, + 265F31DB12D66A890048B600 /* svg.c */, + 265F31DC12D66A890048B600 /* svg.h */, + 265F31DD12D66A890048B600 /* webp.c */, + 265F31DE12D66A890048B600 /* webp.h */, + ); + name = image; + path = ../image; + sourceTree = SOURCE_ROOT; + }; + 29B97314FDCFA39411CA2CEA /* Untitled */ = { + isa = PBXGroup; + children = ( + 265F303F12D6637E0048B600 /* cocoa */, + 260F1F6212D620E800D9B07F /* content */, + 260F1F7812D620E800D9B07F /* css */, + 260F1F8312D620E800D9B07F /* desktop */, + 260F1FC612D620E800D9B07F /* render */, + 265F31C912D66A890048B600 /* image */, + 260F1FE212D620E800D9B07F /* utils */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = Untitled; + sourceTree = "<group>"; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2671AA2012D8D32300B8A46A /* libpng.dylib */, + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, + 260F20AE12D6228C00D9B07F /* libssl.dylib */, + 260F20B012D6229900D9B07F /* libxml2.dylib */, + 260F20B412D622AA00D9B07F /* libcurl.dylib */, + 260F20B812D622C600D9B07F /* libcrypto.dylib */, + 260F20BC12D622F500D9B07F /* libnsbmp.a */, + 260F20BE12D622F500D9B07F /* libnsgif.a */, + 260F20C512D6230B00D9B07F /* libz.dylib */, + 260F20CA12D6231E00D9B07F /* libhubbub.a */, + 260F20CC12D6232D00D9B07F /* libcss.a */, + 260F20D112D6235200D9B07F /* libparserutils.a */, + 260F20D612D6237E00D9B07F /* libwapcaplet.a */, + 260F20DA12D623D000D9B07F /* libiconv.dylib */, + 2612205512D7247900E10F91 /* libjpeg.dylib */, + ); + name = Frameworks; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D1107260486CEB800E47090 /* NetSurf */ = { + isa = PBXNativeTarget; + buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "NetSurf" */; + buildPhases = ( + 8D1107290486CEB800E47090 /* Resources */, + 8D11072C0486CEB800E47090 /* Sources */, + 8D11072E0486CEB800E47090 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NetSurf; + productInstallPath = "$(HOME)/Applications"; + productName = Untitled; + productReference = 8D1107320486CEB800E47090 /* NetSurf.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "NetSurf" */; + compatibilityVersion = "Xcode 3.0"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + de, + en, + fr, + it, + nl, + ); + mainGroup = 29B97314FDCFA39411CA2CEA /* Untitled */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D1107260486CEB800E47090 /* NetSurf */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D1107290486CEB800E47090 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 26121DA912D700B800E10F91 /* MainMenu.xib in Resources */, + 26121EAC12D70E0A00E10F91 /* Browser.xib in Resources */, + 2612265A12D7ACB500E10F91 /* default.css in Resources */, + 2612265C12D7ACB500E10F91 /* quirks.css in Resources */, + 2612266D12D7AD6800E10F91 /* adblock.css in Resources */, + 2612269112D7AE4100E10F91 /* Messages in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D11072C0486CEB800E47090 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 260F200A12D620E800D9B07F /* content.c in Sources */, + 260F200B12D620E800D9B07F /* dirlist.c in Sources */, + 260F200C12D620E800D9B07F /* fetch.c in Sources */, + 260F200D12D620E800D9B07F /* fetch_curl.c in Sources */, + 260F200E12D620E800D9B07F /* fetch_data.c in Sources */, + 260F200F12D620E800D9B07F /* fetch_file.c in Sources */, + 260F201012D620E800D9B07F /* hlcache.c in Sources */, + 260F201112D620E800D9B07F /* llcache.c in Sources */, + 260F201212D620E800D9B07F /* urldb.c in Sources */, + 260F201312D620E800D9B07F /* css.c in Sources */, + 260F201412D620E800D9B07F /* dump.c in Sources */, + 260F201512D620E800D9B07F /* internal.c in Sources */, + 260F201612D620E800D9B07F /* select.c in Sources */, + 260F201712D620E800D9B07F /* utils.c in Sources */, + 260F201812D620E800D9B07F /* browser.c in Sources */, + 260F201912D620E800D9B07F /* cookies.c in Sources */, + 260F201A12D620E800D9B07F /* download.c in Sources */, + 260F201B12D620E800D9B07F /* frames.c in Sources */, + 260F201C12D620E800D9B07F /* history_core.c in Sources */, + 260F201D12D620E800D9B07F /* history_global_core.c in Sources */, + 260F201E12D620E800D9B07F /* hotlist.c in Sources */, + 260F201F12D620E800D9B07F /* knockout.c in Sources */, + 260F202012D620E800D9B07F /* mouse.c in Sources */, + 260F202112D620E800D9B07F /* netsurf.c in Sources */, + 260F202212D620E800D9B07F /* options.c in Sources */, + 260F202312D620E800D9B07F /* plot_style.c in Sources */, + 260F202412D620E800D9B07F /* print.c in Sources */, + 260F202512D620E800D9B07F /* save_complete.c in Sources */, + 260F202612D620E800D9B07F /* font_haru.c in Sources */, + 260F202712D620E800D9B07F /* pdf_plotters.c in Sources */, + 260F202912D620E800D9B07F /* save_text.c in Sources */, + 260F202A12D620E800D9B07F /* scroll.c in Sources */, + 260F202B12D620E800D9B07F /* search.c in Sources */, + 260F202C12D620E800D9B07F /* searchweb.c in Sources */, + 260F202D12D620E800D9B07F /* selection.c in Sources */, + 260F202E12D620E800D9B07F /* sslcert.c in Sources */, + 260F202F12D620E800D9B07F /* textarea.c in Sources */, + 260F203012D620E800D9B07F /* textinput.c in Sources */, + 260F203112D620E800D9B07F /* tree.c in Sources */, + 260F203212D620E800D9B07F /* tree_url_node.c in Sources */, + 260F203312D620E800D9B07F /* version.c in Sources */, + 260F203A12D620E800D9B07F /* box.c in Sources */, + 260F203B12D620E800D9B07F /* box_construct.c in Sources */, + 260F203C12D620E800D9B07F /* box_normalise.c in Sources */, + 260F203D12D620E800D9B07F /* favicon.c in Sources */, + 260F203E12D620E800D9B07F /* font.c in Sources */, + 260F203F12D620E800D9B07F /* form.c in Sources */, + 260F204012D620E800D9B07F /* html.c in Sources */, + 260F204112D620E800D9B07F /* html_interaction.c in Sources */, + 260F204212D620E800D9B07F /* html_redraw.c in Sources */, + 260F204312D620E800D9B07F /* hubbub_binding.c in Sources */, + 260F204412D620E800D9B07F /* imagemap.c in Sources */, + 260F204512D620E800D9B07F /* layout.c in Sources */, + 260F204612D620E800D9B07F /* list.c in Sources */, + 260F204712D620E800D9B07F /* table.c in Sources */, + 260F204812D620E800D9B07F /* textplain.c in Sources */, + 260F204912D620E800D9B07F /* base64.c in Sources */, + 260F204A12D620E800D9B07F /* container.c in Sources */, + 260F204B12D620E800D9B07F /* filename.c in Sources */, + 260F204C12D620E800D9B07F /* findresource.c in Sources */, + 260F204D12D620E800D9B07F /* hashtable.c in Sources */, + 260F204E12D620E800D9B07F /* http.c in Sources */, + 260F204F12D620E800D9B07F /* locale.c in Sources */, + 260F205012D620E800D9B07F /* log.c in Sources */, + 260F205212D620E800D9B07F /* memdebug.c in Sources */, + 260F205312D620E800D9B07F /* messages.c in Sources */, + 260F205412D620E800D9B07F /* talloc.c in Sources */, + 260F205712D620E800D9B07F /* url.c in Sources */, + 260F205812D620E800D9B07F /* useragent.c in Sources */, + 260F205912D620E800D9B07F /* utf8.c in Sources */, + 260F205A12D620E800D9B07F /* utils.c in Sources */, + 265F311A12D663F50048B600 /* gui.m in Sources */, + 265F314812D666660048B600 /* plotter.m in Sources */, + 265F315212D667060048B600 /* history.m in Sources */, + 265F316212D667E10048B600 /* schedule.m in Sources */, + 265F316712D668130048B600 /* thumbnail.m in Sources */, + 265F317012D668790048B600 /* fetch.m in Sources */, + 265F319112D668DB0048B600 /* url.m in Sources */, + 265F31C512D66A0D0048B600 /* save.m in Sources */, + 265F31DF12D66A890048B600 /* bmp.c in Sources */, + 265F31E012D66A890048B600 /* gif.c in Sources */, + 265F31E112D66A890048B600 /* ico.c in Sources */, + 265F31E212D66A890048B600 /* jpeg.c in Sources */, + 265F31E312D66A890048B600 /* mng.c in Sources */, + 265F31E412D66A890048B600 /* nssprite.c in Sources */, + 265F31E512D66A890048B600 /* png.c in Sources */, + 265F31E612D66A890048B600 /* rsvg.c in Sources */, + 265F31E712D66A890048B600 /* svg.c in Sources */, + 265F31E812D66A890048B600 /* webp.c in Sources */, + 265F31EC12D66B190048B600 /* bitmap.m in Sources */, + 265F320612D66C200048B600 /* utf8.m in Sources */, + 265F321412D66CD90048B600 /* utils.m in Sources */, + 265F321F12D66D510048B600 /* font.m in Sources */, + 26121DD912D703F400E10F91 /* NetSurfApp.m in Sources */, + 26121E3F12D70A1A00E10F91 /* BrowserWindow.m in Sources */, + 26121EFD12D7132100E10F91 /* BrowserView.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 2612268F12D7AE4100E10F91 /* Messages */ = { + isa = PBXVariantGroup; + children = ( + 2612269012D7AE4100E10F91 /* de */, + 2612269312D7AE9B00E10F91 /* nl */, + 2612269412D7AEA800E10F91 /* en */, + 2612269512D7AEB500E10F91 /* it */, + 2612269612D7AEBE00E10F91 /* fr */, + ); + name = Messages; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C01FCF4B08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Prefix.pch; + INFOPLIST_FILE = "res/NetSurf-Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SDKROOT)/usr/X11/lib\"", + ); + OTHER_CFLAGS = ( + "-DWITH_GIF", + "-DWITH_BMP", + "-DWITH_PNG", + "-DWITH_JPEG", + ); + PRODUCT_NAME = NetSurf; + }; + name = Debug; + }; + C01FCF4C08A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Prefix.pch; + INFOPLIST_FILE = "res/NetSurf-Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SDKROOT)/usr/X11/lib\"", + ); + OTHER_CFLAGS = ( + "-DWITH_GIF", + "-DWITH_BMP", + "-DWITH_PNG", + "-DWITH_JPEG", + ); + PRODUCT_NAME = NetSurf; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ONLY_ACTIVE_ARCH_PRE_XCODE_3_1)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = ""; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + /usr/X11/include, + /usr/include/libxml2/, + /usr/local/include/, + "${SRCROOT}/../", + ); + ONLY_ACTIVE_ARCH_PRE_XCODE_3_1 = "$(NATIVE_ARCH_ACTUAL)"; + OTHER_LDFLAGS = ""; + PREBINDING = NO; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + }; + name = Debug; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "x86_64 i386 ppc"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_VERSION = ""; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + /usr/X11/include, + /usr/include/libxml2/, + /usr/local/include/, + "${SRCROOT}/../", + ); + OTHER_LDFLAGS = ""; + PREBINDING = NO; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "NetSurf" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4B08A954540054247B /* Debug */, + C01FCF4C08A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "NetSurf" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Debug */, + C01FCF5008A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/cocoa/NetsurfApp.h b/cocoa/NetsurfApp.h new file mode 100644 index 000000000..cca9c419b --- /dev/null +++ b/cocoa/NetsurfApp.h @@ -0,0 +1,26 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import <Cocoa/Cocoa.h> + + +@interface NetSurfApp : NSApplication { + +} + +@end diff --git a/cocoa/NetsurfApp.m b/cocoa/NetsurfApp.m new file mode 100644 index 000000000..3ca150e14 --- /dev/null +++ b/cocoa/NetsurfApp.m @@ -0,0 +1,59 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import "NetSurfApp.h" + +#import "desktop/gui.h" +#include "content/urldb.h" +#include "content/fetch.h" +#include "css/utils.h" +#include "desktop/gui.h" +#include "desktop/history_core.h" +#include "desktop/mouse.h" +#include "desktop/netsurf.h" +#include "desktop/options.h" +#include "desktop/plotters.h" +#include "desktop/save_complete.h" +#include "desktop/selection.h" +#include "desktop/textinput.h" +#include "render/html.h" +#include "utils/url.h" +#include "utils/log.h" +#include "utils/messages.h" +#include "utils/utils.h" + + +@implementation NetSurfApp + +- (void) run; +{ + [self finishLaunching]; + browser_window_create( "http://netsurf-browser.org/", NULL, NULL, true, false ); + netsurf_main_loop(); +} + +-(void) terminate: (id)sender; +{ + netsurf_quit = true; + [self postEvent: [NSEvent otherEventWithType: NSApplicationDefined location: NSZeroPoint + modifierFlags: 0 timestamp: 0 windowNumber: 0 context: NULL + subtype: 0 data1: 0 data2: 0] + atStart: YES]; +} + +@end diff --git a/cocoa/bitmap.h b/cocoa/bitmap.h new file mode 100644 index 000000000..78526e425 --- /dev/null +++ b/cocoa/bitmap.h @@ -0,0 +1,24 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef COCOA_BITMAP_H +#define COCOA_BITMAP_H + +CGImageRef cocoa_get_cgimage( void *bitmap ); + +#endif
\ No newline at end of file diff --git a/cocoa/bitmap.m b/cocoa/bitmap.m new file mode 100644 index 000000000..eb791c46e --- /dev/null +++ b/cocoa/bitmap.m @@ -0,0 +1,223 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import <Cocoa/Cocoa.h> + +#import "image/bitmap.h" +#import "cocoa/bitmap.h" + +#define BITS_PER_SAMPLE (8) +#define SAMPLES_PER_PIXEL (4) +#define BITS_PER_PIXEL (BITS_PER_SAMPLE * SAMPLES_PER_PIXEL) +#define BYTES_PER_PIXEL (BITS_PER_PIXEL / 8) +#define RED_OFFSET (0) +#define GREEN_OFFSET (1) +#define BLUE_OFFSET (2) +#define ALPHA_OFFSET (3) + +static CGImageRef cocoa_prepare_bitmap( void *bitmap ); +static NSMapTable *cocoa_get_bitmap_cache(); + +int bitmap_get_width(void *bitmap) +{ + NSCParameterAssert( NULL != bitmap ); + NSBitmapImageRep *bmp = (NSBitmapImageRep *)bitmap; + return [bmp pixelsWide]; +} + +int bitmap_get_height(void *bitmap) +{ + NSCParameterAssert( NULL != bitmap ); + NSBitmapImageRep *bmp = (NSBitmapImageRep *)bitmap; + return [bmp pixelsHigh]; +} + +bool bitmap_get_opaque(void *bitmap) +{ + NSCParameterAssert( NULL != bitmap ); + NSBitmapImageRep *bmp = (NSBitmapImageRep *)bitmap; + return [bmp isOpaque]; +} + +void bitmap_destroy(void *bitmap) +{ + NSCParameterAssert( NULL != bitmap ); + + NSMapTable *cache = cocoa_get_bitmap_cache(); + CGImageRef image = NSMapGet( cache, bitmap ); + if (NULL != image) { + CGImageRelease( image ); + NSMapRemove( cache, bitmap ); + } + + NSBitmapImageRep *bmp = (NSBitmapImageRep *)bitmap; + [bmp release]; +} + +void *bitmap_create(int width, int height, unsigned int state) +{ + NSBitmapImageRep *bmp = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes: NULL + pixelsWide: width + pixelsHigh: height + bitsPerSample: BITS_PER_SAMPLE + samplesPerPixel: SAMPLES_PER_PIXEL + hasAlpha: YES + isPlanar: NO + colorSpaceName: NSDeviceRGBColorSpace + bitmapFormat: NSAlphaNonpremultipliedBitmapFormat + bytesPerRow: BYTES_PER_PIXEL * width + bitsPerPixel: BITS_PER_PIXEL]; + + return bmp; +} + +void bitmap_set_opaque(void *bitmap, bool opaque) +{ + NSCParameterAssert( NULL != bitmap ); + NSBitmapImageRep *bmp = (NSBitmapImageRep *)bitmap; + [bmp setOpaque: opaque ? YES : NO]; +} + +bool bitmap_test_opaque(void *bitmap) +{ + NSCParameterAssert( bitmap_get_bpp( bitmap ) == BITS_PER_PIXEL ); + + unsigned char *buf = bitmap_get_buffer( bitmap ); + + const size_t height = bitmap_get_height( bitmap ); + const size_t width = bitmap_get_width( bitmap ); + + const size_t line_step = bitmap_get_rowstride( bitmap ) - BYTES_PER_PIXEL * width; + + for (size_t y = 0; y < height; y++) { + for (size_t x = 0; x < height; x++) { + if (buf[ALPHA_OFFSET] != 0xFF) return false; + buf += BYTES_PER_PIXEL; + } + buf += line_step; + } + + return true; +} + +unsigned char *bitmap_get_buffer(void *bitmap) +{ + NSCParameterAssert( NULL != bitmap ); + NSBitmapImageRep *bmp = (NSBitmapImageRep *)bitmap; + return [bmp bitmapData]; +} + +size_t bitmap_get_rowstride(void *bitmap) +{ + NSCParameterAssert( NULL != bitmap ); + NSBitmapImageRep *bmp = (NSBitmapImageRep *)bitmap; + return [bmp bytesPerRow]; +} + +size_t bitmap_get_bpp(void *bitmap) +{ + NSCParameterAssert( NULL != bitmap ); + NSBitmapImageRep *bmp = (NSBitmapImageRep *)bitmap; + return [bmp bitsPerPixel]; +} + +bool bitmap_save(void *bitmap, const char *path, unsigned flags) +{ + NSCParameterAssert( NULL != bitmap ); + NSBitmapImageRep *bmp = (NSBitmapImageRep *)bitmap; + + NSData *tiff = [bmp TIFFRepresentation]; + return [tiff writeToFile: [NSString stringWithUTF8String: path] atomically: YES]; +} + +void bitmap_modified(void *bitmap) +{ + NSMapTable *cache = cocoa_get_bitmap_cache(); + CGImageRef image = NSMapGet( cache, bitmap ); + if (NULL != image) { + CGImageRelease( image ); + NSMapRemove( cache, bitmap ); + } +} + +void bitmap_set_suspendable(void *bitmap, void *private_word, + void (*invalidate)(void *bitmap, void *private_word)) + +{ + // nothing to do +} + +CGImageRef cocoa_get_cgimage( void *bitmap ) +{ + NSMapTable *cache = cocoa_get_bitmap_cache(); + + CGImageRef result = NSMapGet( cache, bitmap ); + if (NULL == result) { + result = cocoa_prepare_bitmap( bitmap ); + NSMapInsertKnownAbsent( cache, bitmap, result ); + } + + return result; +} + +static inline NSMapTable *cocoa_get_bitmap_cache() +{ + static NSMapTable *cache = nil; + if (cache == nil) { + cache = NSCreateMapTable( NSNonOwnedPointerMapKeyCallBacks, NSNonOwnedPointerMapValueCallBacks, 0 ); + } + return cache; +} + +static CGImageRef cocoa_prepare_bitmap( void *bitmap ) +{ + NSCParameterAssert( NULL != bitmap ); + + NSBitmapImageRep *bmp = (NSBitmapImageRep *)bitmap; + + size_t w = [bmp pixelsWide]; + size_t h = [bmp pixelsHigh]; + + CGImageRef original = [bmp CGImage]; + + if (h <= 1) return CGImageRetain( original ); + + void *data = malloc( 4 * w * h ); + + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextRef context = CGBitmapContextCreate( data, w, h, BITS_PER_SAMPLE, + BYTES_PER_PIXEL * w, colorSpace, + [bmp isOpaque] ? kCGImageAlphaNoneSkipLast + : kCGImageAlphaPremultipliedLast ); + CGColorSpaceRelease( colorSpace ); + + CGContextTranslateCTM( context, 0.0, h ); + CGContextScaleCTM( context, 1.0, -1.0 ); + + CGRect rect = CGRectMake( 0, 0, w, h ); + CGContextClearRect( context, rect ); + CGContextDrawImage( context, rect, original ); + + CGImageRef result = CGBitmapContextCreateImage( context ); + + CGContextRelease( context ); + free( data ); + + return result; +} + diff --git a/cocoa/fetch.m b/cocoa/fetch.m new file mode 100644 index 000000000..7ad862b8b --- /dev/null +++ b/cocoa/fetch.m @@ -0,0 +1,57 @@ +/* + * Copyright 2003 James Bursa <bursa@users.sourceforge.net> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <stdlib.h> +#include <string.h> +#include "content/fetch.h" +#include "utils/log.h" +#include "utils/utils.h" + +/** + * filetype -- determine the MIME type of a local file + */ + +const char *fetch_filetype(const char *unix_path) +{ + int l; + LOG(("unix path %s", unix_path)); + l = strlen(unix_path); + if (2 < l && strcasecmp(unix_path + l - 3, "css") == 0) + return "text/css"; + if (2 < l && strcasecmp(unix_path + l - 3, "jpg") == 0) + return "image/jpeg"; + if (3 < l && strcasecmp(unix_path + l - 4, "jpeg") == 0) + return "image/jpeg"; + if (2 < l && strcasecmp(unix_path + l - 3, "gif") == 0) + return "image/gif"; + if (2 < l && strcasecmp(unix_path + l - 3, "png") == 0) + return "image/png"; + if (2 < l && strcasecmp(unix_path + l - 3, "jng") == 0) + return "image/jng"; + if (2 < l && strcasecmp(unix_path + l - 3, "svg") == 0) + return "image/svg"; + if (2 < l && strcasecmp(unix_path + l - 3, "bmp") == 0) + return "image/x-ms-bmp"; + return "text/html"; +} + + +char *fetch_mimetype(const char *ro_path) +{ + return strdup("text/plain"); +} diff --git a/cocoa/font.h b/cocoa/font.h new file mode 100644 index 000000000..b65d62844 --- /dev/null +++ b/cocoa/font.h @@ -0,0 +1,24 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef COCOA_FONT_H +#define COCOA_FONT_H + +void cocoa_draw_string( int x, int y, const char *bytes, size_t length, const plot_font_style_t *style ); + +#endif diff --git a/cocoa/font.m b/cocoa/font.m new file mode 100644 index 000000000..634bbb7c5 --- /dev/null +++ b/cocoa/font.m @@ -0,0 +1,177 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import <Cocoa/Cocoa.h> + +#include <inttypes.h> + +#include <assert.h> + +#include "css/css.h" +#include "render/font.h" +#include "desktop/options.h" + +#import "font.h" +#import "plotter.h" + +static NSLayoutManager *cocoa_prepare_layout_manager( const char *string, size_t length, + const plot_font_style_t *style ); +static NSTextStorage *cocoa_text_storage = nil; +static NSTextContainer *cocoa_text_container = nil; + +static bool nsfont_width(const plot_font_style_t *style, + const char *string, size_t length, + int *width) +{ + NSCParameterAssert( NULL != width ); + + NSLayoutManager *layout = cocoa_prepare_layout_manager( string, length, style ); + *width = NULL != layout ? NSWidth( [layout usedRectForTextContainer: cocoa_text_container] ) : 0; + return true; +} + +static bool nsfont_position_in_string(const plot_font_style_t *style, + const char *string, size_t length, + int x, size_t *char_offset, int *actual_x) +{ + NSLayoutManager *layout = cocoa_prepare_layout_manager( string, length, style ); + NSUInteger glyphIndex = [layout glyphIndexForPoint: NSMakePoint( x, 0 ) + inTextContainer: cocoa_text_container + fractionOfDistanceThroughGlyph: NULL]; + NSUInteger chars = [layout characterIndexForGlyphAtIndex: glyphIndex]; + + size_t offset = 0; + while (chars > 0) { + uint8_t ch = ((uint8_t *)string)[offset]; + + if (0xC2 <= ch && ch <= 0xDF) offset += 2; + else if (0xE0 <= ch && ch <= 0xEF) offset += 3; + else if (0xF0 <= ch && ch <= 0xF4) offset += 4; + else offset++; + + --chars; + } + + *char_offset = offset; + *actual_x = [layout locationForGlyphAtIndex: glyphIndex].x; + + return true; +} + +static bool nsfont_split(const plot_font_style_t *style, + const char *string, size_t length, + int x, size_t *char_offset, int *actual_x) +{ + nsfont_position_in_string(style, string, length, x, char_offset, + actual_x); + if (*char_offset == length) return true; + + while ((string[*char_offset] != ' ') && (*char_offset > 0)) + (*char_offset)--; + + return true; +} + + +static NSString *cocoa_font_family_name( plot_font_generic_family_t family ) +{ + switch (family) { + case PLOT_FONT_FAMILY_SERIF: return @"Times"; + case PLOT_FONT_FAMILY_SANS_SERIF: return @"Helvetica"; + case PLOT_FONT_FAMILY_MONOSPACE: return @"Courier"; + case PLOT_FONT_FAMILY_CURSIVE: return @"Apple Chancery"; + case PLOT_FONT_FAMILY_FANTASY: return @"Marker Felt"; + default: return nil; + } +} + +static NSFont *cocoa_font_get_nsfont( const plot_font_style_t *style ) +{ + return [NSFont fontWithName: cocoa_font_family_name( style->family ) + size: (CGFloat)style->size / FONT_SIZE_SCALE]; +} + +NSDictionary *cocoa_font_attributes( const plot_font_style_t *style ) +{ + return [NSDictionary dictionaryWithObjectsAndKeys: + cocoa_font_get_nsfont( style ), NSFontAttributeName, + cocoa_convert_colour( style->foreground ), NSForegroundColorAttributeName, + nil]; +} + +static NSString *cocoa_string_from_utf8_characters( const char *string, size_t characters ) +{ + if (NULL == string || 0 == characters) return nil; + + return [[[NSString alloc] initWithBytes: string length:characters encoding:NSUTF8StringEncoding] autorelease]; +} + + +static NSLayoutManager *cocoa_prepare_layout_manager( const char *bytes, size_t length, + const plot_font_style_t *style ) +{ + if (NULL == bytes || 0 == length) return nil; + + static NSLayoutManager *layout = nil; + + if (nil == layout) { + cocoa_text_container = [[NSTextContainer alloc] initWithContainerSize: NSMakeSize( CGFLOAT_MAX, CGFLOAT_MAX )]; + [cocoa_text_container setLineFragmentPadding: 0]; + + layout = [[NSLayoutManager alloc] init]; + [layout addTextContainer: cocoa_text_container]; + + cocoa_text_storage = [[NSTextStorage alloc] init]; + [cocoa_text_storage addLayoutManager: layout]; + } + + + NSString *string = cocoa_string_from_utf8_characters( bytes, length ); + if (nil == string) return nil; + + NSDictionary *attributes = cocoa_font_attributes( style ); + NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString: string attributes: attributes]; + if (![attributedString isEqualToAttributedString: cocoa_text_storage]) { + [cocoa_text_storage setAttributedString: attributedString]; + [layout ensureLayoutForTextContainer: cocoa_text_container]; + } + [attributedString release]; + + + return layout; +} + +void cocoa_draw_string( int x, int y, const char *bytes, size_t length, const plot_font_style_t *style ) +{ + NSLayoutManager *layout = cocoa_prepare_layout_manager( bytes, length, style ); + + if ([cocoa_text_storage length] > 0) { + NSFont *font = [cocoa_text_storage attribute: NSFontAttributeName atIndex: 0 effectiveRange: NULL]; + CGFloat baseline = [layout defaultBaselineOffsetForFont: font]; + + NSRange glyphRange = [layout glyphRangeForTextContainer: cocoa_text_container]; + [layout drawGlyphsForGlyphRange: glyphRange atPoint: NSMakePoint( x, y - baseline )]; + } +} + +const struct font_functions nsfont = { + nsfont_width, + nsfont_position_in_string, + nsfont_split +}; + diff --git a/cocoa/gui.m b/cocoa/gui.m new file mode 100644 index 000000000..d7e5b8f79 --- /dev/null +++ b/cocoa/gui.m @@ -0,0 +1,391 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import <Cocoa/Cocoa.h> + +#import "BrowserWindow.h" +#import "BrowserView.h" + +#import "desktop/gui.h" +#import "desktop/netsurf.h" +#import "desktop/browser.h" + +char *default_stylesheet_url; +char *adblock_stylesheet_url; +char *quirks_stylesheet_url; + +#define UNIMPL() NSLog( @"Function '%s' unimplemented", __func__ ) + +void gui_multitask(void) +{ + // nothing to do +} + +static NSAutoreleasePool *gui_pool = nil; +void gui_poll(bool active) +{ + [gui_pool release]; + gui_pool = [[NSAutoreleasePool alloc] init]; + + NSEvent *event = [NSApp nextEventMatchingMask: NSAnyEventMask untilDate: active ? nil : [NSDate distantFuture] + inMode: NSDefaultRunLoopMode dequeue: YES]; + + if (nil != event) [NSApp sendEvent: event]; + + [NSApp updateWindows]; +} + +void gui_quit(void) +{ + // nothing to do +} + +struct browser_window; + +struct gui_window *gui_create_browser_window(struct browser_window *bw, + struct browser_window *clone, bool new_tab) +{ + return (struct gui_window *)[[BrowserWindow alloc] initWithBrowser: bw]; +} + +struct browser_window *gui_window_get_browser_window(struct gui_window *g) +{ + return [(BrowserWindow *)g browser]; +} + +void gui_window_destroy(struct gui_window *g) +{ + [(BrowserWindow *)g release]; +} + +void gui_window_set_title(struct gui_window *g, const char *title) +{ + [[(BrowserWindow *)g window] setTitle: [NSString stringWithUTF8String: title]]; +} + +void gui_window_redraw(struct gui_window *g, int x0, int y0, int x1, int y1) +{ + NSRect rect = NSMakeRect( x0, y0, x1 - x0, y1 - y0 ); + [[(BrowserWindow *)g view] setNeedsDisplayInRect: rect]; +} + +void gui_window_redraw_window(struct gui_window *g) +{ + [[(BrowserWindow *)g view] setNeedsDisplay: YES]; +} + +void gui_window_update_box(struct gui_window *g, + const union content_msg_data *data) +{ + gui_window_redraw( g, data->redraw.x, data->redraw.y, + data->redraw.x + data->redraw.width, + data->redraw.y + data->redraw.height ); +} + +bool gui_window_get_scroll(struct gui_window *g, int *sx, int *sy) +{ + NSCParameterAssert( g != NULL && sx != NULL && sy != NULL ); + + NSRect visible = [[(BrowserWindow *)g view] visibleRect]; + *sx = NSMinX( visible ); + *sy = NSMinY( visible ); + return true; +} + +void gui_window_set_scroll(struct gui_window *g, int sx, int sy) +{ + [[(BrowserWindow *)g view] scrollPoint: NSMakePoint( sx, sy )]; +} + +void gui_window_scroll_visible(struct gui_window *g, int x0, int y0, + int x1, int y1) +{ + gui_window_set_scroll( g, x0, y0 ); +} + +void gui_window_position_frame(struct gui_window *g, int x0, int y0, + int x1, int y1) +{ + UNIMPL(); +} + +void gui_window_get_dimensions(struct gui_window *g, int *width, int *height, + bool scaled) +{ + NSCParameterAssert( width != NULL && height != NULL ); + + NSRect frame = [[(BrowserWindow *)g view] frame]; + *width = NSWidth( frame ); + *height = NSHeight( frame ); +} + +void gui_window_update_extent(struct gui_window *g) +{ + BrowserWindow * const window = (BrowserWindow *)g; + struct browser_window *browser = [window browser]; + int width = content_get_width( browser->current_content ) * browser->scale; + int height = content_get_height( browser->current_content ) * browser->scale; + + [[window view] setFrameSize: NSMakeSize( width, height )]; +} + +void gui_window_set_status(struct gui_window *g, const char *text) +{ + [[(BrowserWindow *)g view] setStatus: [NSString stringWithUTF8String: text]]; +} + +void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape) +{ + switch (shape) { + case GUI_POINTER_DEFAULT: + case GUI_POINTER_WAIT: + case GUI_POINTER_PROGRESS: + [[NSCursor arrowCursor] set]; + break; + + case GUI_POINTER_CROSS: + [[NSCursor crosshairCursor] set]; + break; + + case GUI_POINTER_POINT: + [[NSCursor pointingHandCursor] set]; + break; + + case GUI_POINTER_CARET: + [[NSCursor IBeamCursor] set]; + break; + + default: + NSLog( @"Other cursor %d requested", shape ); + [[NSCursor arrowCursor] set]; + break; + } +} + +void gui_window_hide_pointer(struct gui_window *g) +{ +} + +void gui_window_set_url(struct gui_window *g, const char *url) +{ + [(BrowserWindow *)g setUrl: [NSString stringWithUTF8String: url]]; +} + +void gui_window_start_throbber(struct gui_window *g) +{ + [[(BrowserWindow *)g view] setSpinning: YES]; +} + +void gui_window_stop_throbber(struct gui_window *g) +{ + [[(BrowserWindow *)g view] setSpinning: NO]; +} + +void gui_window_set_icon(struct gui_window *g, hlcache_handle *icon) +{ + // ignore +} + +void gui_window_set_search_ico(hlcache_handle *ico) +{ + UNIMPL(); +} + +void gui_window_place_caret(struct gui_window *g, int x, int y, int height) +{ + [[(BrowserWindow *)g view] addCaretAt: NSMakePoint( x, y ) height: height]; +} + +void gui_window_remove_caret(struct gui_window *g) +{ + [[(BrowserWindow *)g view] removeCaret]; +} + +void gui_window_new_content(struct gui_window *g) +{ +} + +bool gui_window_scroll_start(struct gui_window *g) +{ + return true; +} + +bool gui_window_box_scroll_start(struct gui_window *g, + int x0, int y0, int x1, int y1) +{ + return true; +} + +bool gui_window_frame_resize_start(struct gui_window *g) +{ + UNIMPL(); + return false; +} + +void gui_window_save_link(struct gui_window *g, const char *url, + const char *title) +{ + UNIMPL(); +} + +void gui_window_set_scale(struct gui_window *g, float scale) +{ + UNIMPL(); +} + + +struct gui_download_window *gui_download_window_create(download_context *ctx, + struct gui_window *parent) +{ + UNIMPL(); + return NULL; +} + +nserror gui_download_window_data(struct gui_download_window *dw, + const char *data, unsigned int size) +{ + UNIMPL(); + return 0; +} + +void gui_download_window_error(struct gui_download_window *dw, + const char *error_msg) +{ + UNIMPL(); +} + +void gui_download_window_done(struct gui_download_window *dw) +{ + UNIMPL(); +} + + +void gui_drag_save_object(gui_save_type type, hlcache_handle *c, + struct gui_window *g) +{ +} + +void gui_drag_save_selection(struct selection *s, struct gui_window *g) +{ +} + +void gui_start_selection(struct gui_window *g) +{ +} + +void gui_clear_selection(struct gui_window *g) +{ +} + + +void gui_paste_from_clipboard(struct gui_window *g, int x, int y) +{ + UNIMPL(); +} + +bool gui_empty_clipboard(void) +{ + return false; +} + +bool gui_add_to_clipboard(const char *text, size_t length, bool space) +{ + UNIMPL(); + return false; +} + +bool gui_commit_clipboard(void) +{ + UNIMPL(); + return false; +} + +bool gui_copy_to_clipboard(struct selection *s) +{ + UNIMPL(); + return false; +} + + +void gui_create_form_select_menu(struct browser_window *bw, + struct form_control *control) +{ + UNIMPL(); +} + + +void gui_launch_url(const char *url) +{ + UNIMPL(); +} + + + +struct ssl_cert_info; + +void gui_cert_verify(const char *url, const struct ssl_cert_info *certs, + unsigned long num, nserror (*cb)(bool proceed, void *pw), + void *cbpw) +{ + cb( false, cbpw ); +} + + +void gui_401login_open(const char *url, const char *realm, + nserror (*cb)(bool proceed, void *pw), void *cbpw) +{ + cb( false, cbpw ); +} + +static char *gui_get_resource_url( NSString *name, NSString *type ) +{ + NSString *path = [[NSBundle mainBundle] pathForResource: name ofType: type]; + return strdup( [[[NSURL fileURLWithPath: path] absoluteString] UTF8String] ); +} + +int main( int argc, char **argv ) +{ + char options[PATH_MAX]; + + gui_pool = [[NSAutoreleasePool alloc] init]; + + const char * const messages = [[[NSBundle mainBundle] pathForResource: @"messages" ofType: nil] UTF8String]; + default_stylesheet_url = gui_get_resource_url( @"default", @"css" ); + quirks_stylesheet_url = gui_get_resource_url( @"quirks", @"css" ); + adblock_stylesheet_url = gui_get_resource_url( @"adblock", @"css" ); + + /* initialise netsurf */ + netsurf_init(&argc, &argv, options, messages); + + NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; + Class principalClass = NSClassFromString([infoDictionary objectForKey:@"NSPrincipalClass"]); + NSCAssert([principalClass respondsToSelector:@selector(sharedApplication)], @"Principal class must implement sharedApplication."); + [principalClass sharedApplication]; + + NSString *mainNibName = [infoDictionary objectForKey:@"NSMainNibFile"]; + NSNib *mainNib = [[NSNib alloc] initWithNibNamed:mainNibName bundle:[NSBundle mainBundle]]; + [mainNib instantiateNibWithOwner:NSApp topLevelObjects:nil]; + [mainNib release]; + + [NSApp performSelectorOnMainThread:@selector(run) withObject:nil waitUntilDone:YES]; + + netsurf_exit(); + + return 0; +} + diff --git a/cocoa/history.m b/cocoa/history.m new file mode 100644 index 000000000..63b53a13c --- /dev/null +++ b/cocoa/history.m @@ -0,0 +1,37 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import "desktop/browser.h" + +#import <Cocoa/Cocoa.h> + +#define UNIMPL() NSLog( @"Function '%s' unimplemented", __func__ ) + + +void global_history_add_recent(const char *url) +{ + UNIMPL(); +} + +char **global_history_get_recent(int *count) +{ + UNIMPL(); + return NULL; +} + + diff --git a/cocoa/plotter.h b/cocoa/plotter.h new file mode 100644 index 000000000..1b3f1e1be --- /dev/null +++ b/cocoa/plotter.h @@ -0,0 +1,24 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef COCOA_PLOTTER_H +#define COCOA_PLOTTER_H + +NSColor *cocoa_convert_colour( colour clr ); + +#endif diff --git a/cocoa/plotter.m b/cocoa/plotter.m new file mode 100644 index 000000000..a7652e9ed --- /dev/null +++ b/cocoa/plotter.m @@ -0,0 +1,223 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <Cocoa/Cocoa.h> + +#include "desktop/plotters.h" +#import "desktop/plot_style.h" + +#import "cocoa/font.h" +#import "cocoa/plotter.h" +#import "cocoa/bitmap.h" + +#define UNIMPL() NSLog( @"Function '%s' unimplemented", __func__ ) + +static void cocoa_plot_render_path(NSBezierPath *path,const plot_style_t *pstyle); +static void cocoa_plot_path_set_stroke_pattern(NSBezierPath *path,const plot_style_t *pstyle); +static NSRect cocoa_plot_clip_rect; + +#define colour_red_component( c ) (((c) >> 0) & 0xFF) +#define colour_green_component( c ) (((c) >> 8) & 0xFF) +#define colour_blue_component( c ) (((c) >> 16) & 0xFF) +#define colour_alpha_component( c ) (((c) >> 24) & 0xFF) +#define colour_from_rgba( r, g, b, a) ((((colour)(r)) << 0) | \ + (((colour)(g)) << 8) | \ + (((colour)(b)) << 16) | \ + (((colour)(a)) << 24)) +#define colour_from_rgb( r, g, b ) colour_from_rgba( (r), (g), (b), 0xFF ) + +NSColor *cocoa_convert_colour( colour clr ) +{ + return [NSColor colorWithDeviceRed: (float)colour_red_component( clr ) / 0xFF + green: (float)colour_green_component( clr ) / 0xFF + blue: (float)colour_blue_component( clr ) / 0xFF + alpha: 1.0]; +} + +static void cocoa_plot_path_set_stroke_pattern(NSBezierPath *path,const plot_style_t *pstyle) +{ + static const CGFloat dashed_pattern[2] = { 5.0, 2.0 }; + static const CGFloat dotted_pattern[2] = { 2.0, 2.0 }; + + switch (pstyle->stroke_type) { + case PLOT_OP_TYPE_DASH: + [path setLineDash: dashed_pattern count: 2 phase: 0]; + break; + + case PLOT_OP_TYPE_DOT: + [path setLineDash: dotted_pattern count: 2 phase: 0]; + break; + + default: + // ignore + break; + } + + [path setLineWidth: pstyle->stroke_width]; +} + +static bool plot_line(int x0, int y0, int x1, int y1, const plot_style_t *pstyle) +{ + NSBezierPath *path = [NSBezierPath bezierPath]; + [path moveToPoint: NSMakePoint( x0, y0 )]; + [path lineToPoint: NSMakePoint( x1, y1 )]; + + cocoa_plot_render_path( path, pstyle ); + + return true; +} + +static bool plot_rectangle(int x0, int y0, int x1, int y1, const plot_style_t *pstyle) +{ + NSBezierPath *path = [NSBezierPath bezierPathWithRect: NSMakeRect( x0, y0, x1-x0, y1-y0 )]; + + cocoa_plot_render_path( path, pstyle ); + + return true; +} + +static bool plot_text(int x, int y, const char *text, size_t length, + const plot_font_style_t *fstyle) +{ + [NSGraphicsContext saveGraphicsState]; + [NSBezierPath clipRect: cocoa_plot_clip_rect]; + + cocoa_draw_string( x, y, text, length, fstyle ); + + [NSGraphicsContext restoreGraphicsState]; + + return true; +} + + +static bool plot_clip(int x0, int y0, int x1, int y1) +{ + cocoa_plot_clip_rect = NSMakeRect( x0, y0, abs(x1-x0), abs(y1-y0) ); + return true; +} + +void cocoa_plot_render_path(NSBezierPath *path,const plot_style_t *pstyle) +{ + [NSGraphicsContext saveGraphicsState]; + [NSBezierPath clipRect: cocoa_plot_clip_rect]; + + if (pstyle->fill_type != PLOT_OP_TYPE_NONE) { + [cocoa_convert_colour( pstyle->fill_colour ) setFill]; + [path fill]; + } + + if (pstyle->stroke_type != PLOT_OP_TYPE_NONE) { + cocoa_plot_path_set_stroke_pattern(path,pstyle); + + [cocoa_convert_colour( pstyle->stroke_colour ) set]; + + [path stroke]; + } + + [NSGraphicsContext restoreGraphicsState]; +} + +static bool plot_arc(int x, int y, int radius, int angle1, int angle2, const plot_style_t *pstyle) +{ + NSBezierPath *path = [NSBezierPath bezierPath]; + [path appendBezierPathWithArcWithCenter: NSMakePoint( x, y ) radius: radius + startAngle: angle1 endAngle: angle2 + clockwise: NO]; + + cocoa_plot_render_path( path, pstyle); + + return true; +} + +static bool plot_disc(int x, int y, int radius, const plot_style_t *pstyle) +{ + NSBezierPath *path = [NSBezierPath bezierPathWithOvalInRect: + NSMakeRect( x - radius, y-radius, 2*radius, 2*radius )]; + + cocoa_plot_render_path( path, pstyle ); + + return true; +} + +static bool plot_polygon(const int *p, unsigned int n, const plot_style_t *pstyle) +{ + if (n <= 1) return true; + + NSBezierPath *path = [NSBezierPath bezierPath]; + [path moveToPoint: NSMakePoint( p[0], p[1] )]; + for (int i = 1; i < n; i++) { + [path lineToPoint: NSMakePoint( p[2*i], p[2*i+1] )]; + } + [path closePath]; + + cocoa_plot_render_path( path, pstyle ); + + return true; +} + +/* complex path (for SVG) */ +static bool plot_path(const float *p, unsigned int n, colour fill, float width, + colour c, const float transform[6]) +{ + UNIMPL(); + return true; +} + +/* Image */ +static bool plot_bitmap(int x, int y, int width, int height, + struct bitmap *bitmap, colour bg, + bitmap_flags_t flags) +{ + CGContextRef context = [[NSGraphicsContext currentContext] graphicsPort]; + CGContextSaveGState( context ); + + CGContextClipToRect( context, NSRectToCGRect( cocoa_plot_clip_rect ) ); + + const bool tileX = flags & BITMAPF_REPEAT_X; + const bool tileY = flags & BITMAPF_REPEAT_Y; + + CGImageRef img = cocoa_get_cgimage( bitmap ); + + CGRect rect = CGRectMake( x, y, width, height ); + if (tileX || tileY) { + CGContextDrawTiledImage( context, rect, img ); + } else { + CGContextDrawImage( context, rect, img ); + } + + CGContextRestoreGState( context ); + + return true; +} + +struct plotter_table plot = { + .clip = plot_clip, + .arc = plot_arc, + .disc = plot_disc, + .rectangle = plot_rectangle, + .line = plot_line, + .polygon = plot_polygon, + + .path = plot_path, + + .bitmap = plot_bitmap, + + .text = plot_text, + + .option_knockout = true +};
\ No newline at end of file diff --git a/cocoa/res/Browser.xib b/cocoa/res/Browser.xib new file mode 100644 index 000000000..a0cc1a78d --- /dev/null +++ b/cocoa/res/Browser.xib @@ -0,0 +1,989 @@ +<?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">10J567</string> + <string key="IBDocument.InterfaceBuilderVersion">804</string> + <string key="IBDocument.AppKitVersion">1038.35</string> + <string key="IBDocument.HIToolboxVersion">462.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">804</string> + </object> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="38"/> + </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"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys" id="0"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomObject" id="1001"> + <string key="NSClassName">BrowserWindow</string> + </object> + <object class="NSCustomObject" id="1003"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1004"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSWindowTemplate" id="1005"> + <int key="NSWindowStyleMask">15</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{135, 249}, {691, 632}}</string> + <int key="NSWTFlags">544735232</int> + <string key="NSWindowTitle">NetSurf</string> + <string key="NSWindowClass">NSWindow</string> + <object class="NSToolbar" key="NSViewClass" id="392415761"> + <object class="NSMutableString" key="NSToolbarIdentifier"> + <characters key="NS.bytes">10771526-5048-4EBE-984D-B6BEEB6455E1</characters> + </object> + <nil key="NSToolbarDelegate"/> + <bool key="NSToolbarPrefersToBeShown">YES</bool> + <bool key="NSToolbarShowsBaselineSeparator">YES</bool> + <bool key="NSToolbarAllowsUserCustomization">YES</bool> + <bool key="NSToolbarAutosavesConfiguration">NO</bool> + <int key="NSToolbarDisplayMode">2</int> + <int key="NSToolbarSizeMode">1</int> + <object class="NSMutableDictionary" key="NSToolbarIBIdentifiedItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>316FFEF7-FE4B-4054-A233-B48593490A7F</string> + <string>484FB8D5-6AD6-4E75-B60E-CA03FC98EFCD</string> + <string>7EEF129A-ED23-47F1-88E8-B60EAF53C80C</string> + <string>E2E89C48-DD3F-47A5-9E6C-25985A970F69</string> + <string>FA0D0D22-FE0D-4337-A543-E5BB13E4E088</string> + <string>NSToolbarCustomizeToolbarItem</string> + <string>NSToolbarFlexibleSpaceItem</string> + <string>NSToolbarSeparatorItem</string> + <string>NSToolbarSpaceItem</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSToolbarItem" id="702346074"> + <object class="NSMutableString" key="NSToolbarItemIdentifier"> + <characters key="NS.bytes">316FFEF7-FE4B-4054-A233-B48593490A7F</characters> + </object> + <string key="NSToolbarItemLabel">Go back</string> + <string key="NSToolbarItemPaletteLabel">Go back</string> + <string key="NSToolbarItemToolTip"/> + <nil key="NSToolbarItemView"/> + <object class="NSCustomResource" key="NSToolbarItemImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSGoLeftTemplate</string> + </object> + <nil key="NSToolbarItemTarget"/> + <nil key="NSToolbarItemAction"/> + <string key="NSToolbarItemMinSize">{0, 0}</string> + <string key="NSToolbarItemMaxSize">{0, 0}</string> + <bool key="NSToolbarItemEnabled">YES</bool> + <bool key="NSToolbarItemAutovalidates">YES</bool> + <int key="NSToolbarItemTag">-1</int> + <bool key="NSToolbarIsUserRemovable">YES</bool> + <int key="NSToolbarItemVisibilityPriority">0</int> + </object> + <object class="NSToolbarItem" id="525444158"> + <object class="NSMutableString" key="NSToolbarItemIdentifier"> + <characters key="NS.bytes">484FB8D5-6AD6-4E75-B60E-CA03FC98EFCD</characters> + </object> + <string key="NSToolbarItemLabel">Go forward</string> + <string key="NSToolbarItemPaletteLabel">Go forward</string> + <string key="NSToolbarItemToolTip"/> + <nil key="NSToolbarItemView"/> + <object class="NSCustomResource" key="NSToolbarItemImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSGoRightTemplate</string> + </object> + <nil key="NSToolbarItemTarget"/> + <nil key="NSToolbarItemAction"/> + <string key="NSToolbarItemMinSize">{0, 0}</string> + <string key="NSToolbarItemMaxSize">{0, 0}</string> + <bool key="NSToolbarItemEnabled">YES</bool> + <bool key="NSToolbarItemAutovalidates">YES</bool> + <int key="NSToolbarItemTag">-1</int> + <bool key="NSToolbarIsUserRemovable">YES</bool> + <int key="NSToolbarItemVisibilityPriority">0</int> + </object> + <object class="NSToolbarItem" id="734074974"> + <object class="NSMutableString" key="NSToolbarItemIdentifier"> + <characters key="NS.bytes">7EEF129A-ED23-47F1-88E8-B60EAF53C80C</characters> + </object> + <string key="NSToolbarItemLabel">Reload</string> + <string key="NSToolbarItemPaletteLabel">Reload</string> + <string key="NSToolbarItemToolTip"/> + <nil key="NSToolbarItemView"/> + <object class="NSCustomResource" key="NSToolbarItemImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSRefreshTemplate</string> + </object> + <nil key="NSToolbarItemTarget"/> + <nil key="NSToolbarItemAction"/> + <string key="NSToolbarItemMinSize">{0, 0}</string> + <string key="NSToolbarItemMaxSize">{0, 0}</string> + <bool key="NSToolbarItemEnabled">YES</bool> + <bool key="NSToolbarItemAutovalidates">YES</bool> + <int key="NSToolbarItemTag">-1</int> + <bool key="NSToolbarIsUserRemovable">YES</bool> + <int key="NSToolbarItemVisibilityPriority">0</int> + </object> + <object class="NSToolbarItem" id="784507185"> + <object class="NSMutableString" key="NSToolbarItemIdentifier"> + <characters key="NS.bytes">E2E89C48-DD3F-47A5-9E6C-25985A970F69</characters> + </object> + <string key="NSToolbarItemLabel"/> + <string key="NSToolbarItemPaletteLabel">URL</string> + <nil key="NSToolbarItemToolTip"/> + <object class="NSTextField" key="NSToolbarItemView" id="570769942"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{0, 14}, {96, 22}}</string> + <reference key="NSSuperview"/> + <reference key="NSWindow"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="465639940"> + <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents"/> + <object class="NSFont" key="NSSupport"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">13</double> + <int key="NSfFlags">1044</int> + </object> + <reference key="NSControlView" ref="570769942"/> + <bool key="NSDrawsBackground">YES</bool> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textBackgroundColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MQA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textColor</string> + <object class="NSColor" key="NSColor" id="791352603"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MAA</bytes> + </object> + </object> + </object> + </object> + <nil key="NSToolbarItemImage"/> + <nil key="NSToolbarItemTarget"/> + <nil key="NSToolbarItemAction"/> + <string key="NSToolbarItemMinSize">{96, 22}</string> + <string key="NSToolbarItemMaxSize">{10000, 22}</string> + <bool key="NSToolbarItemEnabled">YES</bool> + <bool key="NSToolbarItemAutovalidates">YES</bool> + <int key="NSToolbarItemTag">0</int> + <bool key="NSToolbarIsUserRemovable">YES</bool> + <int key="NSToolbarItemVisibilityPriority">0</int> + </object> + <object class="NSToolbarItem" id="955202223"> + <object class="NSMutableString" key="NSToolbarItemIdentifier"> + <characters key="NS.bytes">FA0D0D22-FE0D-4337-A543-E5BB13E4E088</characters> + </object> + <string key="NSToolbarItemLabel">History</string> + <string key="NSToolbarItemPaletteLabel">History</string> + <string key="NSToolbarItemToolTip"/> + <nil key="NSToolbarItemView"/> + <object class="NSCustomResource" key="NSToolbarItemImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMultipleDocuments</string> + </object> + <nil key="NSToolbarItemTarget"/> + <nil key="NSToolbarItemAction"/> + <string key="NSToolbarItemMinSize">{0, 0}</string> + <string key="NSToolbarItemMaxSize">{0, 0}</string> + <bool key="NSToolbarItemEnabled">YES</bool> + <bool key="NSToolbarItemAutovalidates">YES</bool> + <int key="NSToolbarItemTag">-1</int> + <bool key="NSToolbarIsUserRemovable">YES</bool> + <int key="NSToolbarItemVisibilityPriority">0</int> + </object> + <object class="NSToolbarItem" id="554531361"> + <string key="NSToolbarItemIdentifier">NSToolbarCustomizeToolbarItem</string> + <string key="NSToolbarItemLabel">Customize</string> + <string key="NSToolbarItemPaletteLabel">Customize</string> + <string key="NSToolbarItemToolTip">Customize Toolbar</string> + <nil key="NSToolbarItemView"/> + <object class="NSCustomResource" key="NSToolbarItemImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSToolbarCustomizeToolbarItemImage</string> + </object> + <nil key="NSToolbarItemTarget"/> + <string key="NSToolbarItemAction">runToolbarCustomizationPalette:</string> + <string key="NSToolbarItemMinSize">{0, 0}</string> + <string key="NSToolbarItemMaxSize">{0, 0}</string> + <bool key="NSToolbarItemEnabled">YES</bool> + <bool key="NSToolbarItemAutovalidates">YES</bool> + <int key="NSToolbarItemTag">-1</int> + <bool key="NSToolbarIsUserRemovable">YES</bool> + <int key="NSToolbarItemVisibilityPriority">0</int> + </object> + <object class="NSToolbarFlexibleSpaceItem" id="481399099"> + <string key="NSToolbarItemIdentifier">NSToolbarFlexibleSpaceItem</string> + <string key="NSToolbarItemLabel"/> + <string key="NSToolbarItemPaletteLabel">Flexible Space</string> + <nil key="NSToolbarItemToolTip"/> + <nil key="NSToolbarItemView"/> + <nil key="NSToolbarItemImage"/> + <nil key="NSToolbarItemTarget"/> + <nil key="NSToolbarItemAction"/> + <string key="NSToolbarItemMinSize">{1, 5}</string> + <string key="NSToolbarItemMaxSize">{20000, 32}</string> + <bool key="NSToolbarItemEnabled">YES</bool> + <bool key="NSToolbarItemAutovalidates">YES</bool> + <int key="NSToolbarItemTag">-1</int> + <bool key="NSToolbarIsUserRemovable">YES</bool> + <int key="NSToolbarItemVisibilityPriority">0</int> + <object class="NSMenuItem" key="NSToolbarItemMenuFormRepresentation"> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <object class="NSCustomResource" key="NSOnImage" id="437280079"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuCheckmark</string> + </object> + <object class="NSCustomResource" key="NSMixedImage" id="563857027"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuMixedState</string> + </object> + </object> + </object> + <object class="NSToolbarSeparatorItem" id="1049725992"> + <string key="NSToolbarItemIdentifier">NSToolbarSeparatorItem</string> + <string key="NSToolbarItemLabel"/> + <string key="NSToolbarItemPaletteLabel">Separator</string> + <nil key="NSToolbarItemToolTip"/> + <nil key="NSToolbarItemView"/> + <nil key="NSToolbarItemImage"/> + <nil key="NSToolbarItemTarget"/> + <nil key="NSToolbarItemAction"/> + <string key="NSToolbarItemMinSize">{12, 5}</string> + <string key="NSToolbarItemMaxSize">{12, 1000}</string> + <bool key="NSToolbarItemEnabled">YES</bool> + <bool key="NSToolbarItemAutovalidates">YES</bool> + <int key="NSToolbarItemTag">-1</int> + <bool key="NSToolbarIsUserRemovable">YES</bool> + <int key="NSToolbarItemVisibilityPriority">0</int> + <object class="NSMenuItem" key="NSToolbarItemMenuFormRepresentation"> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="437280079"/> + <reference key="NSMixedImage" ref="563857027"/> + </object> + </object> + <object class="NSToolbarSpaceItem" id="191318475"> + <string key="NSToolbarItemIdentifier">NSToolbarSpaceItem</string> + <string key="NSToolbarItemLabel"/> + <string key="NSToolbarItemPaletteLabel">Space</string> + <nil key="NSToolbarItemToolTip"/> + <nil key="NSToolbarItemView"/> + <nil key="NSToolbarItemImage"/> + <nil key="NSToolbarItemTarget"/> + <nil key="NSToolbarItemAction"/> + <string key="NSToolbarItemMinSize">{32, 5}</string> + <string key="NSToolbarItemMaxSize">{32, 32}</string> + <bool key="NSToolbarItemEnabled">YES</bool> + <bool key="NSToolbarItemAutovalidates">YES</bool> + <int key="NSToolbarItemTag">-1</int> + <bool key="NSToolbarIsUserRemovable">YES</bool> + <int key="NSToolbarItemVisibilityPriority">0</int> + <object class="NSMenuItem" key="NSToolbarItemMenuFormRepresentation"> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="437280079"/> + <reference key="NSMixedImage" ref="563857027"/> + </object> + </object> + </object> + </object> + <object class="NSArray" key="NSToolbarIBAllowedItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="702346074"/> + <reference ref="525444158"/> + <reference ref="784507185"/> + <reference ref="1049725992"/> + <reference ref="191318475"/> + <reference ref="481399099"/> + <reference ref="554531361"/> + <reference ref="955202223"/> + <reference ref="734074974"/> + </object> + <object class="NSMutableArray" key="NSToolbarIBDefaultItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="702346074"/> + <reference ref="734074974"/> + <reference ref="525444158"/> + <reference ref="1049725992"/> + <reference ref="784507185"/> + </object> + <object class="NSMutableArray" key="NSToolbarIBSelectableItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <object class="NSView" key="NSWindowView" id="1006"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">256</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSScrollView" id="299449310"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSClipView" id="230262136"> + <reference key="NSNextResponder" ref="299449310"/> + <int key="NSvFlags">2304</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomView" id="947292612"> + <reference key="NSNextResponder" ref="230262136"/> + <int key="NSvFlags">274</int> + <string key="NSFrameSize">{676, 597}</string> + <reference key="NSSuperview" ref="230262136"/> + <string key="NSClassName">BrowserView</string> + </object> + </object> + <string key="NSFrame">{{1, 1}, {676, 597}}</string> + <reference key="NSSuperview" ref="299449310"/> + <reference key="NSNextKeyView" ref="947292612"/> + <reference key="NSDocView" ref="947292612"/> + <object class="NSColor" key="NSBGColor" id="994333793"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> + </object> + </object> + <int key="NScvFlags">4</int> + </object> + <object class="NSScroller" id="217278618"> + <reference key="NSNextResponder" ref="299449310"/> + <int key="NSvFlags">256</int> + <string key="NSFrame">{{677, 1}, {15, 597}}</string> + <reference key="NSSuperview" ref="299449310"/> + <reference key="NSTarget" ref="299449310"/> + <string key="NSAction">_doScroller:</string> + <double key="NSCurValue">1</double> + <double key="NSPercent">0.96363627910614014</double> + </object> + <object class="NSScroller" id="837576252"> + <reference key="NSNextResponder" ref="299449310"/> + <int key="NSvFlags">256</int> + <string key="NSFrame">{{1, 598}, {676, 15}}</string> + <reference key="NSSuperview" ref="299449310"/> + <int key="NSsFlags">1</int> + <reference key="NSTarget" ref="299449310"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">0.50602412223815918</double> + </object> + </object> + <string key="NSFrame">{{-1, 19}, {693, 614}}</string> + <reference key="NSSuperview" ref="1006"/> + <reference key="NSNextKeyView" ref="230262136"/> + <int key="NSsFlags">50</int> + <reference key="NSVScroller" ref="217278618"/> + <reference key="NSHScroller" ref="837576252"/> + <reference key="NSContentView" ref="230262136"/> + </object> + <object class="NSTextField" id="1055532139"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">290</int> + <string key="NSFrame">{{27, 3}, {647, 14}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="559666362"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272761856</int> + <string key="NSContents">NetSurf</string> + <object class="NSFont" key="NSSupport"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">11</double> + <int key="NSfFlags">3100</int> + </object> + <reference key="NSControlView" ref="1055532139"/> + <reference key="NSBackgroundColor" ref="994333793"/> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlTextColor</string> + <reference key="NSColor" ref="791352603"/> + </object> + </object> + </object> + <object class="NSProgressIndicator" id="727691575"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">1316</int> + <object class="NSPSMatrix" key="NSDrawMatrix"/> + <string key="NSFrame">{{6, 2}, {16, 16}}</string> + <reference key="NSSuperview" ref="1006"/> + <int key="NSpiFlags">28938</int> + <double key="NSMaxValue">100</double> + </object> + </object> + <string key="NSFrameSize">{691, 632}</string> + <reference key="NSSuperview"/> + </object> + <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string> + <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + <bool key="NSAutorecalculatesContentBorderThicknessMinY">NO</bool> + <double key="NSContentBorderThicknessMinY">20</double> + </object> + <object class="NSObjectController" id="374263046"> + <object class="NSMutableArray" key="NSDeclaredKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>spinning</string> + <string>status</string> + </object> + <bool key="NSEditable">YES</bool> + <object class="_NSManagedProxy" key="_NSManagedProxy"/> + </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">window</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1005"/> + </object> + <int key="connectionID">3</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: url</string> + <reference key="source" ref="570769942"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="570769942"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">value: url</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">url</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">19</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">navigate:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="570769942"/> + </object> + <int key="connectionID">20</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">view</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="947292612"/> + </object> + <int key="connectionID">21</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">reloadPage:</string> + <reference key="source" ref="947292612"/> + <reference key="destination" ref="734074974"/> + </object> + <int key="connectionID">28</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">goBack:</string> + <reference key="source" ref="947292612"/> + <reference key="destination" ref="702346074"/> + </object> + <int key="connectionID">29</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">goForward:</string> + <reference key="source" ref="947292612"/> + <reference key="destination" ref="525444158"/> + </object> + <int key="connectionID">30</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">showHistory:</string> + <reference key="source" ref="947292612"/> + <reference key="destination" ref="955202223"/> + </object> + <int key="connectionID">31</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">content</string> + <reference key="source" ref="374263046"/> + <reference key="destination" ref="947292612"/> + </object> + <int key="connectionID">33</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.status</string> + <reference key="source" ref="1055532139"/> + <reference key="destination" ref="374263046"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="1055532139"/> + <reference key="NSDestination" ref="374263046"/> + <string key="NSLabel">value: selection.status</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.status</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">37</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">animate: selection.spinning</string> + <reference key="source" ref="727691575"/> + <reference key="destination" ref="374263046"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="727691575"/> + <reference key="NSDestination" ref="374263046"/> + <string key="NSLabel">animate: selection.spinning</string> + <string key="NSBinding">animate</string> + <string key="NSKeyPath">selection.spinning</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">39</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> + <reference key="object" ref="0"/> + <reference key="children" ref="1000"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1001"/> + <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="1003"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1</int> + <reference key="object" ref="1005"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1006"/> + <reference ref="392415761"/> + </object> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">2</int> + <reference key="object" ref="1006"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="299449310"/> + <reference ref="1055532139"/> + <reference ref="727691575"/> + </object> + <reference key="parent" ref="1005"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">4</int> + <reference key="object" ref="299449310"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="217278618"/> + <reference ref="837576252"/> + <reference ref="947292612"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5</int> + <reference key="object" ref="217278618"/> + <reference key="parent" ref="299449310"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">6</int> + <reference key="object" ref="837576252"/> + <reference key="parent" ref="299449310"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7</int> + <reference key="object" ref="947292612"/> + <reference key="parent" ref="299449310"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">8</int> + <reference key="object" ref="392415761"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="191318475"/> + <reference ref="481399099"/> + <reference ref="554531361"/> + <reference ref="1049725992"/> + <reference ref="784507185"/> + <reference ref="702346074"/> + <reference ref="525444158"/> + <reference ref="955202223"/> + <reference ref="734074974"/> + </object> + <reference key="parent" ref="1005"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">13</int> + <reference key="object" ref="191318475"/> + <reference key="parent" ref="392415761"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">14</int> + <reference key="object" ref="481399099"/> + <reference key="parent" ref="392415761"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">15</int> + <reference key="object" ref="554531361"/> + <reference key="parent" ref="392415761"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">11</int> + <reference key="object" ref="1049725992"/> + <reference key="parent" ref="392415761"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">18</int> + <reference key="object" ref="784507185"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="570769942"/> + </object> + <reference key="parent" ref="392415761"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">16</int> + <reference key="object" ref="570769942"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="465639940"/> + </object> + <reference key="parent" ref="784507185"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">17</int> + <reference key="object" ref="465639940"/> + <reference key="parent" ref="570769942"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">22</int> + <reference key="object" ref="702346074"/> + <reference key="parent" ref="392415761"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">23</int> + <reference key="object" ref="525444158"/> + <reference key="parent" ref="392415761"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">24</int> + <reference key="object" ref="955202223"/> + <reference key="parent" ref="392415761"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">25</int> + <reference key="object" ref="734074974"/> + <reference key="parent" ref="392415761"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">32</int> + <reference key="object" ref="374263046"/> + <reference key="parent" ref="0"/> + <string key="objectName">Browser View</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">35</int> + <reference key="object" ref="1055532139"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="559666362"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">36</int> + <reference key="object" ref="559666362"/> + <reference key="parent" ref="1055532139"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">38</int> + <reference key="object" ref="727691575"/> + <reference key="parent" ref="1006"/> + </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.IBEditorWindowLastContentRect</string> + <string>1.IBPluginDependency</string> + <string>1.IBWindowTemplateEditedContentRect</string> + <string>1.NSWindowTemplate.visibleAtLaunch</string> + <string>1.WindowOrigin</string> + <string>1.editorWindowContentRectSynchronizationRect</string> + <string>11.IBPluginDependency</string> + <string>13.IBPluginDependency</string> + <string>14.IBPluginDependency</string> + <string>15.IBPluginDependency</string> + <string>16.IBPluginDependency</string> + <string>17.IBPluginDependency</string> + <string>2.IBPluginDependency</string> + <string>22.IBPluginDependency</string> + <string>23.IBPluginDependency</string> + <string>24.IBPluginDependency</string> + <string>25.IBPluginDependency</string> + <string>32.IBPluginDependency</string> + <string>35.IBPluginDependency</string> + <string>35.IBViewBoundsToFrameTransform</string> + <string>36.IBPluginDependency</string> + <string>38.IBPluginDependency</string> + <string>38.IBViewBoundsToFrameTransform</string> + <string>4.IBPluginDependency</string> + <string>4.IBViewBoundsToFrameTransform</string> + <string>5.IBPluginDependency</string> + <string>6.IBPluginDependency</string> + <string>7.IBPluginDependency</string> + <string>8.IBEditorWindowLastContentRect</string> + <string>8.IBPluginDependency</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>{{135, 249}, {691, 632}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{135, 249}, {691, 632}}</string> + <integer value="1"/> + <string>{196, 240}</string> + <string>{{202, 428}, {480, 270}}</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="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABAoAAAwXAAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABDQwAAwYgAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAAC/gAAAw5EAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{172, 881}, {617, 0}}</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">39</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">BrowserView</string> + <string key="superclassName">NSView</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>goBack:</string> + <string>goForward:</string> + <string>reloadPage:</string> + <string>showHistory:</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> + </object> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>goBack:</string> + <string>goForward:</string> + <string>reloadPage:</string> + <string>showHistory:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBActionInfo"> + <string key="name">goBack:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">goForward:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">reloadPage:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">showHistory:</string> + <string key="candidateClassName">id</string> + </object> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">BrowserView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">BrowserWindow</string> + <string key="superclassName">NSWindowController</string> + <object class="NSMutableDictionary" key="actions"> + <string key="NS.key.0">navigate:</string> + <string key="NS.object.0">id</string> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <string key="NS.key.0">navigate:</string> + <object class="IBActionInfo" key="NS.object.0"> + <string key="name">navigate:</string> + <string key="candidateClassName">id</string> + </object> + </object> + <object class="NSMutableDictionary" key="outlets"> + <string key="NS.key.0">view</string> + <string key="NS.object.0">BrowserView</string> + </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <string key="NS.key.0">view</string> + <object class="IBToOneOutletInfo" key="NS.object.0"> + <string key="name">view</string> + <string key="candidateClassName">BrowserView</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">BrowserWindow.h</string> + </object> + </object> + </object> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> + <integer 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> + <string key="IBDocument.LastKnownRelativeProjectPath">../NetSurf.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSGoLeftTemplate</string> + <string>NSGoRightTemplate</string> + <string>NSMenuCheckmark</string> + <string>NSMenuMixedState</string> + <string>NSMultipleDocuments</string> + <string>NSRefreshTemplate</string> + <string>NSToolbarCustomizeToolbarItemImage</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>{9, 9}</string> + <string>{9, 9}</string> + <string>{9, 8}</string> + <string>{7, 2}</string> + <string>{32, 32}</string> + <string>{10, 12}</string> + <string>{32, 32}</string> + </object> + </object> + </data> +</archive> diff --git a/cocoa/res/MainMenu.xib b/cocoa/res/MainMenu.xib new file mode 100644 index 000000000..01b7d134b --- /dev/null +++ b/cocoa/res/MainMenu.xib @@ -0,0 +1,1578 @@ +<?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">10J567</string> + <string key="IBDocument.InterfaceBuilderVersion">804</string> + <string key="IBDocument.AppKitVersion">1038.35</string> + <string key="IBDocument.HIToolboxVersion">462.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">804</string> + </object> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="106"/> + </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="1048"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomObject" id="1021"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSCustomObject" id="1014"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1050"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSMenu" id="649796088"> + <string key="NSTitle">Main Menu</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="694149608"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">NetSurf</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <object class="NSCustomResource" key="NSOnImage" id="756751024"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuCheckmark</string> + </object> + <object class="NSCustomResource" key="NSMixedImage" id="908425081"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuMixedState</string> + </object> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="110575045"> + <string key="NSTitle">NetSurf</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="238522557"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">About NetSurf</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="304266470"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="609285721"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Preferences…</string> + <string key="NSKeyEquiv">,</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="481834944"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="1046388886"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Services</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="752062318"> + <string key="NSTitle">Services</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <string key="NSName">_NSServicesMenu</string> + </object> + </object> + <object class="NSMenuItem" id="646227648"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="755159360"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Hide NetSurf</string> + <string key="NSKeyEquiv">h</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="342932134"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Hide Others</string> + <string key="NSKeyEquiv">h</string> + <int key="NSKeyEquivModMask">1572864</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="908899353"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Show All</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="1056857174"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="632727374"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Quit NetSurf</string> + <string key="NSKeyEquiv">q</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + </object> + <string key="NSName">_NSAppleMenu</string> + </object> + </object> + <object class="NSMenuItem" id="379814623"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">File</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="720053764"> + <string key="NSTitle">File</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="705341025"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">New</string> + <string key="NSKeyEquiv">n</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="722745758"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Open…</string> + <string key="NSKeyEquiv">o</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="425164168"> + <reference key="NSMenu" ref="720053764"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="776162233"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Close</string> + <string key="NSKeyEquiv">w</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="1023925487"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Save</string> + <string key="NSKeyEquiv">s</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="117038363"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Save As…</string> + <string key="NSKeyEquiv">S</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="579971712"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Revert to Saved</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="1010469920"> + <reference key="NSMenu" ref="720053764"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="294629803"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Page Setup...</string> + <string key="NSKeyEquiv">P</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <string key="NSToolTip"/> + </object> + <object class="NSMenuItem" id="49223823"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Print…</string> + <string key="NSKeyEquiv">p</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="584895621"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">Edit</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="141080932"> + <string key="NSTitle">Edit</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="80034836"> + <reference key="NSMenu" ref="141080932"/> + <string key="NSTitle">Undo</string> + <string key="NSKeyEquiv">z</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="128588396"> + <reference key="NSMenu" ref="141080932"/> + <string key="NSTitle">Redo</string> + <string key="NSKeyEquiv">Z</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="165057028"> + <reference key="NSMenu" ref="141080932"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="5858980"> + <reference key="NSMenu" ref="141080932"/> + <string key="NSTitle">Cut</string> + <string key="NSKeyEquiv">x</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="704355768"> + <reference key="NSMenu" ref="141080932"/> + <string key="NSTitle">Copy</string> + <string key="NSKeyEquiv">c</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="275307167"> + <reference key="NSMenu" ref="141080932"/> + <string key="NSTitle">Paste</string> + <string key="NSKeyEquiv">v</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="714155551"> + <reference key="NSMenu" ref="141080932"/> + <string key="NSTitle">Delete</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="197377228"> + <reference key="NSMenu" ref="141080932"/> + <string key="NSTitle">Select All</string> + <string key="NSKeyEquiv">a</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="246962120"> + <reference key="NSMenu" ref="141080932"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="602982148"> + <reference key="NSMenu" ref="141080932"/> + <string key="NSTitle">Find</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="930654435"> + <string key="NSTitle">Find</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="671868626"> + <reference key="NSMenu" ref="930654435"/> + <string key="NSTitle">Find…</string> + <string key="NSKeyEquiv">f</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <int key="NSTag">1</int> + </object> + <object class="NSMenuItem" id="497741775"> + <reference key="NSMenu" ref="930654435"/> + <string key="NSTitle">Find Next</string> + <string key="NSKeyEquiv">g</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <int key="NSTag">2</int> + </object> + <object class="NSMenuItem" id="285322108"> + <reference key="NSMenu" ref="930654435"/> + <string key="NSTitle">Find Previous</string> + <string key="NSKeyEquiv">G</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <int key="NSTag">3</int> + </object> + <object class="NSMenuItem" id="456308224"> + <reference key="NSMenu" ref="930654435"/> + <string key="NSTitle">Use Selection for Find</string> + <string key="NSKeyEquiv">e</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <int key="NSTag">7</int> + </object> + <object class="NSMenuItem" id="548069040"> + <reference key="NSMenu" ref="930654435"/> + <string key="NSTitle">Jump to Selection</string> + <string key="NSKeyEquiv">j</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="1046338161"> + <reference key="NSMenu" ref="141080932"/> + <string key="NSTitle">Speech</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="390929284"> + <string key="NSTitle">Speech</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="787796378"> + <reference key="NSMenu" ref="390929284"/> + <string key="NSTitle">Start Speaking</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="831785675"> + <reference key="NSMenu" ref="390929284"/> + <string key="NSTitle">Stop Speaking</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + </object> + </object> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="586577488"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">View</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="466310130"> + <string key="NSTitle">View</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="102151532"> + <reference key="NSMenu" ref="466310130"/> + <string key="NSTitle">Show Toolbar</string> + <string key="NSKeyEquiv">t</string> + <int key="NSKeyEquivModMask">1572864</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="237841660"> + <reference key="NSMenu" ref="466310130"/> + <string key="NSTitle">Customize Toolbar…</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="713487014"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">Window</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="835318025"> + <string key="NSTitle">Window</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="1011231497"> + <reference key="NSMenu" ref="835318025"/> + <string key="NSTitle">Minimize</string> + <string key="NSKeyEquiv">m</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="575023229"> + <reference key="NSMenu" ref="835318025"/> + <string key="NSTitle">Zoom</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="299356726"> + <reference key="NSMenu" ref="835318025"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + <object class="NSMenuItem" id="625202149"> + <reference key="NSMenu" ref="835318025"/> + <string key="NSTitle">Bring All to Front</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + </object> + <string key="NSName">_NSWindowsMenu</string> + </object> + </object> + <object class="NSMenuItem" id="391199113"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">Help</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="374024848"> + <string key="NSTitle">Help</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="238773614"> + <reference key="NSMenu" ref="374024848"/> + <string key="NSTitle">NetSurf Help</string> + <string key="NSKeyEquiv">?</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="756751024"/> + <reference key="NSMixedImage" ref="908425081"/> + </object> + </object> + <string key="NSName">_NSHelpMenu</string> + </object> + </object> + </object> + <string key="NSName">_NSMainMenu</string> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performMiniaturize:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1011231497"/> + </object> + <int key="connectionID">37</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">arrangeInFront:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="625202149"/> + </object> + <int key="connectionID">39</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">print:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="49223823"/> + </object> + <int key="connectionID">86</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">runPageLayout:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="294629803"/> + </object> + <int key="connectionID">87</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">orderFrontStandardAboutPanel:</string> + <reference key="source" ref="1021"/> + <reference key="destination" ref="238522557"/> + </object> + <int key="connectionID">142</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performClose:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="776162233"/> + </object> + <int key="connectionID">193</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performZoom:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="575023229"/> + </object> + <int key="connectionID">240</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">showHelp:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="238773614"/> + </object> + <int key="connectionID">360</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">saveDocument:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1023925487"/> + </object> + <int key="connectionID">362</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">saveDocumentAs:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="117038363"/> + </object> + <int key="connectionID">363</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">revertDocumentToSaved:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="579971712"/> + </object> + <int key="connectionID">364</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">runToolbarCustomizationPalette:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="237841660"/> + </object> + <int key="connectionID">365</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleToolbarShown:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="102151532"/> + </object> + <int key="connectionID">366</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">hide:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="755159360"/> + </object> + <int key="connectionID">369</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">hideOtherApplications:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="342932134"/> + </object> + <int key="connectionID">370</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">unhideAllApplications:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="908899353"/> + </object> + <int key="connectionID">372</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">terminate:</string> + <reference key="source" ref="1021"/> + <reference key="destination" ref="632727374"/> + </object> + <int key="connectionID">448</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">cut:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="5858980"/> + </object> + <int key="connectionID">741</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">paste:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="275307167"/> + </object> + <int key="connectionID">742</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">redo:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="128588396"/> + </object> + <int key="connectionID">745</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">undo:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="80034836"/> + </object> + <int key="connectionID">749</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">startSpeaking:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="787796378"/> + </object> + <int key="connectionID">751</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">copy:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="704355768"/> + </object> + <int key="connectionID">755</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">delete:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="714155551"/> + </object> + <int key="connectionID">756</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">selectAll:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="197377228"/> + </object> + <int key="connectionID">758</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">stopSpeaking:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="831785675"/> + </object> + <int key="connectionID">759</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performFindPanelAction:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="285322108"/> + </object> + <int key="connectionID">771</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performFindPanelAction:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="671868626"/> + </object> + <int key="connectionID">772</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performFindPanelAction:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="456308224"/> + </object> + <int key="connectionID">773</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">centerSelectionInVisibleArea:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="548069040"/> + </object> + <int key="connectionID">774</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performFindPanelAction:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="497741775"/> + </object> + <int key="connectionID">775</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="1048"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1021"/> + <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="1014"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1050"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">29</int> + <reference key="object" ref="649796088"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="713487014"/> + <reference ref="694149608"/> + <reference ref="391199113"/> + <reference ref="379814623"/> + <reference ref="586577488"/> + <reference ref="584895621"/> + </object> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">19</int> + <reference key="object" ref="713487014"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="835318025"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">56</int> + <reference key="object" ref="694149608"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="110575045"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">103</int> + <reference key="object" ref="391199113"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="374024848"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">83</int> + <reference key="object" ref="379814623"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="720053764"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">81</int> + <reference key="object" ref="720053764"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1023925487"/> + <reference ref="117038363"/> + <reference ref="49223823"/> + <reference ref="722745758"/> + <reference ref="705341025"/> + <reference ref="294629803"/> + <reference ref="776162233"/> + <reference ref="579971712"/> + <reference ref="1010469920"/> + <reference ref="425164168"/> + </object> + <reference key="parent" ref="379814623"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">75</int> + <reference key="object" ref="1023925487"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">80</int> + <reference key="object" ref="117038363"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">78</int> + <reference key="object" ref="49223823"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">72</int> + <reference key="object" ref="722745758"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">82</int> + <reference key="object" ref="705341025"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">77</int> + <reference key="object" ref="294629803"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">73</int> + <reference key="object" ref="776162233"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">112</int> + <reference key="object" ref="579971712"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">74</int> + <reference key="object" ref="1010469920"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">106</int> + <reference key="object" ref="374024848"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="238773614"/> + </object> + <reference key="parent" ref="391199113"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">111</int> + <reference key="object" ref="238773614"/> + <reference key="parent" ref="374024848"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">57</int> + <reference key="object" ref="110575045"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="238522557"/> + <reference ref="755159360"/> + <reference ref="908899353"/> + <reference ref="632727374"/> + <reference ref="646227648"/> + <reference ref="609285721"/> + <reference ref="481834944"/> + <reference ref="304266470"/> + <reference ref="1046388886"/> + <reference ref="1056857174"/> + <reference ref="342932134"/> + </object> + <reference key="parent" ref="694149608"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">58</int> + <reference key="object" ref="238522557"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">134</int> + <reference key="object" ref="755159360"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">150</int> + <reference key="object" ref="908899353"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">136</int> + <reference key="object" ref="632727374"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">144</int> + <reference key="object" ref="646227648"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">129</int> + <reference key="object" ref="609285721"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">143</int> + <reference key="object" ref="481834944"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">236</int> + <reference key="object" ref="304266470"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">131</int> + <reference key="object" ref="1046388886"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="752062318"/> + </object> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">149</int> + <reference key="object" ref="1056857174"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">145</int> + <reference key="object" ref="342932134"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">130</int> + <reference key="object" ref="752062318"/> + <reference key="parent" ref="1046388886"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">24</int> + <reference key="object" ref="835318025"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="299356726"/> + <reference ref="625202149"/> + <reference ref="575023229"/> + <reference ref="1011231497"/> + </object> + <reference key="parent" ref="713487014"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">92</int> + <reference key="object" ref="299356726"/> + <reference key="parent" ref="835318025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5</int> + <reference key="object" ref="625202149"/> + <reference key="parent" ref="835318025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">239</int> + <reference key="object" ref="575023229"/> + <reference key="parent" ref="835318025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">23</int> + <reference key="object" ref="1011231497"/> + <reference key="parent" ref="835318025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">295</int> + <reference key="object" ref="586577488"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="466310130"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">296</int> + <reference key="object" ref="466310130"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="102151532"/> + <reference ref="237841660"/> + </object> + <reference key="parent" ref="586577488"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">297</int> + <reference key="object" ref="102151532"/> + <reference key="parent" ref="466310130"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">298</int> + <reference key="object" ref="237841660"/> + <reference key="parent" ref="466310130"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">79</int> + <reference key="object" ref="425164168"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">684</int> + <reference key="object" ref="584895621"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="141080932"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">685</int> + <reference key="object" ref="141080932"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="80034836"/> + <reference ref="128588396"/> + <reference ref="165057028"/> + <reference ref="5858980"/> + <reference ref="704355768"/> + <reference ref="275307167"/> + <reference ref="714155551"/> + <reference ref="197377228"/> + <reference ref="246962120"/> + <reference ref="602982148"/> + <reference ref="1046338161"/> + </object> + <reference key="parent" ref="584895621"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">686</int> + <reference key="object" ref="80034836"/> + <reference key="parent" ref="141080932"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">687</int> + <reference key="object" ref="128588396"/> + <reference key="parent" ref="141080932"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">688</int> + <reference key="object" ref="165057028"/> + <reference key="parent" ref="141080932"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">689</int> + <reference key="object" ref="5858980"/> + <reference key="parent" ref="141080932"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">690</int> + <reference key="object" ref="704355768"/> + <reference key="parent" ref="141080932"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">691</int> + <reference key="object" ref="275307167"/> + <reference key="parent" ref="141080932"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">693</int> + <reference key="object" ref="714155551"/> + <reference key="parent" ref="141080932"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">694</int> + <reference key="object" ref="197377228"/> + <reference key="parent" ref="141080932"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">695</int> + <reference key="object" ref="246962120"/> + <reference key="parent" ref="141080932"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">696</int> + <reference key="object" ref="602982148"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="930654435"/> + </object> + <reference key="parent" ref="141080932"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">700</int> + <reference key="object" ref="1046338161"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="390929284"/> + </object> + <reference key="parent" ref="141080932"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">711</int> + <reference key="object" ref="390929284"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="787796378"/> + <reference ref="831785675"/> + </object> + <reference key="parent" ref="1046338161"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">712</int> + <reference key="object" ref="787796378"/> + <reference key="parent" ref="390929284"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">713</int> + <reference key="object" ref="831785675"/> + <reference key="parent" ref="390929284"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">734</int> + <reference key="object" ref="930654435"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="671868626"/> + <reference ref="497741775"/> + <reference ref="285322108"/> + <reference ref="456308224"/> + <reference ref="548069040"/> + </object> + <reference key="parent" ref="602982148"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">735</int> + <reference key="object" ref="671868626"/> + <reference key="parent" ref="930654435"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">736</int> + <reference key="object" ref="497741775"/> + <reference key="parent" ref="930654435"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">737</int> + <reference key="object" ref="285322108"/> + <reference key="parent" ref="930654435"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">738</int> + <reference key="object" ref="456308224"/> + <reference key="parent" ref="930654435"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">739</int> + <reference key="object" ref="548069040"/> + <reference key="parent" ref="930654435"/> + </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>-3.IBPluginDependency</string> + <string>103.IBPluginDependency</string> + <string>103.ImportedFromIB2</string> + <string>106.IBEditorWindowLastContentRect</string> + <string>106.IBPluginDependency</string> + <string>106.ImportedFromIB2</string> + <string>106.editorWindowContentRectSynchronizationRect</string> + <string>111.IBPluginDependency</string> + <string>111.ImportedFromIB2</string> + <string>112.IBPluginDependency</string> + <string>112.ImportedFromIB2</string> + <string>129.IBPluginDependency</string> + <string>129.ImportedFromIB2</string> + <string>130.IBEditorWindowLastContentRect</string> + <string>130.IBPluginDependency</string> + <string>130.ImportedFromIB2</string> + <string>130.editorWindowContentRectSynchronizationRect</string> + <string>131.IBPluginDependency</string> + <string>131.ImportedFromIB2</string> + <string>134.IBPluginDependency</string> + <string>134.ImportedFromIB2</string> + <string>136.IBPluginDependency</string> + <string>136.ImportedFromIB2</string> + <string>143.IBPluginDependency</string> + <string>143.ImportedFromIB2</string> + <string>144.IBPluginDependency</string> + <string>144.ImportedFromIB2</string> + <string>145.IBPluginDependency</string> + <string>145.ImportedFromIB2</string> + <string>149.IBPluginDependency</string> + <string>149.ImportedFromIB2</string> + <string>150.IBPluginDependency</string> + <string>150.ImportedFromIB2</string> + <string>19.IBPluginDependency</string> + <string>19.ImportedFromIB2</string> + <string>23.IBPluginDependency</string> + <string>23.ImportedFromIB2</string> + <string>236.IBPluginDependency</string> + <string>236.ImportedFromIB2</string> + <string>239.IBPluginDependency</string> + <string>239.ImportedFromIB2</string> + <string>24.IBEditorWindowLastContentRect</string> + <string>24.IBPluginDependency</string> + <string>24.ImportedFromIB2</string> + <string>24.editorWindowContentRectSynchronizationRect</string> + <string>29.IBEditorWindowLastContentRect</string> + <string>29.IBPluginDependency</string> + <string>29.ImportedFromIB2</string> + <string>29.WindowOrigin</string> + <string>29.editorWindowContentRectSynchronizationRect</string> + <string>295.IBPluginDependency</string> + <string>296.IBEditorWindowLastContentRect</string> + <string>296.IBPluginDependency</string> + <string>296.editorWindowContentRectSynchronizationRect</string> + <string>297.IBPluginDependency</string> + <string>298.IBPluginDependency</string> + <string>5.IBPluginDependency</string> + <string>5.ImportedFromIB2</string> + <string>56.IBPluginDependency</string> + <string>56.ImportedFromIB2</string> + <string>57.IBEditorWindowLastContentRect</string> + <string>57.IBPluginDependency</string> + <string>57.ImportedFromIB2</string> + <string>57.editorWindowContentRectSynchronizationRect</string> + <string>58.IBPluginDependency</string> + <string>58.ImportedFromIB2</string> + <string>684.IBPluginDependency</string> + <string>685.IBEditorWindowLastContentRect</string> + <string>685.IBPluginDependency</string> + <string>686.IBPluginDependency</string> + <string>687.IBPluginDependency</string> + <string>688.IBPluginDependency</string> + <string>689.IBPluginDependency</string> + <string>690.IBPluginDependency</string> + <string>691.IBPluginDependency</string> + <string>693.IBPluginDependency</string> + <string>694.IBPluginDependency</string> + <string>695.IBPluginDependency</string> + <string>696.IBPluginDependency</string> + <string>700.IBPluginDependency</string> + <string>711.IBEditorWindowLastContentRect</string> + <string>711.IBPluginDependency</string> + <string>712.IBPluginDependency</string> + <string>713.IBPluginDependency</string> + <string>72.IBPluginDependency</string> + <string>72.ImportedFromIB2</string> + <string>73.IBPluginDependency</string> + <string>73.ImportedFromIB2</string> + <string>734.IBEditorWindowLastContentRect</string> + <string>734.IBPluginDependency</string> + <string>735.IBPluginDependency</string> + <string>736.IBPluginDependency</string> + <string>737.IBPluginDependency</string> + <string>738.IBPluginDependency</string> + <string>739.IBPluginDependency</string> + <string>74.IBPluginDependency</string> + <string>74.ImportedFromIB2</string> + <string>75.IBPluginDependency</string> + <string>75.ImportedFromIB2</string> + <string>77.IBPluginDependency</string> + <string>77.ImportedFromIB2</string> + <string>78.IBPluginDependency</string> + <string>78.ImportedFromIB2</string> + <string>79.IBPluginDependency</string> + <string>79.ImportedFromIB2</string> + <string>80.IBPluginDependency</string> + <string>80.ImportedFromIB2</string> + <string>81.IBEditorWindowLastContentRect</string> + <string>81.IBPluginDependency</string> + <string>81.ImportedFromIB2</string> + <string>81.editorWindowContentRectSynchronizationRect</string> + <string>82.IBPluginDependency</string> + <string>82.ImportedFromIB2</string> + <string>83.IBPluginDependency</string> + <string>83.ImportedFromIB2</string> + <string>92.IBPluginDependency</string> + <string>92.ImportedFromIB2</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> + <integer value="1"/> + <string>{{533, 633}, {157, 23}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{596, 852}, {216, 23}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{509, 573}, {64, 6}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{436, 809}, {64, 6}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{462, 583}, {194, 73}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{525, 802}, {197, 73}}</string> + <string>{{242, 656}, {352, 20}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{74, 862}</string> + <string>{{11, 977}, {478, 20}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{412, 613}, {231, 43}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{475, 832}, {234, 43}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{254, 473}, {186, 183}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{23, 794}, {245, 183}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{368, 453}, {151, 203}}</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>{{519, 433}, {150, 43}}</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> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{608, 393}, {238, 103}}</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> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{326, 473}, {196, 183}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{323, 672}, {199, 203}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + </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">810</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"/> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> + <integer 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> + <string key="IBDocument.LastKnownRelativeProjectPath">../NetSurf.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSMenuCheckmark</string> + <string>NSMenuMixedState</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>{9, 8}</string> + <string>{7, 2}</string> + </object> + </object> + </data> +</archive> diff --git a/cocoa/res/NetSurf-Info.plist b/cocoa/res/NetSurf-Info.plist new file mode 100644 index 000000000..ce1f1a274 --- /dev/null +++ b/cocoa/res/NetSurf-Info.plist @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleIconFile</key> + <string></string> + <key>CFBundleIdentifier</key> + <string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>${PRODUCT_NAME}</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1</string> + <key>LSMinimumSystemVersion</key> + <string>${MACOSX_DEPLOYMENT_TARGET}</string> + <key>NSMainNibFile</key> + <string>MainMenu</string> + <key>NSPrincipalClass</key> + <string>NetSurfApp</string> +</dict> +</plist> diff --git a/cocoa/res/adblock.css b/cocoa/res/adblock.css new file mode 120000 index 000000000..e3811f62b --- /dev/null +++ b/cocoa/res/adblock.css @@ -0,0 +1 @@ +../../!NetSurf/Resources/AdBlock,f79
\ No newline at end of file diff --git a/cocoa/res/de.lproj/Messages b/cocoa/res/de.lproj/Messages new file mode 120000 index 000000000..2f1fc39c3 --- /dev/null +++ b/cocoa/res/de.lproj/Messages @@ -0,0 +1 @@ +../../../!NetSurf/Resources/de/Messages
\ No newline at end of file diff --git a/cocoa/res/default.css b/cocoa/res/default.css new file mode 120000 index 000000000..6d2d4da5b --- /dev/null +++ b/cocoa/res/default.css @@ -0,0 +1 @@ +../../!NetSurf/Resources/CSS,f79
\ No newline at end of file diff --git a/cocoa/res/en.lproj/Messages b/cocoa/res/en.lproj/Messages new file mode 120000 index 000000000..72c9eff90 --- /dev/null +++ b/cocoa/res/en.lproj/Messages @@ -0,0 +1 @@ +../../../!NetSurf/Resources/en/Messages
\ No newline at end of file diff --git a/cocoa/res/fr.lproj/Messages b/cocoa/res/fr.lproj/Messages new file mode 120000 index 000000000..a42cf08f4 --- /dev/null +++ b/cocoa/res/fr.lproj/Messages @@ -0,0 +1 @@ +../../../!NetSurf/Resources/fr/Messages
\ No newline at end of file diff --git a/cocoa/res/it.lproj/Messages b/cocoa/res/it.lproj/Messages new file mode 120000 index 000000000..d4c5c2956 --- /dev/null +++ b/cocoa/res/it.lproj/Messages @@ -0,0 +1 @@ +../../../!NetSurf/Resources/it/Messages
\ No newline at end of file diff --git a/cocoa/res/nl.lproj/Messages b/cocoa/res/nl.lproj/Messages new file mode 120000 index 000000000..d484ebd29 --- /dev/null +++ b/cocoa/res/nl.lproj/Messages @@ -0,0 +1 @@ +../../../!NetSurf/Resources/nl/Messages
\ No newline at end of file diff --git a/cocoa/res/quirks.css b/cocoa/res/quirks.css new file mode 120000 index 000000000..d9fb80334 --- /dev/null +++ b/cocoa/res/quirks.css @@ -0,0 +1 @@ +../../!NetSurf/Resources/Quirks,f79
\ No newline at end of file diff --git a/cocoa/save.m b/cocoa/save.m new file mode 100644 index 000000000..a91a29810 --- /dev/null +++ b/cocoa/save.m @@ -0,0 +1,37 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import <Cocoa/Cocoa.h> + +#import "desktop/save_complete.h" + +#define UNIMPL() NSLog( @"Function '%s' unimplemented", __func__ ) + +bool save_complete_gui_save(const char *path, const char *filename, + size_t len, const char *sourcedata, content_type type) +{ + UNIMPL(); + return false; +} + +int save_complete_htmlSaveFileFormat(const char *path, const char *filename, + xmlDocPtr cur, const char *encoding, int format) +{ + UNIMPL(); + return 0; +} diff --git a/cocoa/schedule.m b/cocoa/schedule.m new file mode 100644 index 000000000..b5d5626af --- /dev/null +++ b/cocoa/schedule.m @@ -0,0 +1,91 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import "desktop/browser.h" + +#import <Cocoa/Cocoa.h> + +@interface ScheduledCallback : NSObject { + void (*callback)( void *userData ); + void *userData; +} + +- initWithCallback: (void (*)(void *))cb userData: (void *)ud; +- (void) schedule: (NSTimeInterval) ti; + +@end + +@implementation ScheduledCallback + +- initWithCallback: (void (*)(void *))cb userData: (void *)ud; +{ + callback = cb; + userData = ud; + + return self; +} + +static NSMutableSet *timerSet = nil; + +- (void) schedule: (NSTimeInterval) ti; +{ + if (nil == timerSet) { + timerSet = [[NSMutableSet alloc] init]; + } + + [self performSelector: @selector(timerFired) withObject: nil afterDelay: ti]; + [timerSet addObject: self]; +} + +- (void) timerFired; +{ + if ([timerSet containsObject: self]) { + [timerSet removeObject: self]; + callback( userData ); + } +} + +- (BOOL) isEqual: (id)object +{ + if (object == self) return YES; + if ([object class] != [self class]) return NO; + return ((ScheduledCallback *)object)->callback == callback && ((ScheduledCallback *)object)->userData == userData; +} + +- (NSUInteger) hash; +{ + return (NSUInteger)callback + (NSUInteger)userData; +} + +@end + +/* In platform specific schedule.c. */ +void schedule(int t, void (*callback)(void *p), void *p) +{ + ScheduledCallback *cb = [[ScheduledCallback alloc] initWithCallback: callback userData: p]; + [cb schedule: (NSTimeInterval)t / 100]; + [cb release]; +} + +void schedule_remove(void (*callback)(void *p), void *p) +{ + ScheduledCallback *cb = [[ScheduledCallback alloc] initWithCallback: callback userData: p]; + [timerSet removeObject: cb]; + [cb release]; +} + diff --git a/cocoa/thumbnail.m b/cocoa/thumbnail.m new file mode 100644 index 000000000..b6df608eb --- /dev/null +++ b/cocoa/thumbnail.m @@ -0,0 +1,61 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import "desktop/browser.h" +#import "desktop/plotters.h" +#import "content/urldb.h" +#import "image/bitmap.h" + +#import <Cocoa/Cocoa.h> + +/* In platform specific thumbnail.c. */ +bool thumbnail_create(struct hlcache_handle *content, struct bitmap *bitmap, + const char *url) +{ + CGColorSpaceRef cspace = CGColorSpaceCreateWithName( kCGColorSpaceGenericRGB ); + CGContextRef bitmapContext = CGBitmapContextCreate( bitmap_get_buffer( bitmap ), + bitmap_get_width( bitmap ), bitmap_get_height( bitmap ), + bitmap_get_bpp( bitmap ) / 4, + bitmap_get_rowstride( bitmap ), + cspace, kCGImageAlphaNoneSkipLast ); + CGColorSpaceRelease( cspace ); + + + size_t width = MIN( content_get_width( content ), 1024 ); + size_t height = MIN( content_get_height( content ), 768 ); + + CGContextTranslateCTM( bitmapContext, 0, bitmap_get_height( bitmap ) ); + CGContextScaleCTM( bitmapContext, (CGFloat)bitmap_get_width( bitmap ) / width, -(CGFloat)bitmap_get_height( bitmap ) / height ); + + [NSGraphicsContext setCurrentContext: [NSGraphicsContext graphicsContextWithGraphicsPort: bitmapContext flipped: YES]]; + + content_redraw( content, 0, 0, content_get_width( content ), content_get_height( content ), + 0, 0, content_get_width( content ), content_get_height( content ), + 1.0, 0xFFFFFFFF ); + + [NSGraphicsContext setCurrentContext: nil]; + CGContextRelease( bitmapContext ); + + bitmap_modified( bitmap ); + + if (NULL != url) urldb_set_thumbnail( url, bitmap ); + + return true; + +} + diff --git a/cocoa/url.m b/cocoa/url.m new file mode 100644 index 000000000..38d637e6e --- /dev/null +++ b/cocoa/url.m @@ -0,0 +1,37 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import <stdbool.h> +#import <stdlib.h> +#import "utils/url.h" + +#import <Cocoa/Cocoa.h> + +#define UNIMPL() NSLog( @"Function '%s' unimplemented", __func__ ) + +char *url_to_path(const char *url) +{ + NSURL *nsurl = [NSURL URLWithString: [NSString stringWithUTF8String: url]]; + return strdup([[nsurl path] UTF8String]); +} + +char *path_to_url(const char *path) +{ + UNIMPL(); + return NULL; +} diff --git a/cocoa/utf8.m b/cocoa/utf8.m new file mode 100644 index 000000000..ec75dfc91 --- /dev/null +++ b/cocoa/utf8.m @@ -0,0 +1,36 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import <Cocoa/Cocoa.h> + +#import "utils/utf8.h" +#define UNIMPL() NSLog( @"Function '%s' unimplemented", __func__ ) + +utf8_convert_ret utf8_to_local_encoding(const char *string, size_t len, + char **result) +{ + UNIMPL(); + return -1; +} + +utf8_convert_ret utf8_from_local_encoding(const char *string, size_t len, + char **result) +{ + UNIMPL(); + return -1; +} diff --git a/cocoa/utils.m b/cocoa/utils.m new file mode 100644 index 000000000..0b06b1d9a --- /dev/null +++ b/cocoa/utils.m @@ -0,0 +1,67 @@ +/* + * Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#import <Cocoa/Cocoa.h> +#import "utils/utils.h" +#import "desktop/tree_url_node.h" + +#define UNIMPL() NSLog( @"Function '%s' unimplemented", __func__ ) + +void die(const char * const error) +{ + [NSException raise: @"NetsurfDie" format: @"Error: %s", error]; +} + +void warn_user(const char *warning, const char *detail) +{ + NSRunAlertPanel( @"Warning", @"Warning %s: %s", @"OK", nil, nil, warning, detail ); +} + +query_id query_user(const char *query, const char *detail, + const query_callback *cb, void *pw, const char *yes, const char *no) +{ + UNIMPL(); + return 0; +} + +void query_close(query_id qid) +{ + UNIMPL(); +} + +void PDF_Password(char **owner_pass, char **user_pass, char *path) +{ + UNIMPL(); +} + +char *filename_from_path(char *path) +{ + UNIMPL(); + return NULL; +} + +bool path_add_part(char *path, int length, const char *newpart) +{ + UNIMPL(); + return false; +} + +void tree_icon_name_from_content_type(char *buffer, content_type type) +{ + UNIMPL(); +}
\ No newline at end of file |