ProjectManager 0.2
ProjectModule.h
1/*
2 ProjectModule.h
3
4 Interface declaration of the ProjectModule class for the
5 ProjectManager application.
6
7 Copyright (C) 2005, 2006 Saso Kiselkov
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22*/
23
24#import <Foundation/NSObject.h>
25#import <AppKit/NSMenu.h>
26
27@class NSString, NSToolbarItem, ProjectDocument, NSView;
28
29extern NSString * const CurrentProjectModuleDidChangeNotification;
30
44@protocol ProjectModule <NSObject, NSMenuValidation>
45
49+ (NSString *) moduleName;
50
51+ (NSString *) humanReadableModuleName;
52
56- initWithDocument: (ProjectDocument *) document
57 infoDictionary: (NSDictionary *) infoDict;
58
72- (void) finishInit;
73
79
84- (NSView *) view;
85
94- (NSDictionary *) infoDictionary;
95
103
108- (NSArray *) moduleMenuItems;
109
115
122- (NSToolbarItem *) toolbarItemForItemIdentifier: (NSString *) itemIdentifier;
123
128- (BOOL) validateToolbarItem: (NSToolbarItem *) toolbarItem;
129
130@end
131
132static inline NSMenuItem *
133PMMakeMenuItem (NSString * title, SEL action, NSString * keyEquivalent,
134 id target)
135{
136 NSMenuItem * item;
137
138 item = [[[NSMenuItem alloc]
139 initWithTitle: title action: action keyEquivalent: keyEquivalent]
140 autorelease];
141 [item setTarget: target];
142
143 return item;
144}
This class is the principal document class for project files.
Definition ProjectDocument.h:44
This protocol declares methods which project modules must implement.
Definition ProjectModule.h:44
NSArray * moduleMenuItems()
Should return an array of NSMenuItem's which will be put into the module's submenu.
NSDictionary * infoDictionary()
Instructs the project module to return an archivable version of it's data that it wishes to be saved ...
ProjectDocument * document()
Should return the owner project document to which this project module belongs to.
NSView * view()
Instructs the project module to return a view which will be put into the project's window this module...
NSArray * toolbarItemIdentifiers()
A module should return the default toolbar item identifiers for it's toolbar.
NSString * moduleName()
Should return a unique module identifier name.
BOOL regenerateDerivedFiles()
Sent to the project module when it is to regenerate it's derived files which are generated from other...
void finishInit()
Finishes the initialization process of the project module.