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 
29 extern 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 
102 - (BOOL) regenerateDerivedFiles;
103 
108 - (NSArray *) moduleMenuItems;
109 
114 - (NSArray *) toolbarItemIdentifiers;
115 
122 - (NSToolbarItem *) toolbarItemForItemIdentifier: (NSString *) itemIdentifier;
123 
128 - (BOOL) validateToolbarItem: (NSToolbarItem *) toolbarItem;
129 
130 @end
131 
132 static inline NSMenuItem *
133 PMMakeMenuItem (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.