| /* |
| * Copyright (C) 2004, 2006 Apple Computer, Inc. All rights reserved. |
| * (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #import "config.h" |
| #import "WebCoreSettings.h" |
| |
| #import "FoundationExtras.h" |
| #import "Settings.h" |
| #import "Page.h" |
| #import "WebCoreFrameBridge.h" |
| |
| using namespace WebCore; |
| |
| @implementation WebCoreSettings |
| |
| - (void)dealloc |
| { |
| [standardFontFamily release]; |
| [fixedFontFamily release]; |
| [serifFontFamily release]; |
| [sansSerifFontFamily release]; |
| [cursiveFontFamily release]; |
| [fantasyFontFamily release]; |
| [defaultTextEncoding release]; |
| [userStyleSheetLocation release]; |
| |
| delete settings; |
| |
| [super dealloc]; |
| } |
| |
| - (void)finalize |
| { |
| delete settings; |
| [super finalize]; |
| } |
| |
| - (id)init |
| { |
| // A Frame may not have been created yet, so we initialize the AtomicString hash before we try and use it in Settings. |
| AtomicString::init(); |
| settings = new Settings; |
| return [super init]; |
| } |
| |
| - (void)_updateAllViews |
| { |
| Page::setNeedsReapplyStylesForSettingsChange(settings); |
| } |
| |
| - (void)setStandardFontFamily:(NSString *)s |
| { |
| if ([standardFontFamily isEqualToString:s]) |
| return; |
| [standardFontFamily release]; |
| standardFontFamily = [s copy]; |
| settings->setStdFontName(s); |
| [self _updateAllViews]; |
| } |
| |
| - (NSString *)standardFontFamily |
| { |
| return standardFontFamily; |
| } |
| |
| - (void)setFixedFontFamily:(NSString *)s |
| { |
| if ([fixedFontFamily isEqualToString:s]) |
| return; |
| [fixedFontFamily release]; |
| fixedFontFamily = [s copy]; |
| settings->setFixedFontName(s); |
| [self _updateAllViews]; |
| } |
| |
| - (NSString *)fixedFontFamily |
| { |
| return fixedFontFamily; |
| } |
| |
| - (void)setSerifFontFamily:(NSString *)s |
| { |
| if ([serifFontFamily isEqualToString:s]) |
| return; |
| [serifFontFamily release]; |
| serifFontFamily = [s copy]; |
| settings->setSerifFontName(s); |
| [self _updateAllViews]; |
| } |
| |
| - (NSString *)serifFontFamily |
| { |
| return serifFontFamily; |
| } |
| |
| - (void)setSansSerifFontFamily:(NSString *)s |
| { |
| if ([sansSerifFontFamily isEqualToString:s]) |
| return; |
| [sansSerifFontFamily release]; |
| sansSerifFontFamily = [s copy]; |
| settings->setSansSerifFontName(s); |
| [self _updateAllViews]; |
| } |
| |
| - (NSString *)sansSerifFontFamily |
| { |
| return sansSerifFontFamily; |
| } |
| |
| - (void)setCursiveFontFamily:(NSString *)s |
| { |
| if ([cursiveFontFamily isEqualToString:s]) |
| return; |
| [cursiveFontFamily release]; |
| cursiveFontFamily = [s copy]; |
| settings->setCursiveFontName(s); |
| [self _updateAllViews]; |
| } |
| |
| - (NSString *)cursiveFontFamily |
| { |
| return cursiveFontFamily; |
| } |
| |
| - (void)setFantasyFontFamily:(NSString *)s |
| { |
| if ([fantasyFontFamily isEqualToString:s]) |
| return; |
| [fantasyFontFamily release]; |
| fantasyFontFamily = [s copy]; |
| settings->setFantasyFontName(s); |
| [self _updateAllViews]; |
| } |
| |
| - (NSString *)fantasyFontFamily |
| { |
| return fantasyFontFamily; |
| } |
| |
| - (void)setMinimumFontSize:(float)size |
| { |
| if (minimumFontSize == size) |
| return; |
| minimumFontSize = size; |
| settings->setMinFontSize((int)rint(size)); |
| [self _updateAllViews]; |
| } |
| |
| - (float)minimumFontSize |
| { |
| return minimumFontSize; |
| } |
| |
| - (void)setMinimumLogicalFontSize:(float)size |
| { |
| if (minimumLogicalFontSize == size) |
| return; |
| minimumLogicalFontSize = size; |
| settings->setMinLogicalFontSize((int)rint(size)); |
| [self _updateAllViews]; |
| } |
| |
| - (float)minimumLogicalFontSize |
| { |
| return minimumLogicalFontSize; |
| } |
| |
| - (void)setDefaultFontSize:(float)size |
| { |
| if (defaultFontSize == size) |
| return; |
| defaultFontSize = size; |
| settings->setMediumFontSize((int)rint(size)); |
| [self _updateAllViews]; |
| } |
| |
| - (float)defaultFontSize |
| { |
| return defaultFontSize; |
| } |
| |
| - (void)setDefaultFixedFontSize:(float)size |
| { |
| if (defaultFixedFontSize == size) |
| return; |
| defaultFixedFontSize = size; |
| settings->setMediumFixedFontSize((int)rint(size)); |
| [self _updateAllViews]; |
| } |
| |
| - (float)defaultFixedFontSize |
| { |
| return defaultFixedFontSize; |
| } |
| |
| - (void)setJavaEnabled:(BOOL)enabled |
| { |
| JavaEnabled = enabled; |
| settings->setIsJavaEnabled(enabled); |
| } |
| |
| - (BOOL)JavaEnabled |
| { |
| return JavaEnabled; |
| } |
| |
| - (void)setPluginsEnabled:(BOOL)enabled |
| { |
| pluginsEnabled = enabled; |
| settings->setArePluginsEnabled(enabled); |
| } |
| |
| - (BOOL)pluginsEnabled |
| { |
| return pluginsEnabled; |
| } |
| |
| - (void)setJavaScriptEnabled:(BOOL)enabled |
| { |
| JavaScriptEnabled = enabled; |
| settings->setIsJavaScriptEnabled(enabled); |
| } |
| |
| - (BOOL)JavaScriptEnabled |
| { |
| return JavaScriptEnabled; |
| } |
| |
| - (void)setJavaScriptCanOpenWindowsAutomatically:(BOOL)enabled |
| { |
| JavaScriptCanOpenWindowsAutomatically = enabled; |
| settings->setJavaScriptCanOpenWindowsAutomatically(enabled); |
| } |
| |
| - (BOOL)JavaScriptCanOpenWindowsAutomatically |
| { |
| return JavaScriptCanOpenWindowsAutomatically; |
| } |
| |
| - (void)setPrivateBrowsingEnabled:(BOOL)enabled |
| { |
| privateBrowsingEnabled = enabled; |
| settings->setPrivateBrowsingEnabled(enabled); |
| } |
| |
| - (BOOL)privateBrowsingEnabled |
| { |
| return privateBrowsingEnabled; |
| } |
| |
| - (void)setWillLoadImagesAutomatically:(BOOL)load |
| { |
| willLoadImagesAutomatically = load; |
| settings->setAutoLoadImages(load); |
| } |
| |
| - (BOOL)willLoadImagesAutomatically |
| { |
| return willLoadImagesAutomatically; |
| } |
| |
| - (void)setUserStyleSheetLocation:(NSString *)s |
| { |
| if ([userStyleSheetLocation isEqualToString:s]) |
| return; |
| [userStyleSheetLocation release]; |
| userStyleSheetLocation = [s copy]; |
| settings->setUserStyleSheetLocation(DeprecatedString::fromNSString(s)); |
| [self _updateAllViews]; |
| } |
| |
| - (NSString *)userStyleSheetLocation |
| { |
| return userStyleSheetLocation; |
| } |
| |
| - (void)setShouldPrintBackgrounds:(BOOL)enabled |
| { |
| shouldPrintBackgrounds = enabled; |
| settings->setShouldPrintBackgrounds(enabled); |
| } |
| |
| - (BOOL)shouldPrintBackgrounds |
| { |
| return shouldPrintBackgrounds; |
| } |
| |
| - (void)setTextAreasAreResizable:(BOOL)resizable |
| { |
| textAreasAreResizable = resizable; |
| settings->setTextAreasAreResizable(resizable); |
| [self _updateAllViews]; |
| } |
| |
| - (BOOL)textAreasAreResizable |
| { |
| return textAreasAreResizable; |
| } |
| |
| - (void)setDefaultTextEncoding:(NSString *)s |
| { |
| if ([defaultTextEncoding isEqualToString:s]) |
| return; |
| [defaultTextEncoding release]; |
| defaultTextEncoding = [s copy]; |
| settings->setEncoding(s); |
| } |
| |
| - (NSString *)defaultTextEncoding |
| { |
| return defaultTextEncoding; |
| } |
| |
| - (void)setEditableLinkBehavior:(int)behavior |
| { |
| Settings::EditableLinkBehavior b = (Settings::EditableLinkBehavior)behavior; |
| if (b != Settings::EditableLinkDefaultBehavior && |
| b != Settings::EditableLinkAlwaysLive && |
| b != Settings::EditableLinkOnlyLiveWithShiftKey && |
| b != Settings::EditableLinkLiveWhenNotFocused) { |
| settings->setEditableLinkBehavior(Settings::EditableLinkDefaultBehavior); |
| } else |
| settings->setEditableLinkBehavior(b); |
| } |
| |
| - (int)editableLinkBehavior |
| { |
| return (int)settings->editableLinkBehavior(); |
| } |
| |
| - (Settings *)settings |
| { |
| return settings; |
| } |
| |
| @end |