⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawtesttoolbarcontroller.m

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 M
字号:
/* * Copyright (C) 2005 Apple Computer, Inc.  All rights reserved. * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com>  All rights reserved. * * 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 "DrawTestToolbarController.h"enum{    ToolbarBrowseToolTag = 0,    ToolbarPanToolTag,    ToolbarZoomToolTag,        ToolbarPointerToolTag,    ToolbarLineToolTag,    ToolbarRectangleToolTag,    ToolbarElipseToolTag,    ToolbarTriangleToolTag,    ToolbarPolyLineToolTag,    ToolbarArcToolTag,        ToolbarDeleteSelectionTag,        ToolbarMoveForwardTag,    ToolbarMoveBackwardTag,    ToolbarMoveToFrontTag,    ToolbarMoveToBackTag,    ToolbarMiscItem};// ConstantsNSString *ToolbarIdentifier = @"Main Document Toolbar";NSString *ToolbarBrowseToolIdentifier = @"Browse";NSString *ToolbarPanToolIdentifier = @"Pan";NSString *ToolbarZoomToolIdentifier = @"Zoom";NSString *ToolbarPointerToolIdentifier = @"Pointer";NSString *ToolbarRectangleToolIdentifier = @"Rectangle";NSString *ToolbarElipseToolIdentifier = @"Oval";NSString *ToolbarTriangleToolIdentifier = @"Triangle";NSString *ToolbarPolyLineToolIdentifier = @"PolyLine";NSString *ToolbarArcToolIdentifier = @"Arc";NSString *ToolbarDeleteShapeIdentifier = @"Delete";NSString *ToolbarMoveForwardIdentifier = @"Forward";NSString *ToolbarMoveBackwardIdentifier = @"Backward";NSString *ToolbarMoveToFrontIdentifier = @"Front";NSString *ToolbarMoveToBackIdentifier = @"Back";NSString *ToolbarPointerToolImage = @"Toolbar_Pointer";NSString *ToolbarRectangleToolImage = @"Toolbar_Rectangle";NSString *ToolbarElipseToolImage = @"Toolbar_Oval";NSString *ToolbarTriangleToolImage = @"Toolbar_Triangle";NSString *ToolbarDeleteShapeImage = @"Toolbar_Delete";NSString *ToolbarMoveForwardImage = @"Toolbar_Forward";NSString *ToolbarMoveBackwardImage = @"Toolbar_Backward";NSString *ToolbarMoveToFrontImage = @"Toolbar_Front";NSString *ToolbarMoveToBackImage = @"Toolbar_Back";@interface DrawTestToolbarController (InternalMethods)- (void)setupToolbar;- (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image withTag:(int)tag;- (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image;- (void)addToolbarItem:(NSString *)identifier             withLabel:(NSString *)label      withPaletteLabel:(NSString *)paletteLabel             withImage:(NSString *)imageName           withToolTip:(NSString *)toolTip               withTag:(int)tag;@end@implementation DrawTestToolbarController- (id)initWithDrawView:(WebView *)drawView{    if (self = [super init]){        _drawView = [drawView retain];        [self setupToolbar]; // could be done lazily.    }    return self;}- (void)dealloc{    [_toolbarItems release];    [super dealloc];}- (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image withTag:(int)tag{        [self addToolbarItem:identifier               withLabel:identifier        withPaletteLabel:identifier               withImage:image             withToolTip:identifier                 withTag:tag];}- (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image{    [self addToolbarItemWithIdentifier:identifier withImage:image withTag:ToolbarMiscItem];}- (void)addToolbarItem:(NSString *)identifier             withLabel:(NSString *)label      withPaletteLabel:(NSString *)paletteLabel             withImage:(NSString *)imageName           withToolTip:(NSString *)toolTip               withTag:(int)tag{    NSToolbarItem *item = [[[NSToolbarItem alloc] initWithItemIdentifier:identifier] autorelease];        [item setLabel:label];    [item setPaletteLabel:paletteLabel];    [item setToolTip:toolTip];    [item setImage:[NSImage imageNamed:imageName]];    [item setTarget:self];    [item setAction:@selector(clickedToolbarItem:)];    [item setTag:tag];        [_toolbarItems setObject:item forKey:identifier];}- (void)setupToolbar{    _toolbarItems = [[NSMutableDictionary alloc] init];        [self addToolbarItemWithIdentifier:ToolbarBrowseToolIdentifier                              withImage:ToolbarPointerToolImage                               withTag:ToolbarBrowseToolTag];    [[_toolbarItems objectForKey:ToolbarBrowseToolIdentifier] setImage:[[NSCursor pointingHandCursor] image]];        [self addToolbarItemWithIdentifier:ToolbarPanToolIdentifier                              withImage:ToolbarPointerToolImage                               withTag:ToolbarPanToolTag];    [[_toolbarItems objectForKey:ToolbarPanToolIdentifier] setImage:[[NSCursor openHandCursor] image]];        [self addToolbarItemWithIdentifier:ToolbarZoomToolIdentifier                              withImage:ToolbarPointerToolImage                               withTag:ToolbarZoomToolTag];            [self addToolbarItemWithIdentifier:ToolbarPointerToolIdentifier                              withImage:ToolbarPointerToolImage                               withTag:ToolbarPointerToolTag];        [self addToolbarItemWithIdentifier:ToolbarRectangleToolIdentifier                              withImage:ToolbarRectangleToolImage                               withTag:ToolbarRectangleToolTag];        [self addToolbarItemWithIdentifier:ToolbarElipseToolIdentifier                              withImage:ToolbarElipseToolImage                                withTag:ToolbarElipseToolTag];        [self addToolbarItemWithIdentifier:ToolbarTriangleToolIdentifier                              withImage:ToolbarTriangleToolImage                               withTag:ToolbarTriangleToolTag];        [self addToolbarItemWithIdentifier:ToolbarDeleteShapeIdentifier                              withImage:ToolbarDeleteShapeImage                               withTag:ToolbarDeleteSelectionTag];        [self addToolbarItemWithIdentifier:ToolbarMoveForwardIdentifier                              withImage:ToolbarMoveForwardImage                               withTag:ToolbarMoveForwardTag];        [self addToolbarItemWithIdentifier:ToolbarMoveBackwardIdentifier                              withImage:ToolbarMoveBackwardImage                               withTag:ToolbarMoveBackwardTag];        [self addToolbarItemWithIdentifier:ToolbarMoveToFrontIdentifier                              withImage:ToolbarMoveToFrontImage                               withTag:ToolbarMoveToFrontTag];        [self addToolbarItemWithIdentifier:ToolbarMoveToBackIdentifier                              withImage:ToolbarMoveToBackImage                               withTag:ToolbarMoveToBackTag];            NSToolbar *toolbar = [[[NSToolbar alloc] initWithIdentifier:ToolbarIdentifier] autorelease];        [toolbar setAllowsUserCustomization:YES];    [toolbar setAutosavesConfiguration:YES];    [toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel];    [toolbar setSizeMode:NSToolbarSizeModeSmall];    [toolbar setDisplayMode:NSToolbarDisplayModeLabelOnly];    [toolbar setDelegate:self];    [toolbar setSelectedItemIdentifier:ToolbarBrowseToolIdentifier];    [toolbar setVisible:NO];        [[_drawView window] setToolbar:toolbar];}- (void)clickedToolbarItem:(id)sender{    int tag = [sender tag];        switch(tag) {#if 0        case ToolbarBrowseToolTag:            [_drawView setToolMode:DrawViewToolBrowse];            break;        case ToolbarPanToolTag:            [_drawView setToolMode:DrawViewToolPan];            break;        case ToolbarZoomToolTag:            [_drawView setToolMode:DrawViewToolZoom];            break;        case ToolbarPointerToolTag:            [_drawView setToolMode:DrawViewToolArrow];            break;        case ToolbarRectangleToolTag:            [_drawView setToolMode:DrawViewToolRectangle];            break;        case ToolbarElipseToolTag:            [_drawView setToolMode:DrawViewToolElipse];            break;        case ToolbarTriangleToolTag:            [_drawView setToolMode:DrawViewToolTriangle];            break;        case ToolbarMoveForwardTag:            [_drawView moveSelectionForward:sender];            break;        case ToolbarMoveBackwardTag:            [_drawView moveSelectionBackward:sender];            break;        case ToolbarDeleteSelectionTag:            [_drawView deleteSelection:sender];            break;#endif        default:            NSLog(@"Toolbar item: %i not implemented!", tag);    }        [_drawView setNeedsDisplay:YES];}// NSToolbar delegate methods- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdent  willBeInsertedIntoToolbar:(BOOL)willBeInserted{     NSToolbarItem *    toolbarItem = [_toolbarItems objectForKey:itemIdent];        if( toolbarItem == nil )        toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier:itemIdent] autorelease];        return toolbarItem;}- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar{    return [NSArray arrayWithObjects:        ToolbarBrowseToolIdentifier,        ToolbarPanToolIdentifier,        ToolbarZoomToolIdentifier,        ToolbarPointerToolIdentifier,        ToolbarRectangleToolIdentifier,        ToolbarElipseToolIdentifier,        ToolbarTriangleToolIdentifier,        ToolbarDeleteShapeIdentifier,         NSToolbarShowColorsItemIdentifier,        ToolbarMoveForwardIdentifier,        ToolbarMoveBackwardIdentifier,        ToolbarMoveToFrontIdentifier,        ToolbarMoveToBackIdentifier,        NSToolbarCustomizeToolbarItemIdentifier,        NSToolbarFlexibleSpaceItemIdentifier,         NSToolbarSpaceItemIdentifier,         NSToolbarSeparatorItemIdentifier, nil];}- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar{        return [NSArray arrayWithObjects:        ToolbarBrowseToolIdentifier,        ToolbarPanToolIdentifier,        //ToolbarZoomToolIdentifier,        NSToolbarFlexibleSpaceItemIdentifier,        ToolbarPointerToolIdentifier,        ToolbarRectangleToolIdentifier,        ToolbarElipseToolIdentifier,        //ToolbarTriangleToolIdentifier,         //NSToolbarSeparatorItemIdentifier,        ToolbarDeleteShapeIdentifier,         //ToolbarMoveForwardIdentifier,        //ToolbarMoveBackwardIdentifier,        //ToolbarMoveToFrontIdentifier,        //ToolbarMoveToBackIdentifier,         NSToolbarSeparatorItemIdentifier,        //NSToolbarShowColorsItemIdentifier,         //NSToolbarFlexibleSpaceItemIdentifier,         NSToolbarCustomizeToolbarItemIdentifier,        nil];}- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar{    return [NSArray arrayWithObjects:        ToolbarBrowseToolIdentifier,        ToolbarPanToolIdentifier,        ToolbarZoomToolIdentifier,            ToolbarPointerToolIdentifier,        ToolbarRectangleToolIdentifier,        ToolbarElipseToolIdentifier,        ToolbarTriangleToolIdentifier,        nil];}- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem{    BOOL enabled = YES;#if 0        switch([theItem tag]) {        case ToolbarMoveForwardTag:        case ToolbarMoveBackwardTag:        case ToolbarMoveToFrontTag:        case ToolbarMoveToBackTag:        case ToolbarDeleteSelectionTag:            enabled = ([[_drawView selectedCanvasItems] count] != 0);    }#endif        return enabled;}@end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -