/* -*- mode: C++; tab-width: 4; c-basic-offset: 4; -*- */ /* AbiWord / AbiBits / CarbonToolbar * * Copyright (C) 2005 AbiSource, Inc. * Copyright (C) 2005 Francis James Franklin * * This program 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; either version 2 * of the License, or (at your option) any later version. * * This program 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, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */ #ifndef COCOAPLUGIN_ABICARBONTOOLBAR_CONFIGURATION_H #define COCOAPLUGIN_ABICARBONTOOLBAR_CONFIGURATION_H #import "XAP_CocoaPlugin.h" #define AbiCarbonToolbar_DragType_ProviderView @"AbiCarbonToolbar::ProviderView" @class AbiCarbonToolbar_LogController; @class AbiCarbonToolbar_ConfigurationToolbar; /* used in AbiCarbonToolbar_EditController.m */ @interface AbiCarbonToolbar_EditData : NSObject { NSString * m_name; NSString * m_identifier; NSString * m_description; NSMutableArray * m_tools; BOOL m_bProvider; } - (id)initWithProvider:(NSString *)name identifier:(NSString *)identifier description:(NSString *)description; - (id)initWithProvider:(id )provider; - (void)dealloc; - (NSString *)name; /* the name of the provider */ - (NSString *)identifier; /* nil for providers */ - (NSString *)description; /* nil for providers */ - (NSArray *)tools; - (BOOL)isProvider; @end @protocol AbiCarbonToolbar_ConfigurationData - (BOOL)isToolbar; @end @interface AbiCarbonToolbar_ConfigurationTool : NSObject { NSString * m_identifier; NSString * m_description; id m_provider; AbiCarbonToolbar_ConfigurationToolbar * m_toolbar; } - (id)initWithIdentifier:(NSString *)identifier description:(NSString *)description provider:(id )provider; - (void)dealloc; - (BOOL)isToolbar; /* NO */ - (NSString *)identifier; - (NSString *)description; - (id )provider; - (void)setToolbar:(AbiCarbonToolbar_ConfigurationToolbar *)toolbar; /* not retained */ - (AbiCarbonToolbar_ConfigurationToolbar *)toolbar; @end @interface AbiCarbonToolbar_ConfigurationToolbar : NSObject { XAP_CocoaPlugin * m_AbiWord; AbiCarbonToolbar_LogController * m_Controller; NSString * m_name; NSMutableArray * m_tools; } - (id)initWithAbiWord:(XAP_CocoaPlugin *)AbiWord controller:(AbiCarbonToolbar_LogController *)controller toolbarName:(NSString *)name; - (void)dealloc; - (BOOL)isToolbar; /* YES */ - (NSString *)name; - (NSArray *)tools; - (AbiCarbonToolbar_ConfigurationTool *)addTool:(NSString *)identifier provider:(NSString *)provider_name; - (AbiCarbonToolbar_ConfigurationTool *)insertTool:(NSString *)identifier provider:(NSString *)provider_name atIndex:(unsigned)index; - (void)removeTool:(NSString *)identifier provider:(NSString *)provider_name; @end @interface AbiCarbonToolbar_Configuration : NSObject { NSMutableArray * m_toolbars; XAP_CocoaPlugin * m_AbiWord; AbiCarbonToolbar_LogController * m_Controller; AbiCarbonToolbar_ConfigurationToolbar * m_current; BOOL m_bLoading; } - (id)initWithAbiWord:(XAP_CocoaPlugin *)AbiWord controller:(AbiCarbonToolbar_LogController *)controller; - (void)dealloc; - (NSArray *)toolbars; - (void)removeSelectedToolOrToolbar:(NSOutlineView *)outlineView; - (void)removeToolbar:(NSString *)name; - (void)addUntitledToolbar; - (AbiCarbonToolbar_ConfigurationToolbar *)addToolbar:(NSString *)name; - (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item; - (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item; - (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item; - (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item; - (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item; - (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard; /* These methods should return YES normally, but NO in order to stop parsing. */ - (BOOL)startElement:(NSString *)name attributes:(NSDictionary *)attributes; - (BOOL)endElement:(NSString *)name; - (BOOL)characterData:(NSString *)data; - (NSString *)configurationFile; - (BOOL)loadConfiguration:(NSString *)path; - (BOOL)saveConfiguration; @end #endif /* ! COCOAPLUGIN_ABICARBONTOOLBAR_CONFIGURATION_H */