Compare commits

...

728 commits

Author SHA1 Message Date
Riccardo Mottola
b7fcad40f8 Merge branch 'master' of https://github.com/gnustep/apps-projectcenter 2025-01-26 19:10:08 +01:00
Riccardo Mottola
1b7cc44ff1 update FSF address 2025-01-26 19:09:57 +01:00
Gregory John Casamento
6c0063600d Update resources for Application project so that it includes a window, a connection to the window and a slightly improved AppController 2024-12-07 14:05:18 -05:00
Gregory Casamento
4405dcc8c4
Update CODEOWNERS 2024-07-18 14:38:04 -04:00
Riccardo Mottola
de5e8f63c5 merge 2023-01-16 21:31:01 +01:00
Riccardo Mottola
63af855c24 nil the delegates of the split-view, avoid a crash on close window. 2023-01-16 21:24:21 +01:00
Riccardo Mottola
5964418bb1 bump year 2023-01-13 19:42:50 +01:00
Riccardo Mottola
ac3fad4b6f fix some NSLogs 2023-01-13 19:36:29 +01:00
Riccardo Mottola
05e4b859be Don't assign nil, it is useless, just destroy it: retaining nil is useless. 2023-01-13 19:36:00 +01:00
Riccardo Mottola
f5bdb40882 fix redundant format parameters 2023-01-13 19:28:07 +01:00
Riccardo Mottola
7ce2cd367a minor casts 2023-01-13 18:23:17 +01:00
Riccardo Mottola
fdebc6367f Reduce scope of _extScrollView _intScrollView from ivar to local variables, release after setting to content view and fix double-release of _intScrollView. 2023-01-12 23:33:25 +01:00
Riccardo Mottola
fc194db093 Merge branch 'master' of https://github.com/gnustep/apps-projectcenter 2022-04-21 08:06:39 +02:00
Riccardo Mottola
c37b1dbe05 remove debug log 2022-04-12 22:24:52 +02:00
Riccardo Mottola
79150d285b remove spurious 2022-04-12 00:27:19 +02:00
Riccardo Mottola
5932086c64 cleanup 2022-02-02 16:37:30 +01:00
Riccardo Mottola
cdfebcedba update copyright 2022-01-12 01:20:36 +01:00
Riccardo
7f100b4ecd
Merge pull request #31 from gnustep/DebuggerRefactor
fix label sizes in application inspector
2022-01-11 00:08:22 +01:00
Riccardo Mottola
cc48c443fa fix label sizes in applicatoin inspector 2022-01-11 00:06:24 +01:00
Riccardo Mottola
5244eb1037 minor fix for helpfile nil check 2022-01-10 18:56:01 +01:00
Riccardo Mottola
aeeaf4c3ab fix connection 2021-12-15 01:15:07 +01:00
Riccardo Mottola
8c3ebba096 bump version 2021-12-14 13:33:09 +01:00
Riccardo Mottola
beb93d83e3 make copyright come from info plist and not hard-coded in the gorm file 2021-12-14 13:00:46 +01:00
Riccardo Mottola
7e64e50cda remove some debug logs 2021-12-13 23:49:56 +01:00
Riccardo Mottola
2c1c01f807 put timer delays in constants; run highlighting on a timer too 2021-12-01 01:37:45 +01:00
Riccardo Mottola
52539893eb Merge branch 'LineStatus' 2021-11-30 23:37:13 +01:00
Riccardo Mottola
522edc8cf6 Use a timer also for line calculation and status update 2021-11-30 23:26:02 +01:00
Riccardo
0d75eae5d0
Merge pull request #30 from svgol/tmp_textColor_unbalanced
the ivar PCEditor->textColor is assigned in the unbalanced manner
2021-11-30 16:49:58 +01:00
Sergei Golovin
d63d77b98e * fixed a memory leak
* Modules/Editors/ProjectCenter/PCEditor.m:
  - replaced RETAIN() with ASSIGN() to avoid memory leaking;
2021-11-29 12:20:33 +04:00
Sergei Golovin
377359a92f * fixed a unbalanced retain/release ivar
* Modules/Editors/ProjectCenter/PCEditor.m:
  - changed the -[openFileAtPath:editorManager:editable:] to retain
    the ivar 'textColor'... to balance its retain/release count;
2021-11-29 07:59:31 +04:00
Riccardo Mottola
cf1b7a3215 merge from master 2021-11-29 01:40:58 +01:00
Riccardo
c8c3b2fc0e
Merge pull request #28 from gnustep/ImproveHighlighting
Improve highlighting
2021-11-29 00:13:09 +01:00
Riccardo
008b192d99
Merge branch 'master' into ImproveHighlighting 2021-11-28 23:59:25 +01:00
Riccardo Mottola
c0f24a756f cleanup some debug logs 2021-11-28 23:40:43 +01:00
Riccardo Mottola
0b8ae1f554 manual cherry-pick of event cleanup 2021-11-26 12:30:05 +01:00
Riccardo Mottola
4216c13cda Do not send double computeNewParenthesisNesting: on key pressed.
Furthermore, use a timer so that in case of rapid re-computing it gets invalidated before and only calculated at the last event.
2021-11-26 02:20:40 +01:00
Riccardo Mottola
01a3a61b2e do not change font on highlight, just the background: thus storing the old font attributes becomes needless 2021-11-23 01:22:54 +01:00
Riccardo Mottola
a0856faf21 remane textBackground to textBackgroundColor and use that for restoring highlit characters, without resding/storing such attribute 2021-11-23 01:09:50 +01:00
Riccardo Mottola
1749847eac minor optimizations 2021-11-23 00:42:13 +01:00
Riccardo Mottola
8ab1b66eb5 fix spelling error in ivar 2021-10-28 01:40:01 +02:00
Riccardo Mottola
d6a2ce3650 remove foreground color, we do not change it when highlighting 2021-10-28 01:36:39 +02:00
Riccardo Mottola
60db8c598f refactor some of the character highlighting, trying to rely only on the start-end pair of locations without old extra variables 2021-10-21 23:36:13 +02:00
Riccardo
49a778a8ad
Merge pull request #27 from gnustep/Improve_IndentHandling
cleanup insertText
2021-10-21 20:41:59 +02:00
Riccardo Mottola
ae35ca4c10 Remove insertText and handle keys through appropriate methods (inserTab, cancelOperation)Remove insertText and handle keys through appropriate methods (inserTab, cancelOperation) 2021-10-19 00:17:03 +02:00
Riccardo Mottola
61eff93341 fix status lin in internal view 2021-09-22 00:34:36 +02:00
Riccardo Mottola
5b988495cc fix external view 2021-09-21 23:40:21 +02:00
Riccardo Mottola
aaaea5965b update the line status 2021-09-17 01:25:58 +02:00
Riccardo
07c911b995
Merge pull request #26 from gnustep/master
keep branch up-to-date
2021-09-17 01:18:43 +02:00
Riccardo Mottola
aff171ceff instead of using getLineStart which returns a character after scanning lines, we directly scan lines and count the newlines, so the string is needs to be scanned once only to know hoe many newlines. Some IMP caching to improve this ineffcient o(n) at every cursor movement 2021-09-17 00:53:40 +02:00
Riccardo Mottola
bae62a963b actually store the preference color in textColor ivar 2021-09-16 00:52:15 +02:00
Gregory John Casamento
bedce090f9 Merge branch 'master' of github.com:gnustep/apps-projectcenter 2021-08-29 06:44:17 -04:00
Gregory John Casamento
aa76e6406c Release infoController and projectManager 2021-08-29 06:44:08 -04:00
Riccardo Mottola
b701d1a40b also keep ligatures off when reverting 2021-08-19 14:57:24 +02:00
Riccardo Mottola
b3fa5f1949 turn off ligatures in the code editor 2021-08-19 14:50:58 +02:00
Riccardo Mottola
d49d4d6e5f cleanup inforpanel init and proper centering 2021-08-18 23:11:45 +02:00
Riccardo
77972b4abb
Merge pull request #25 from gnustep/revert-20-master
Revert "Centered information panel."
2021-08-18 19:16:46 +02:00
Riccardo
994aff232c
Revert "Centered information panel." 2021-08-18 19:16:05 +02:00
Gregory Casamento
0b9e2ddb8d
Merge pull request #20 from armm77/master
Centered information panel.
2021-08-17 07:43:19 -04:00
Riccardo Mottola
538016b372 Revert "Merge branch 'dock_fix'"
This commit is a hack, for an unclean environment. It is especially bad
to copy an environment and then remove just a single environment
variable.

This reverts commit 82d4d12f82, reversing
changes made to 0bce146347.
2021-08-16 15:45:53 +02:00
Gregory John Casamento
82d4d12f82 Merge branch 'dock_fix' 2021-08-14 07:58:12 -04:00
Gregory John Casamento
0bce146347 Add codeowners file 2021-08-11 00:17:59 -04:00
Gregory John Casamento
ffcf6cfff6 Add code to set environment explicitly to prevent build failure. 2021-08-11 00:14:59 -04:00
Gregory John Casamento
c0742c88a3 Changelog update 2021-08-10 10:06:00 -04:00
Gregory Casamento
af4e9fffe4
Merge pull request #19 from gnustep/debugger_editor 2021-08-09 19:23:57 -04:00
armm77
0f6ce6ba95 Centered information panel. 2021-08-08 17:53:48 -04:00
Gregory John Casamento
aed50386f7 Merge branch 'LineStatus' of github.com:gnustep/apps-projectcenter into LineStatus 2021-08-03 19:45:51 -04:00
Gregory John Casamento
6c59f53df4 Changes to use _containerView as main internal view. 2021-08-03 19:45:30 -04:00
Riccardo Mottola
7504a154e1 status bar, still incomplete resizes badly / does not show internally 2021-08-03 19:45:30 -04:00
Gregory John Casamento
f9633b2db6 Changes to use _containerView as main internal view. 2021-08-03 19:44:29 -04:00
Riccardo Mottola
18136e7678 get selected range of selection 2021-08-04 01:42:08 +02:00
Riccardo Mottola
f9d8e56a2e actually register NSTextViewDidChangeSelectionNotification 2021-08-04 00:53:34 +02:00
Gregory John Casamento
736093b0c1 Fix centering issue 2021-08-03 18:48:00 -04:00
Gregory John Casamento
87988f435c Make update of file appear in the in-window editor instead of external editors 2021-08-03 17:16:26 -04:00
Gregory John Casamento
56d789e232 Add capability to debugger to focus on file and line which has been stopped on 2021-08-01 17:01:58 -04:00
Riccardo Mottola
991b7fba21 status bar, still incomplete resizes badly / does not show internally 2021-07-30 02:29:59 +02:00
Riccardo
25f423bebd
Merge pull request #18 from gnustep/DebuggerRefactor
Debugger refactor
2021-07-30 01:20:55 +02:00
Riccardo Mottola
dd9a827b30 cleanup and add a debug log 2021-07-28 01:22:08 +02:00
Riccardo Mottola
56f5d087b9 Do not release window when clesed, since now we re-use it on re-show 2021-07-21 23:00:28 +02:00
Riccardo Mottola
7dedd5871f log gotten PID 2021-07-19 02:03:34 +02:00
Riccardo Mottola
7c30ee1f38 camel case 2021-07-19 01:47:32 +02:00
Riccardo Mottola
b7cfa30f20 increase parsing of stream and async records, also log LogStreamOutput as aid 2021-07-19 01:46:01 +02:00
Riccardo Mottola
f68e83ad6f Don't send keystrokes directly to gdb, but accumulate a line until return and send, allows to handle backspaces. 2021-07-16 19:49:23 +02:00
Riccardo Mottola
c567c110a3 move special del handling into typeString away from keyDown 2021-07-15 01:16:15 +02:00
Riccardo Mottola
725da9e9c8 move debugger arguments down into the wrapper, since they are GDB specific. Interpret now the Path as the executable path, requiring the debugger path to be set earlier in the wrapper setup 2021-07-15 00:03:48 +02:00
Gregory Casamento
4d19c42454 Add scripts 2021-07-14 11:11:22 -04:00
Gregory Casamento
822e7f0d3a
Create main.yml 2021-07-14 11:09:58 -04:00
Riccardo Mottola
08cd658b6d cleanup 2021-07-13 22:31:02 +02:00
Riccardo Mottola
b3a968b8a3 remove now unused ivar, moved into the controller 2021-07-09 10:31:24 +02:00
Riccardo Mottola
dd1c1e75ba start the debugger only if it was never started, else, reuse it 2021-07-09 01:18:20 +02:00
Riccardo Mottola
ec805871c3 If we already instantiated a Debugger, reuse it. 2021-07-09 01:03:33 +02:00
Riccardo Mottola
b1533c4a02 remove unused accessors 2021-07-09 00:44:02 +02:00
Riccardo Mottola
81e6f3b82a fix constants types 2021-07-09 00:41:04 +02:00
Riccardo Mottola
7adfa56357 the wrapper should be property of the controller, not the view 2021-07-08 23:43:09 +02:00
Riccardo Mottola
67381ab3cc comment out some logs 2021-07-06 22:53:28 +02:00
Riccardo Mottola
a26fbaa6c1 document LAR 2021-07-06 22:45:53 +02:00
Riccardo Mottola
cd0c4972a3 document methods 2021-07-06 22:43:59 +02:00
Riccardo Mottola
c0fd3f8df7 fix skipping of the first opening brace in key-value lists 2021-07-06 22:36:51 +02:00
Riccardo Mottola
8970a0617d parse filename and line on stop 2021-07-06 05:12:13 +02:00
Riccardo Mottola
079467ccc1 make the parser recursive on a single scanner instead of using substrings 2021-07-06 04:58:20 +02:00
Riccardo Mottola
34a07aa4d5 we release what we retain 2021-07-06 02:33:29 +02:00
Riccardo Mottola
a43aff41cf fix access 2021-07-05 02:26:54 +02:00
Riccardo Mottola
5aa4b5813c Make the parser much more recursive and use it also for AsyncStatus records 2021-07-05 02:26:30 +02:00
Riccardo Mottola
5beb3dfe39 move debugger version into the wrapper 2021-07-05 01:07:16 +02:00
Riccardo Mottola
7c741d63e6 more work on debuggerWrappe 2021-06-29 23:42:52 +02:00
Riccardo Mottola
b672b3b77c rename PipeDelegate to GDBWrapper 2021-06-29 00:36:27 +02:00
Riccardo Mottola
244e03d542 handle arrays inside maps 2021-06-25 17:48:52 +02:00
Riccardo Mottola
5aed0a18c2 add crude Array parsing 2021-06-25 04:36:12 +02:00
Riccardo Mottola
058a60fbf4 merge conflict 2021-06-25 04:34:41 +02:00
Riccardo Mottola
08c40f31f3 parse file and line in case of a gdb breakpoint stop 2021-06-22 02:01:47 +02:00
Riccardo Mottola
0375286dcf generalize gdb version to debugger version 2021-06-22 01:49:12 +02:00
Riccardo Mottola
17b6359ba9 Accessor methods for specific debugger information as wellas filename and line. 2021-06-22 01:42:00 +02:00
Riccardo Mottola
6ab80ec17d improve gdb parser to understand information in {} as a sub-dictionary and look-ahead for it 2021-06-22 01:19:38 +02:00
Riccardo Mottola
5da063f7e7 Fix HelpFile by saving the property in the app project and generating the plist. 2021-05-13 03:21:16 +02:00
Riccardo
82c6aa3162
Merge pull request #17 from gnustep/checkExtFileMod
Check ext file mod
2021-05-12 22:23:01 +02:00
Gregory John Casamento
a186488b30 Highlight IBAction/IBOutlet 2021-04-10 06:16:43 -04:00
Gregory John Casamento
196914ef14 Minor fix to syntax highlighting to make it the same as C for equivalent keywords in ObjC 2021-04-10 06:09:54 -04:00
Riccardo Mottola
f9ed96a3e4 offer option to reload file 2021-04-05 19:51:42 +02:00
Riccardo Mottola
2ace3c327a re-set modification date on save, show alert panel 2021-03-31 23:25:50 +02:00
Riccardo Mottola
a6fc84bc9b saveFileTo should not update the save time 2021-02-22 16:55:13 +01:00
Riccardo Mottola
78e4f47c8f use path passed as parameter 2021-02-22 16:00:48 +01:00
Riccardo Mottola
059e105652 Keep track of the file modification date on each open/save, compare it to the current file to detect external modifications. 2021-02-19 10:45:30 +01:00
Riccardo Mottola
aa2ce8fd73 notify Gorm only if the file was really saved, or it will reload the old file 2021-02-18 00:32:47 +01:00
Riccardo
80d0c2575e
Merge pull request #12 from svgol/save_new_in_recent
* save just created projects to the list of recent documents
2021-02-17 23:09:42 +01:00
Riccardo Mottola
209f71d692 Open in project directory preferentially if no last open dir (quick version, ignores file type). 2021-02-12 08:45:16 +01:00
Riccardo Mottola
6544ff872e assure color is in RGB color space vefore calculating inverse 2021-02-11 12:01:48 +01:00
Riccardo
59a0afd3df
Merge pull request #11 from svgol/gorm_rename
* fixed an issue with gorm-file renaming
2021-02-11 00:23:23 +01:00
Sergei Golovin
e618c988a4 * save just created projects to the list of recent documents 2021-02-08 18:44:33 +04:00
Sergei Golovin
19d497c4d1 * fixed an issue with gorm-file renaming
* Framework/PCProject.m:
  - renaming of a gorm file during another file' editor being active
    led to exception  (the case is because we don't have
    editors for gorm files so the last viewed file, not the renamed
    gorm, is present currently to the user)... the cause is not checking
    NSRange on NSNotFound (the active editor's path can have nothing
    common with the renamed path)... added required check to the
    -[renameFile:toFile:]... may be worth to reactivate any editor when
    a gorm file is selected;

* Framework/PCProjectEditor.m:
  - deactivate the active editor on a .gorm file selection;
2021-02-07 14:59:49 +04:00
Riccardo Mottola
dcc9e0ef14 activate project only in one place 2021-02-06 19:55:14 +01:00
Riccardo Mottola
963700e3d6 provide project description for debugging 2021-02-06 19:40:35 +01:00
Riccardo Mottola
b87670431a fix: activate project also if coming from open project 2021-02-06 19:16:17 +01:00
Riccardo Mottola
ad65327732 Respect background selection preferences and infer text as inverse. 2021-02-06 12:31:10 +01:00
Riccardo Mottola
17182aea86 fix return value, avoid warning 2021-02-05 12:39:59 +01:00
Riccardo Mottola
24ede72e4a fixed a segfault due to return void instead of nil- fix by Sergei Golovin 2021-02-04 18:29:54 +01:00
Riccardo Mottola
263106b117 Cleanup a bit the setting of the active project and the key win. 2021-02-04 17:57:40 +01:00
Riccardo Mottola
b5324e9581 pass the sender to the window, log, if enabled, also the window title 2021-02-04 15:21:05 +01:00
Riccardo Mottola
76b8316b5c Check for invalid filenames and in case, reset to the original file name. 2021-02-03 23:17:42 +01:00
Riccardo Mottola
1541788856 Do not open an external editor if an in-window is requested. 2021-02-03 22:16:32 +01:00
Riccardo
eb5837315c
Merge pull request #3 from onflapp/fix-project-builder-log-selection
fix project builder log selection color
2021-02-03 21:14:02 +01:00
Riccardo Mottola
c0a820612c Access preferences directly without going through PCPrefController which is not part of the PC Framework (only its protocol PCPreferences is) 2020-09-09 00:25:28 +02:00
Riccardo Mottola
445b31db3f Separate font accessors in to class and instance methods.
Do not use preferences in class methods, since they are outside the protocol.
2020-09-08 23:52:03 +02:00
Riccardo Mottola
3df9137f39 Add setters for fonts. 2020-09-08 23:28:44 +02:00
rmottola
79125b35a8 use instance variable after setting it correctly 2020-09-08 20:51:23 +02:00
Riccardo Mottola
334bfd1f37 Access Preferences through its protocol, since the launcher is in the Framework. 2020-09-08 17:43:31 +02:00
Riccardo Mottola
654aca86ef ignore swap files 2020-09-08 17:41:42 +02:00
OnFlApp
f911af422f fix selection color of project builder log 2020-08-30 15:19:28 +02:00
Gregory Casamento
acf38c1b62
Merge pull request #2 from enzuru/fix-editor-preference
Fix broken editor preference
2020-04-20 01:50:15 -04:00
Ahmed Khanzada
3b006be691 Fix broken editor preference 2020-04-18 15:48:58 -07:00
Riccardo Mottola
75785db7e4 Fix range to use characters and not glyphs, sicne highlighting is based on chars. 2020-04-16 23:45:12 +02:00
Riccardo Mottola
8b48d77cbb Uniform font defaults to use PCPreferenceController, fix Debugger to actually make setFont work thorugh the view-delegate chain. 2020-03-24 23:54:22 +01:00
Riccardo Mottola
5d80d86a0c do not set delegate to NSOwner, we set it prorgammatically anyway 2020-03-24 23:50:33 +01:00
Riccardo Mottola
5f360ca78b Fix loading of font from preferences. 2020-03-24 17:24:41 +01:00
fredkiefer
0cdbc996a9 Remove compiler warnings by removing unneeded code. 2019-12-29 13:37:39 +01:00
Riccardo Mottola
6c4099258c Uniform context type to NSUInteger 2019-05-25 18:02:29 +02:00
Riccardo Mottola
97aa34218f Remove custom ToolTip implementation now present in GUI 2019-05-21 23:15:16 +02:00
Riccardo Mottola
0f8d024577 Add some GSDoc makefile aids 2018-06-19 00:21:26 +02:00
Riccardo Mottola
bf394dce9c Fix for nill bundle identifier. 2017-08-16 07:26:43 +02:00
Graham Lee
b4a148712e Add property keywords to ObjC syntax highlighting 2017-07-31 12:13:38 +01:00
Riccardo Mottola
5792e6dbfc Fix wrong declaration and missing subtype option
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40294 72102866-910b-0410-8b05-ffd578937521
2017-01-17 14:42:37 +00:00
Riccardo Mottola
d894b87557 Pass options to createProjectAt and use those to create Gorm/Renaissance subtypes, enable the former by default
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40290 72102866-910b-0410-8b05-ffd578937521
2017-01-13 01:33:37 +00:00
Riccardo Mottola
f1db0b7265 Conditionally split on windows with CR-LF
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40268 72102866-910b-0410-8b05-ffd578937521
2016-12-16 01:24:14 +00:00
Riccardo Mottola
af6ec6a874 Fix off-by-one in length when checking the last character
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40240 72102866-910b-0410-8b05-ffd578937521
2016-11-28 16:07:19 +00:00
Riccardo Mottola
478033988a improve parsing of initial and ending, fix pasing of quoted quotes as well
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40238 72102866-910b-0410-8b05-ffd578937521
2016-11-25 17:27:15 +00:00
Riccardo Mottola
340d101ffd skip and report empty lines as PCDBEmptyRecord
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40234 72102866-910b-0410-8b05-ffd578937521
2016-11-25 15:51:28 +00:00
Riccardo Mottola
6e70451153 do not show string
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40233 72102866-910b-0410-8b05-ffd578937521
2016-11-25 14:05:02 +00:00
Gregory John Casamento
19997eb5c1 Implemented debuggerSetup method.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40227 72102866-910b-0410-8b05-ffd578937521
2016-11-19 16:25:37 +00:00
Riccardo Mottola
b9df6e5d27 Commands need new-line
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40224 72102866-910b-0410-8b05-ffd578937521
2016-11-18 00:23:54 +00:00
Riccardo Mottola
3edc315827 Connect add/remove buttons.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40223 72102866-910b-0410-8b05-ffd578937521
2016-11-18 00:13:35 +00:00
Gregory John Casamento
eab302cc30 Change debuggerStarted to YES.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40222 72102866-910b-0410-8b05-ffd578937521
2016-11-17 14:21:29 +00:00
Gregory John Casamento
b7fc2a0ccf Added notification to fix breakpoint loading.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40221 72102866-910b-0410-8b05-ffd578937521
2016-11-17 14:18:48 +00:00
Riccardo Mottola
db013f327c differentiate line and method insert commands
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40147 72102866-910b-0410-8b05-ffd578937521
2016-10-13 23:12:24 +00:00
Riccardo Mottola
98d05ffe44 Add skeleton to handle breakpoints, add breakpoint types
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40114 72102866-910b-0410-8b05-ffd578937521
2016-09-29 08:58:57 +00:00
Riccardo Mottola
4e2edf5d4f add missing import
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40072 72102866-910b-0410-8b05-ffd578937521
2016-09-07 13:04:38 +00:00
Riccardo Mottola
4228651008 no resources currently
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@40071 72102866-910b-0410-8b05-ffd578937521
2016-09-07 13:04:28 +00:00
Riccardo Mottola
6139623d1e delegate getter
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39963 72102866-910b-0410-8b05-ffd578937521
2016-07-07 09:23:52 +00:00
Riccardo Mottola
93a9d4bb47 make NSIS packageable
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39889 72102866-910b-0410-8b05-ffd578937521
2016-06-21 07:37:23 +00:00
Gregory John Casamento
dab7063bc1 Add code to make commands appear when buttons are pressed in the debugger.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39839 72102866-910b-0410-8b05-ffd578937521
2016-06-06 15:47:39 +00:00
Riccardo Mottola
0e1fad82d3 tweak label positioning and sizing
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39809 72102866-910b-0410-8b05-ffd578937521
2016-05-25 23:40:24 +00:00
Riccardo Mottola
78c6f1622a Transition to NSInteger/NSUInteger
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39798 72102866-910b-0410-8b05-ffd578937521
2016-05-22 20:00:54 +00:00
Riccardo Mottola
2dff311c2a Comply to protocol
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39797 72102866-910b-0410-8b05-ffd578937521
2016-05-22 19:39:04 +00:00
Riccardo Mottola
f06ea6a5b6 some clean up
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39796 72102866-910b-0410-8b05-ffd578937521
2016-05-22 18:50:22 +00:00
Richard Frith-MacDonald
9e127b1771 mingw64 fix
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39783 72102866-910b-0410-8b05-ffd578937521
2016-05-19 07:35:46 +00:00
Riccardo Mottola
196afa593c clean PID before running
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39770 72102866-910b-0410-8b05-ffd578937521
2016-05-16 09:36:35 +00:00
Riccardo Mottola
58ced060bf move header inclusion up
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39769 72102866-910b-0410-8b05-ffd578937521
2016-05-15 22:57:30 +00:00
Riccardo Mottola
bd2c3557bc For GDB < v. 7 (on win), attempt to grab process id from Windows thread information.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39767 72102866-910b-0410-8b05-ffd578937521
2016-05-15 08:28:57 +00:00
Riccardo Mottola
3c0c85f3a5 On windows kill with DebugBreakProcess() and not tskill. Available only on WinXP or higher.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39766 72102866-910b-0410-8b05-ffd578937521
2016-05-15 08:27:14 +00:00
Riccardo Mottola
27f8ec6f47 minor
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39765 72102866-910b-0410-8b05-ffd578937521
2016-05-15 08:26:40 +00:00
Riccardo Mottola
f2a5703959 parse GDB version from initial information
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39749 72102866-910b-0410-8b05-ffd578937521
2016-05-12 23:41:27 +00:00
Riccardo Mottola
2a05234abb gdb version ivar and accessors. Plus, do not start quiet or version is not shown
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39748 72102866-910b-0410-8b05-ffd578937521
2016-05-12 23:29:47 +00:00
Gregory John Casamento
486dfc7197 Remove PTYView.* classes.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39733 72102866-910b-0410-8b05-ffd578937521
2016-05-09 05:27:06 +00:00
Riccardo Mottola
684a1b9836 actually set arguments
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39727 72102866-910b-0410-8b05-ffd578937521
2016-05-05 23:27:58 +00:00
Gregory John Casamento
be30cbfa45 Minor changes.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39726 72102866-910b-0410-8b05-ffd578937521
2016-05-05 19:44:43 +00:00
Gregory John Casamento
7bb6b0a2cc Partial parsing of result records.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39725 72102866-910b-0410-8b05-ffd578937521
2016-05-05 17:15:21 +00:00
Gregory John Casamento
21907bf78c Handle more escaped sequences.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39724 72102866-910b-0410-8b05-ffd578937521
2016-05-05 15:24:23 +00:00
Gregory John Casamento
71a0c53576 Parser code for MI output
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39720 72102866-910b-0410-8b05-ffd578937521
2016-05-03 23:41:18 +00:00
Gregory John Casamento
13412a4318 Parse pid from MI output.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39719 72102866-910b-0410-8b05-ffd578937521
2016-05-03 22:01:00 +00:00
Riccardo Mottola
21ddb6e18a call self, not the view, to interrupt
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39718 72102866-910b-0410-8b05-ffd578937521
2016-05-03 21:47:41 +00:00
Riccardo Mottola
18d31ca7ee initialize the PID and use it
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39717 72102866-910b-0410-8b05-ffd578937521
2016-05-03 21:31:37 +00:00
Riccardo Mottola
55b4d1a424 move process id into the debugger from the view
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39716 72102866-910b-0410-8b05-ffd578937521
2016-05-03 21:26:31 +00:00
Riccardo Mottola
1ab5955e3d move interrupt method to the debugger class and add windows implementation through tskill
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39714 72102866-910b-0410-8b05-ffd578937521
2016-05-03 16:37:37 +00:00
Riccardo Mottola
9396623f6f also update the protocol to executablePath
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39713 72102866-910b-0410-8b05-ffd578937521
2016-05-03 16:24:30 +00:00
Riccardo Mottola
18d49572ee Do not permit deletion beyond the new line or the gdb prompt
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39710 72102866-910b-0410-8b05-ffd578937521
2016-05-02 22:39:25 +00:00
Riccardo Mottola
1efa2a8783 Refactor path to executablePath
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39709 72102866-910b-0410-8b05-ffd578937521
2016-05-02 22:34:57 +00:00
Riccardo Mottola
94cdea40d3 accessors for the pipe delegate to have the debugger
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39704 72102866-910b-0410-8b05-ffd578937521
2016-04-28 13:56:31 +00:00
Riccardo Mottola
ce45c22ac0 reconnect some outlets
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39628 72102866-910b-0410-8b05-ffd578937521
2016-04-06 01:23:34 +00:00
Riccardo Mottola
f1f0317cce make outlets explicit
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39624 72102866-910b-0410-8b05-ffd578937521
2016-04-05 23:54:51 +00:00
Riccardo Mottola
cc279c49d0 make outlets explicit
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39623 72102866-910b-0410-8b05-ffd578937521
2016-04-05 23:41:26 +00:00
Riccardo Mottola
bc6d46ce5d inherit from NSObject protocol
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39592 72102866-910b-0410-8b05-ffd578937521
2016-03-23 01:32:01 +00:00
Riccardo Mottola
20aaffe6bd view delegate not super
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39591 72102866-910b-0410-8b05-ffd578937521
2016-03-23 01:28:08 +00:00
Riccardo Mottola
9d1a01891c deisable PTY in build
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39590 72102866-910b-0410-8b05-ffd578937521
2016-03-23 00:31:14 +00:00
Riccardo Mottola
0bc7e0d6b1 make ptyview follow the delegate protocol
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39589 72102866-910b-0410-8b05-ffd578937521
2016-03-23 00:19:46 +00:00
Riccardo Mottola
98712ea405 Merge in from pipes branch: stdio/stdout over pipes handled in a separate delegate class
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39588 72102866-910b-0410-8b05-ffd578937521
2016-03-22 23:30:14 +00:00
Riccardo Mottola
ffe529218b add bundle identifier
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39587 72102866-910b-0410-8b05-ffd578937521
2016-03-22 23:17:36 +00:00
Riccardo Mottola
34c9eb4279 Merge from branch: check bundle loading and warn
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39586 72102866-910b-0410-8b05-ffd578937521
2016-03-22 23:16:45 +00:00
Riccardo Mottola
b531ee6acb rename ptyview to pipedelegate
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/branches/ptyview_with_pipes@39585 72102866-910b-0410-8b05-ffd578937521
2016-03-22 22:36:05 +00:00
Riccardo Mottola
d8e498111e rename ptyview to pipedelegate
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/branches/ptyview_with_pipes@39583 72102866-910b-0410-8b05-ffd578937521
2016-03-22 22:34:07 +00:00
Riccardo Mottola
be6efbe7ba split view to delegate
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/branches/ptyview_with_pipes@39582 72102866-910b-0410-8b05-ffd578937521
2016-03-22 22:08:30 +00:00
Riccardo Mottola
715c206bab use fixed font size
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/branches/ptyview_with_pipes@39560 72102866-910b-0410-8b05-ffd578937521
2016-03-17 18:07:59 +00:00
Riccardo Mottola
d32078bd43 color output
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/branches/ptyview_with_pipes@39559 72102866-910b-0410-8b05-ffd578937521
2016-03-17 17:05:51 +00:00
Riccardo Mottola
4e43654f0a make more robust and warn if called empty
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/branches/ptyview_with_pipes@39558 72102866-910b-0410-8b05-ffd578937521
2016-03-17 15:21:50 +00:00
Riccardo Mottola
fc3846ac2f warn if no debugger found
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/branches/ptyview_with_pipes@39557 72102866-910b-0410-8b05-ffd578937521
2016-03-17 15:21:11 +00:00
Riccardo Mottola
12c4b63b33 enable debugger on windows
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/branches/ptyview_with_pipes@39556 72102866-910b-0410-8b05-ffd578937521
2016-03-17 15:20:49 +00:00
Riccardo Mottola
e082b8e3d7 treat keyboard input special and log it
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/branches/ptyview_with_pipes@39555 72102866-910b-0410-8b05-ffd578937521
2016-03-17 11:09:21 +00:00
Riccardo Mottola
d1a269c0cb handle CR to LF
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/branches/ptyview_with_pipes@39552 72102866-910b-0410-8b05-ffd578937521
2016-03-16 00:50:17 +00:00
Gregory John Casamento
b964564325 Move riccardo's change to a branch.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39551 72102866-910b-0410-8b05-ffd578937521
2016-03-15 22:48:44 +00:00
Gregory John Casamento
233b83b218 Move Riccardo's recent change to a branch and back it out on trunk so I can continue with MI work.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/branches/ptyview_with_pipes@39550 72102866-910b-0410-8b05-ffd578937521
2016-03-15 22:46:05 +00:00
Riccardo Mottola
4e885f7c5c Use stdio/stdout over pipes instead of a tty
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39545 72102866-910b-0410-8b05-ffd578937521
2016-03-15 18:13:29 +00:00
Riccardo Mottola
372a9c4b82 Update debug executable path search to run, make it work on windows
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39483 72102866-910b-0410-8b05-ffd578937521
2016-03-08 16:54:34 +00:00
Riccardo Mottola
e0617baf52 add bundle identifier in project template
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39479 72102866-910b-0410-8b05-ffd578937521
2016-03-08 12:07:48 +00:00
Riccardo Mottola
4998c77d29 remove my_abs which is not used
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39165 72102866-910b-0410-8b05-ffd578937521
2015-11-09 11:00:28 +00:00
Riccardo Mottola
dcacd40e33 Allocate a Mutable Array before assagning an Array to a MutableArray
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39164 72102866-910b-0410-8b05-ffd578937521
2015-11-09 10:56:56 +00:00
Richard Frith-MacDonald
da18e28fbf Add helpful warning about setting path in main make file
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39155 72102866-910b-0410-8b05-ffd578937521
2015-11-05 17:16:02 +00:00
Riccardo Mottola
950ad36c3a CFBundleIdentifier support for Apps.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39153 72102866-910b-0410-8b05-ffd578937521
2015-11-05 01:19:53 +00:00
Riccardo Mottola
e28350370e declare missing method
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39128 72102866-910b-0410-8b05-ffd578937521
2015-11-02 22:47:38 +00:00
Riccardo Mottola
75af5d310e Cleanups and NSInteger conversion
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@39127 72102866-910b-0410-8b05-ffd578937521
2015-11-02 22:35:04 +00:00
Riccardo Mottola
35f05690ed make defaults more sensible, since otherwise with syntax highlighting where the foreground can't be changed (yet) text was unreadable
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38941 72102866-910b-0410-8b05-ffd578937521
2015-08-28 21:32:25 +00:00
Riccardo Mottola
17c636f2f7 fix color space and gamma
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38695 72102866-910b-0410-8b05-ffd578937521
2015-06-26 13:43:27 +00:00
Riccardo Mottola
bd84b332de copyright bump
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38642 72102866-910b-0410-8b05-ffd578937521
2015-06-15 22:36:27 +00:00
Riccardo Mottola
711ddd72ab Enable project addition of obj-c++ classes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38641 72102866-910b-0410-8b05-ffd578937521
2015-06-15 22:26:14 +00:00
Riccardo Mottola
f46b6e594a If we have a directory, we check if it is a bundle that an app can open it and open it through NSWorkspace
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38631 72102866-910b-0410-8b05-ffd578937521
2015-06-13 18:01:17 +00:00
Riccardo Mottola
94538f96d0 Re-enable wrongly uncommented statement
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38630 72102866-910b-0410-8b05-ffd578937521
2015-06-13 17:54:03 +00:00
Riccardo Mottola
15b5d6052c clean up initialization
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38629 72102866-910b-0410-8b05-ffd578937521
2015-06-12 23:30:26 +00:00
Riccardo Mottola
1a519dc39d enable syntax highlighting for obj-c++
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38628 72102866-910b-0410-8b05-ffd578937521
2015-06-12 23:25:49 +00:00
Riccardo Mottola
fcd0c869e2 Enable parsing of obj-c++
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38627 72102866-910b-0410-8b05-ffd578937521
2015-06-12 23:17:06 +00:00
Riccardo Mottola
9fb7764ebc add obj-c++ icon resource and associate it in the editor
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38625 72102866-910b-0410-8b05-ffd578937521
2015-06-12 13:37:44 +00:00
Riccardo Mottola
fdae99568e Handle missing image better
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38624 72102866-910b-0410-8b05-ffd578937521
2015-06-12 09:55:32 +00:00
Riccardo Mottola
635a857419 Use the internal editor if it is available, even if no parser is available
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38623 72102866-910b-0410-8b05-ffd578937521
2015-06-12 09:00:49 +00:00
Riccardo Mottola
ebe3320d03 Use the internal editor if it is available, even if no parser is available
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38622 72102866-910b-0410-8b05-ffd578937521
2015-06-12 09:00:40 +00:00
Riccardo Mottola
5abf1258c2 Enable Obj-C++ extension
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38621 72102866-910b-0410-8b05-ffd578937521
2015-06-12 09:00:16 +00:00
Riccardo Mottola
6f7585f7a4 remove debug logs
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38618 72102866-910b-0410-8b05-ffd578937521
2015-06-11 21:49:30 +00:00
Riccardo Mottola
be1775dc44 Use console font for the view
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38451 72102866-910b-0410-8b05-ffd578937521
2015-04-07 21:17:14 +00:00
Riccardo Mottola
03d439d49c Use constants and not strings as keys.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38450 72102866-910b-0410-8b05-ffd578937521
2015-04-07 21:16:28 +00:00
Riccardo Mottola
7c4cd31b73 set background color with new prefs method, set foreground color (useless)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38427 72102866-910b-0410-8b05-ffd578937521
2015-03-22 23:19:16 +00:00
Riccardo Mottola
1806cf14dc remove debug log
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38426 72102866-910b-0410-8b05-ffd578937521
2015-03-22 22:57:16 +00:00
Riccardo Mottola
da0b2d8249 Use Preferences color methods
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38425 72102866-910b-0410-8b05-ffd578937521
2015-03-22 22:55:22 +00:00
Riccardo Mottola
ea33c39542 Direct preferences method for setting and getting colors
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38424 72102866-910b-0410-8b05-ffd578937521
2015-03-22 22:41:10 +00:00
Riccardo Mottola
56f365b1a0 Convert CMYK to RGB before serializing
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38423 72102866-910b-0410-8b05-ffd578937521
2015-03-22 21:41:56 +00:00
Riccardo Mottola
cb8e9ca4d7 fix warning
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38422 72102866-910b-0410-8b05-ffd578937521
2015-03-22 20:54:24 +00:00
Riccardo Mottola
2bb51c8462 Actually use the background color preference
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38421 72102866-910b-0410-8b05-ffd578937521
2015-03-22 18:26:50 +00:00
Riccardo Mottola
e287500b99 Move colorFromString from PCEditorFSCPrefs to PCPrefsController and make it thus generally available
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38420 72102866-910b-0410-8b05-ffd578937521
2015-03-22 18:06:17 +00:00
Riccardo Mottola
e60d0be099 Generate the PACKAGE_NAME for Frameworks
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38404 72102866-910b-0410-8b05-ffd578937521
2015-03-12 20:48:18 +00:00
Riccardo Mottola
b5e637be5f Bug Fix: Set the font manager with the picked font, not always the same
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38398 72102866-910b-0410-8b05-ffd578937521
2015-03-11 10:19:16 +00:00
Riccardo Mottola
0087c6cd17 Use the preferences Editor font instead of the system one
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38397 72102866-910b-0410-8b05-ffd578937521
2015-03-11 07:22:57 +00:00
Riccardo Mottola
ae829b3ac0 Use the preferences Editor font instead of the system one
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38396 72102866-910b-0410-8b05-ffd578937521
2015-03-11 07:22:48 +00:00
Riccardo Mottola
35b76bb231 Provide Editor and Fixed font preferences, instead of plain and rich
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38395 72102866-910b-0410-8b05-ffd578937521
2015-03-11 07:21:35 +00:00
Riccardo Mottola
a180a70e83 Initialize backup wrapper after wrapperPath since it depends on it
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38252 72102866-910b-0410-8b05-ffd578937521
2014-12-16 17:32:09 +00:00
Riccardo Mottola
5c25a46af2 Generate sections only if there are classes.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38251 72102866-910b-0410-8b05-ffd578937521
2014-12-16 16:06:06 +00:00
Riccardo Mottola
4111197fd7 Create mm sections in makefiles for Objective-C++
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38250 72102866-910b-0410-8b05-ffd578937521
2014-12-14 22:36:09 +00:00
Riccardo Mottola
f4110f9817 add mm to plist
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38244 72102866-910b-0410-8b05-ffd578937521
2014-12-08 21:32:38 +00:00
Riccardo Mottola
6ff7f19613 add mm icon
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38243 72102866-910b-0410-8b05-ffd578937521
2014-12-08 18:37:44 +00:00
Riccardo Mottola
8b3327c10b Accept also Objective-C++ classes as Class files
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38237 72102866-910b-0410-8b05-ffd578937521
2014-12-07 23:28:59 +00:00
Riccardo Mottola
cfebdb4e0d slightly revamp InfoPanel, remove maintainer, make larger, show all names
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38191 72102866-910b-0410-8b05-ffd578937521
2014-11-20 11:45:57 +00:00
Riccardo Mottola
37fbd2d382 Force last action on parser if file lacks a new line at EOF
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38189 72102866-910b-0410-8b05-ffd578937521
2014-11-20 09:44:42 +00:00
Riccardo Mottola
c900c7c4ce Fix parser to ignore comments inside strings.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38186 72102866-910b-0410-8b05-ffd578937521
2014-11-20 00:29:56 +00:00
Riccardo Mottola
8a9d120d5c release bump
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38131 72102866-910b-0410-8b05-ffd578937521
2014-10-24 12:29:48 +00:00
Riccardo Mottola
9f1a78361e fix warning of unused variable
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38130 72102866-910b-0410-8b05-ffd578937521
2014-10-24 12:14:51 +00:00
Riccardo Mottola
90b0b362c8 Revert windows-specific hacks by German to make project-type choice work. They would crash when using PC without the WinUX theme.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38111 72102866-910b-0410-8b05-ffd578937521
2014-10-07 15:18:53 +00:00
Germán Arias
5dcf71e0a8 Fix problem with LineJumper panel.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38062 72102866-910b-0410-8b05-ffd578937521
2014-09-09 01:33:49 +00:00
Riccardo Mottola
591040d68e mark key with return shortcut
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38061 72102866-910b-0410-8b05-ffd578937521
2014-09-08 14:11:37 +00:00
Riccardo Mottola
9e041e9b35 Do not use GS internals but standard methods
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38056 72102866-910b-0410-8b05-ffd578937521
2014-09-02 09:36:30 +00:00
Riccardo Mottola
c312302b39 Implement and add a simple go-to-line panel
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38051 72102866-910b-0410-8b05-ffd578937521
2014-08-29 00:25:06 +00:00
Wolfgang Lux
e617310415 Fix condition order to prevent out of range array accesses, which may
lead to a segfault when unhighlighting two matching parentheses.

Fix by Markus <desterium@t-online.de>.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38050 72102866-910b-0410-8b05-ffd578937521
2014-08-25 21:20:32 +00:00
Gregory John Casamento
82979d58d8 Update version of gorm file to latest.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38047 72102866-910b-0410-8b05-ffd578937521
2014-08-18 20:07:48 +00:00
Riccardo Mottola
24b85f1573 Fix return value
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38033 72102866-910b-0410-8b05-ffd578937521
2014-08-04 18:47:06 +00:00
Riccardo Mottola
a7673e0ac3 Move GoToLine to the View akin to the NSTextView find panel and declare it in the editor view protocol.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38031 72102866-910b-0410-8b05-ffd578937521
2014-08-03 22:03:38 +00:00
Germán Arias
7fc6faaddc Fix problem with FindPanel.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38024 72102866-910b-0410-8b05-ffd578937521
2014-08-03 07:16:41 +00:00
Riccardo Mottola
ffb201e9cb Convert line numbers to NSUInteger / integerValue
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@38021 72102866-910b-0410-8b05-ffd578937521
2014-07-31 10:18:31 +00:00
Riccardo Mottola
57c4c0e22a Enhance clang support
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37848 72102866-910b-0410-8b05-ffd578937521
2014-05-06 13:11:53 +00:00
Riccardo Mottola
1293803645 Enhance clang support
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37847 72102866-910b-0410-8b05-ffd578937521
2014-05-06 13:11:45 +00:00
Riccardo Mottola
847052d58a Recognize also egcc and clang as compilers
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37831 72102866-910b-0410-8b05-ffd578937521
2014-05-03 22:56:55 +00:00
Riccardo Mottola
d52982ba41 Add recognition of fatal errors
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37829 72102866-910b-0410-8b05-ffd578937521
2014-05-03 21:16:23 +00:00
Germán Arias
1d906ebdf1 Add a comment.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37791 72102866-910b-0410-8b05-ffd578937521
2014-04-08 23:03:04 +00:00
Germán Arias
761ba276ce Fix problem with launcher panel.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37787 72102866-910b-0410-8b05-ffd578937521
2014-04-06 23:40:32 +00:00
Germán Arias
ae84c3ad36 Fix problem with coding on Windows.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37784 72102866-910b-0410-8b05-ffd578937521
2014-04-03 00:56:52 +00:00
Germán Arias
6021cce07b Change class for window SaveModified.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37781 72102866-910b-0410-8b05-ffd578937521
2014-04-02 07:14:38 +00:00
Germán Arias
c92e82d1c2 Remove two last commits.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37780 72102866-910b-0410-8b05-ffd578937521
2014-04-02 06:23:08 +00:00
Germán Arias
8c3ae8ddba Fix last change.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37778 72102866-910b-0410-8b05-ffd578937521
2014-03-31 00:52:36 +00:00
Germán Arias
93438554c3 Fix for user name on Windows.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37773 72102866-910b-0410-8b05-ffd578937521
2014-03-28 00:59:13 +00:00
Germán Arias
9d220fdfad Improve to work on Windows.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37736 72102866-910b-0410-8b05-ffd578937521
2014-03-09 04:15:35 +00:00
Germán Arias
7b95ed074e Fix problem in last commit.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37732 72102866-910b-0410-8b05-ffd578937521
2014-03-08 00:31:35 +00:00
Germán Arias
3da9e8ca27 Changes to allow Windows user make a new project using native Open/Save panels.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37722 72102866-910b-0410-8b05-ffd578937521
2014-03-03 04:24:05 +00:00
Germán Arias
ef3a931684 Connect Line Nubmer... to first responder.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37613 72102866-910b-0410-8b05-ffd578937521
2014-01-17 06:20:18 +00:00
Riccardo Mottola
46dbf0ce36 remove default for the build tool
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37608 72102866-910b-0410-8b05-ffd578937521
2014-01-15 23:36:40 +00:00
Riccardo Mottola
4469cb1820 fix mismatched parentheses
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37589 72102866-910b-0410-8b05-ffd578937521
2014-01-13 11:23:25 +00:00
Riccardo Mottola
f76a08b9a0 Use the convenience method to determine better defaults for make and gdb
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37588 72102866-910b-0410-8b05-ffd578937521
2014-01-13 10:50:50 +00:00
Riccardo Mottola
d6cf2a702d Convenience method to find executables, by Richard Frith-Macdonald
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37587 72102866-910b-0410-8b05-ffd578937521
2014-01-13 10:47:44 +00:00
Riccardo Mottola
ea418f3ff1 append exe on windows before checking
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37585 72102866-910b-0410-8b05-ffd578937521
2014-01-12 21:39:17 +00:00
Riccardo Mottola
842c395eae debug stuff cleanup
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37584 72102866-910b-0410-8b05-ffd578937521
2014-01-12 20:12:47 +00:00
Riccardo Mottola
f81be77e3b clean up, remove NSLog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37469 72102866-910b-0410-8b05-ffd578937521
2013-12-17 17:42:14 +00:00
Riccardo Mottola
c7e5eeba89 Check that the executable exists before running it.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37468 72102866-910b-0410-8b05-ffd578937521
2013-12-17 16:49:10 +00:00
Germán Arias
907f26aab5 Change the height of Preferences panel.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37266 72102866-910b-0410-8b05-ffd578937521
2013-10-20 19:15:14 +00:00
Germán Arias
2d92329112 Remove class TextFinder.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37241 72102866-910b-0410-8b05-ffd578937521
2013-10-16 05:06:29 +00:00
Germán Arias
bdf1f9e902 Use standard menu Find and connect Line Number... to first responder.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37221 72102866-910b-0410-8b05-ffd578937521
2013-10-13 19:04:09 +00:00
Germán Arias
cb04cf2bb5 Improvements in preferences.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37199 72102866-910b-0410-8b05-ffd578937521
2013-10-07 01:05:13 +00:00
Germán Arias
74db97895a Improvements to handle the style NSWindows95InterfaceStyle.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37153 72102866-910b-0410-8b05-ffd578937521
2013-09-25 00:25:49 +00:00
Riccardo Mottola
f0f502f8ab Transition to NSUInteger.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37137 72102866-910b-0410-8b05-ffd578937521
2013-09-22 20:26:06 +00:00
Riccardo Mottola
3dfb67766c NSUInteger / NSInteger transitions for count/length variables.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37135 72102866-910b-0410-8b05-ffd578937521
2013-09-22 18:53:40 +00:00
Riccardo Mottola
78d4babed7 Do not advance start and get startType if we are at the end anyway.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37134 72102866-910b-0410-8b05-ffd578937521
2013-09-22 18:49:37 +00:00
Riccardo Mottola
f33f962c25 Transition count/length variables to NSUInteger
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37132 72102866-910b-0410-8b05-ffd578937521
2013-09-21 23:22:04 +00:00
Riccardo Mottola
b010cead23 If filename is not absolute, normalize it (happens when invoking with the filename as argument to the application, e.g. 'ProjectCenter myProject').
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37130 72102866-910b-0410-8b05-ffd578937521
2013-09-21 18:01:04 +00:00
Riccardo Mottola
54c00a562f Fix parser check for temrination, do not look past last char.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37129 72102866-910b-0410-8b05-ffd578937521
2013-09-21 17:58:52 +00:00
Riccardo Mottola
560bdde237 Fix parser check for temrination, do not look past last char.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37128 72102866-910b-0410-8b05-ffd578937521
2013-09-21 17:58:39 +00:00
Riccardo Mottola
567dbdeb5b Do not launch replacing if copying was not successful, avoids hang of app.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37123 72102866-910b-0410-8b05-ffd578937521
2013-09-20 09:17:55 +00:00
Riccardo Mottola
d7830b79c8 Fix int vs. float
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37091 72102866-910b-0410-8b05-ffd578937521
2013-09-17 17:18:38 +00:00
Riccardo Mottola
c0007e5b0a replace deprecated makevariable
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@37090 72102866-910b-0410-8b05-ffd578937521
2013-09-17 17:16:59 +00:00
Sebastian Reitenbach
78bf74dc1d * unsigned int -> NSDragOperation
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@36197 72102866-910b-0410-8b05-ffd578937521
2013-02-25 17:24:33 +00:00
Sebastian Reitenbach
7c84efcd92 * Framework/PCProjectBrowser.m
* Framework/PCSaveModified.m
        * Framework/PCProjectLoadedFiles.m
        * Framework/PCProjectBuilder.m
        * Headers/ProjectCenter/PCProjectBrowser.h
        * Headers/ProjectCenter/PCSaveModified.h
        * Headers/ProjectCenter/PCProjectLoadedFiles.h
        * Modules/Projects/Application/PCAppProject+Inspector.h
        * Modules/Projects/Application/PCAppProject+Inspector.m
          some more (unsigned) int -> NS(U)Integer transitions
          not catched from clang, but found by libobjc2 in debug mode

OK Fred



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@36108 72102866-910b-0410-8b05-ffd578937521
2013-02-10 18:34:12 +00:00
Sebastian Reitenbach
8562d733c5 * Framework/PCProjectInspector.m
* Modules/Editors/ProjectCenter/SyntaxDefinition.m
        * Modules/Editors/ProjectCenter/SyntaxHighlighter.m
        * Modules/Editors/ProjectCenter/TextPattern.m
        * Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m
          some more (unsigned) int -> NS(U)Integer transitions
          and some shutup of clang compiler warnings

OK Fred



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@36107 72102866-910b-0410-8b05-ffd578937521
2013-02-10 18:30:25 +00:00
Sebastian Reitenbach
b97e7068dc * Modules/Debuggers/ProjectCenter/PTYView.m
Include right headers for openpty on OpenBSD

OK Fred



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@36099 72102866-910b-0410-8b05-ffd578937521
2013-02-09 14:42:13 +00:00
Sebastian Reitenbach
b97769af80 * Modules/Preferences/Build/PCBuildPrefs.m
* Framework/PCButton.m
        * Modules/Parsers/ProjectCenter/ObjCMethodHandler.m
          shutup some clang warnings
        * Framework/PCProjectBrowser.m
          NSInteger conversions

OK Fred 



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@36098 72102866-910b-0410-8b05-ffd578937521
2013-02-09 14:33:38 +00:00
Sebastian Reitenbach
e89f88456b * Framework/PCFileCreator.m
* Framework/PCMakefileFactory.m
        * Framework/PCProjectBuilder.m
        * Framework/PCProjectLauncher.m
        * Framework/PCProjectManager.m
        * Framework/PCProject.m
        * Modules/Projects/Application/PCAppProject.m
        * Modules/Projects/Tool/PCToolProject.m
          shutup clang compiler warning about redunant literal
          string usage


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@36097 72102866-910b-0410-8b05-ffd578937521
2013-02-09 14:29:44 +00:00
Germán Arias
ca05e41d9f Fix problem with Library projects.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@35815 72102866-910b-0410-8b05-ffd578937521
2012-11-22 06:47:03 +00:00
Riccardo Mottola
df3d681858 Do not include stropts.h for most OS's anymore.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@35480 72102866-910b-0410-8b05-ffd578937521
2012-08-30 09:08:26 +00:00
Riccardo Mottola
8152e6b4ee recent document menu support
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@35385 72102866-910b-0410-8b05-ffd578937521
2012-08-09 16:23:39 +00:00
Wolfgang Lux
f3ac6d9d8a ProjectCenter fixes for compilation on 64-bit hosts.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@35330 72102866-910b-0410-8b05-ffd578937521
2012-07-30 21:07:19 +00:00
Sergii Stoian
d98014879b * Framework/PCProjectInspector.m: (-removeAuthor): Improve selection
of author list items after item deletion. Inspired by bug #25571. 
Bug should be closed.




git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@35271 72102866-910b-0410-8b05-ffd578937521
2012-07-09 00:05:18 +00:00
Riccardo Mottola
8dde4d19e4 Update applicationShouldTerminate signature.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@35198 72102866-910b-0410-8b05-ffd578937521
2012-06-12 13:11:04 +00:00
Riccardo Mottola
360e820370 Use centerScanRect to avoid strange problems with AA text in editor.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@35197 72102866-910b-0410-8b05-ffd578937521
2012-06-12 10:41:19 +00:00
Riccardo Mottola
078e0502af fix typo in comment
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@35196 72102866-910b-0410-8b05-ffd578937521
2012-06-12 08:03:03 +00:00
Riccardo Mottola
906750c769 NetBSD doesn't support streams either.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@35092 72102866-910b-0410-8b05-ffd578937521
2012-04-20 08:35:30 +00:00
Riccardo Mottola
7b81179dce Fix imports for freebsd
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@35087 72102866-910b-0410-8b05-ffd578937521
2012-04-17 10:20:03 +00:00
Riccardo Mottola
912965080b use setAllowedFileTypes method instead of private method which was removed
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@33818 72102866-910b-0410-8b05-ffd578937521
2011-09-08 13:05:29 +00:00
Riccardo Mottola
c0a699944f Correct cast according to ctypes caveats.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@32941 72102866-910b-0410-8b05-ffd578937521
2011-04-28 19:50:54 +00:00
Riccardo Mottola
2ca9202b6e Remove extra parentheses which confuse = and == warning.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@32801 72102866-910b-0410-8b05-ffd578937521
2011-04-07 16:28:14 +00:00
Riccardo Mottola
2651233f3f warning fix
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@32800 72102866-910b-0410-8b05-ffd578937521
2011-04-07 13:30:48 +00:00
Riccardo Mottola
4bae7d4a63 change ifdef to detect non-gnustep
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@32799 72102866-910b-0410-8b05-ffd578937521
2011-04-07 12:36:32 +00:00
Fred Kiefer
e0fe4ae4e3 * Modules/Parsers/ProjectCenter/PCParser.m [-parse]: Move the
selector and IMP definitions inside the method. Global IMP caching
is always wrong! And this broke compilation with llvm.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@32788 72102866-910b-0410-8b05-ffd578937521
2011-04-06 18:46:03 +00:00
Nicola Pero
26fafd712c Added FIXME
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@32574 72102866-910b-0410-8b05-ffd578937521
2011-03-14 10:50:23 +00:00
Wolfgang Lux
405a68887b Ask user for confirmation before reverting a file in PC.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31943 72102866-910b-0410-8b05-ffd578937521
2011-01-24 13:29:44 +00:00
Wolfgang Lux
f8767ee74f Fix an annoying bug in PC's editor where pressing the tab key would
delete whole empty lines. Also register insertions done by the tab key
at the undo manager.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31942 72102866-910b-0410-8b05-ffd578937521
2011-01-24 13:27:52 +00:00
Wolfgang Lux
6abca97576 ... and get the PC inspector panel's display right again.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31843 72102866-910b-0410-8b05-ffd578937521
2011-01-06 16:10:59 +00:00
Wolfgang Lux
20d074fc08 Fix PC bug where the document based app flag was reset after opening
the project inspector for the first time.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31842 72102866-910b-0410-8b05-ffd578937521
2011-01-06 15:58:13 +00:00
Wolfgang Lux
3b73fff1fc Add either debug=yes or debug=no to the arguments of a PC build task,
since the debug variable no longer has a clear default for quite some
time.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31791 72102866-910b-0410-8b05-ffd578937521
2010-12-28 14:54:20 +00:00
Germán Arias
2613728937 Added UI controls for languages and its methods
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31764 72102866-910b-0410-8b05-ffd578937521
2010-12-23 02:22:26 +00:00
Germán Arias
affd155f9c Added Languages option at Inspector
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31748 72102866-910b-0410-8b05-ffd578937521
2010-12-19 03:40:35 +00:00
Wolfgang Lux
615124400c Fix race condition, which could lock PC after running a build task.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31707 72102866-910b-0410-8b05-ffd578937521
2010-12-04 09:35:33 +00:00
Wolfgang Lux
84dc841e64 Don't ask for a project directory with an extension project or pcproj
when creating a new project in PC and do not arbitrarily strip
extensions from the project name.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31706 72102866-910b-0410-8b05-ffd578937521
2010-12-04 08:08:50 +00:00
Germán Arias
d334376dd6 Reverted a previous change since extension project is not used anymore
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31704 72102866-910b-0410-8b05-ffd578937521
2010-12-04 06:01:21 +00:00
Riccardo Mottola
4cddbeda45 Removed useless INSTDOMAIN variable during build phase
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31699 72102866-910b-0410-8b05-ffd578937521
2010-12-01 16:48:53 +00:00
Riccardo Mottola
a0f1d6efca version bump
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31698 72102866-910b-0410-8b05-ffd578937521
2010-12-01 15:27:06 +00:00
Riccardo Mottola
e9ecaf9b08 Create project in a path with the project name.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31697 72102866-910b-0410-8b05-ffd578937521
2010-12-01 15:26:12 +00:00
Riccardo Mottola
eb2972f8fb Set, use and create makefiles using ain installation DOMAIN and not a director
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31688 72102866-910b-0410-8b05-ffd578937521
2010-11-28 21:38:53 +00:00
Riccardo Mottola
7c094590a7 minor fixes in gorms
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31652 72102866-910b-0410-8b05-ffd578937521
2010-11-26 11:42:42 +00:00
Germán Arias
07308c6ccf Removed Project Languages option on Inspector panel
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31648 72102866-910b-0410-8b05-ffd578937521
2010-11-24 06:34:02 +00:00
Riccardo Mottola
77f710f67e Initialize isDir value
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31643 72102866-910b-0410-8b05-ffd578937521
2010-11-23 07:15:15 +00:00
Germán Arias
912da0d4b3 Adding Languages panel part I
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31642 72102866-910b-0410-8b05-ffd578937521
2010-11-22 17:25:34 +00:00
Germán Arias
79ae98bbb0 Improvements at Project Inspector
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31640 72102866-910b-0410-8b05-ffd578937521
2010-11-22 03:12:59 +00:00
Germán Arias
102557c7ca Fix on key PCUserLanguages
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31639 72102866-910b-0410-8b05-ffd578937521
2010-11-22 01:33:53 +00:00
Riccardo Mottola
2a4aa4f0b8 initialize range to ensure it does not ocntain garbage later
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31628 72102866-910b-0410-8b05-ffd578937521
2010-11-18 16:47:25 +00:00
Riccardo Mottola
d27ac097b1 fix memory leak
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31623 72102866-910b-0410-8b05-ffd578937521
2010-11-18 10:38:13 +00:00
Riccardo Mottola
9c2e1a4b7b fix memory leak
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31622 72102866-910b-0410-8b05-ffd578937521
2010-11-18 10:01:01 +00:00
Riccardo Mottola
a8749dd060 fix memory leak
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31620 72102866-910b-0410-8b05-ffd578937521
2010-11-18 09:32:19 +00:00
Riccardo Mottola
da048c3aa0 remove unused variable
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31619 72102866-910b-0410-8b05-ffd578937521
2010-11-18 09:23:05 +00:00
Riccardo Mottola
aab308dba1 remove useless instruction and assignment
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31618 72102866-910b-0410-8b05-ffd578937521
2010-11-18 09:10:36 +00:00
Riccardo Mottola
099849f7ff Init could return a different object, take it in account
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31617 72102866-910b-0410-8b05-ffd578937521
2010-11-17 23:45:17 +00:00
Germán Arias
95eb255d35 Fix on AddFiles panel
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31613 72102866-910b-0410-8b05-ffd578937521
2010-11-16 17:13:19 +00:00
Germán Arias
28c343707e Delete the extension .project at the name of the applications
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31590 72102866-910b-0410-8b05-ffd578937521
2010-11-06 05:50:22 +00:00
Sergii Stoian
c1c7f004d4 * Framework/PCProjectBrowser.m:
(-nameOfSelectedCategory): Return 'nil' if name of subproject
selected. Add comments.
(-nameOfSelectedFile): Check if category is selected.
(-click:): check if category is selected.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31105 72102866-910b-0410-8b05-ffd578937521
2010-08-09 23:37:47 +00:00
Sergii Stoian
18efb7552d 2010-07-31 Sergii Stoian <stoyan255@ukr.net>
* Framework/PCProject.m:
        (-assignProjectDict:): Fix setting projectPath to project
        dir (not to *.pcproj dir).
        * Framework/PCFilemanager.m:
        (-filesOfTypes:operation:multiple:title:accView:): Set allowed
        file types to panel of types is not nil.
        (-panel:isValidFilename): Use set allowed file types to panel.

2010-07-30 Sergii Stoian <stoyan255@ukr.net>
        * Framework/PCProject.m:
        (-subprojectWithName:): Pass to openProjectAt: subproject dir.
        openProjectat: can now handle this situation.
        * Framework/PCProjectManager.m:
        (-openProjectAt:): Implement handling of 'aPath' argument as
        project file and as project dir. Select *.pcproj if exists then
        try to load PC.project.
        (-openProject): Implement intelligent selection of project file
        when selected *.pcproj, PC.project or project dir.
        * Framework/PCFilemanager.m:
        (-filesOfTypes:operation:multiple:title:accView:): Remove code
        specific for opening projects (moved to PCProjectManager's
        openProject).
        (-panel:isValidFilename): Fix handling project file detection.
        (-filesWithExtension:atPath:includeDirs:): New method. Returns
        list of files with specified extension. Also returns dirs if
        'includeDirs' set to YES.

2010-07-28 Sergii Stoian <stoyan255@ukr.net>
        * Framework/PCProject.m:
        (close:): Fix closing of subprojects. Remove subproject from
        Projectmanager's list of loaded projects.
        * Framework/PCLogController.m:
        (-init): Change font size to systemFontSize.

2010-07-24 Sergii Stoian <stoyan255@ukr.net>
        * Headers/ProjectCenter/PCProjectBuilder.m:
        * Framework/PCProjectBuilder.m:
        (cleanupAfterMake:): Added new argument (NSString) to method
        containing current status text. Before status text in project window
        always stated "...terminated".


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31093 72102866-910b-0410-8b05-ffd578937521
2010-08-07 21:56:04 +00:00
Riccardo Mottola
039b7f2d99 mark editor undo as done
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@31023 72102866-910b-0410-8b05-ffd578937521
2010-07-23 10:33:03 +00:00
Riccardo Mottola
be6c8bbcf1 Log conversion into PC log and not console. Remove unneded keys.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30951 72102866-910b-0410-8b05-ffd578937521
2010-07-13 09:31:38 +00:00
Riccardo Mottola
e1689431f6 remove LAST_EDITING from project template. It is not needed for validation and should not be in an empty project.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30944 72102866-910b-0410-8b05-ffd578937521
2010-07-10 21:29:37 +00:00
Riccardo Mottola
a255e0650c remove LAST_EDITING from project template. It is not needed for validation and should not be in an empty project.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30943 72102866-910b-0410-8b05-ffd578937521
2010-07-10 21:28:37 +00:00
Gregory John Casamento
c3960f94ee * Modules/Editors/ProjectCenter/PCEditor.m: in -save implemented
simple mechanism for propagating changes in classes to Gorm when 
	updating a header file.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30941 72102866-910b-0410-8b05-ffd578937521
2010-07-10 05:11:58 +00:00
Riccardo Mottola
b7fb534bb9 do not merge in user entries if they are empty
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30940 72102866-910b-0410-8b05-ffd578937521
2010-07-09 22:28:10 +00:00
Riccardo Mottola
b6ab133ce1 Log missing key
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30938 72102866-910b-0410-8b05-ffd578937521
2010-07-08 23:18:27 +00:00
Riccardo Mottola
760149038d When opening a subproejct pass the bundle of the project, not the project file inside
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30937 72102866-910b-0410-8b05-ffd578937521
2010-07-08 22:45:40 +00:00
Gregory John Casamento
c816587571 Fixed issue with pause button.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30935 72102866-910b-0410-8b05-ffd578937521
2010-07-07 18:39:56 +00:00
Riccardo Mottola
a35a744f7a fixed warning
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30843 72102866-910b-0410-8b05-ffd578937521
2010-06-24 10:56:44 +00:00
Riccardo Mottola
e5b908e541 removed floorf()
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30826 72102866-910b-0410-8b05-ffd578937521
2010-06-22 21:36:33 +00:00
Riccardo Mottola
491745fd36 Fix highlighting for standalone editors.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30819 72102866-910b-0410-8b05-ffd578937521
2010-06-22 16:03:05 +00:00
Riccardo Mottola
10ccc32c63 Deleted
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30818 72102866-910b-0410-8b05-ffd578937521
2010-06-22 16:02:49 +00:00
Riccardo Mottola
85941fac98 clean up parenthesis highlighting
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30805 72102866-910b-0410-8b05-ffd578937521
2010-06-22 00:20:46 +00:00
Wolfgang Lux
1c0d8df3db Add .dylib to ProjectCenter's list of known library extensions.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30724 72102866-910b-0410-8b05-ffd578937521
2010-06-15 03:57:31 +00:00
Wolfgang Lux
c546135d3e Fix bug where ProjectCenter could include some localized resources in
the RESOURCE_FILES Makefile variable.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30723 72102866-910b-0410-8b05-ffd578937521
2010-06-15 03:52:02 +00:00
Wolfgang Lux
bd0738109c Prevent a crash when opening a subproject in ProjectCenter and fix bug
where ProjectCenter would not quit after opening a subproject.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30721 72102866-910b-0410-8b05-ffd578937521
2010-06-15 03:43:32 +00:00
Wolfgang Lux
082fb0ae70 Attempt to prevent ProjectCenter crashes when a project is closed by
ensuring that project and editor windows are closed before their
owners are deallocated.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30599 72102866-910b-0410-8b05-ffd578937521
2010-06-07 07:04:24 +00:00
Riccardo Mottola
b013152da8 check before replacing and allow undo (by Wolfgang Lux)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30567 72102866-910b-0410-8b05-ffd578937521
2010-06-03 22:39:54 +00:00
Riccardo Mottola
de94278815 declare string constants with @
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30566 72102866-910b-0410-8b05-ffd578937521
2010-06-03 22:02:06 +00:00
Riccardo Mottola
43211ec2b7 declare new code editor view protocol, make the PCEditorView return the editor with a n accessor, make the project window access the undo manager that way
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30551 72102866-910b-0410-8b05-ffd578937521
2010-06-02 23:55:29 +00:00
Riccardo Mottola
7928e2b4e5 keep an Undo manager for the Editor and return that to the window
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30527 72102866-910b-0410-8b05-ffd578937521
2010-06-01 13:35:07 +00:00
Gregory John Casamento
00ca943852 * Modules/Projects/Application/Resources/main.m: Same as below.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30485 72102866-910b-0410-8b05-ffd578937521
2010-05-30 07:34:25 +00:00
Gregory John Casamento
bf26cfe775 * Modules/Projects/Application/Resources/AppController.h
* Modules/Projects/Application/Resources/AppController.m
	* Modules/Projects/Tool/Resources/main.m: Remove licensing
	and copyright information from these since we don't want to 
	assume that the user will be writing a GPLv3 program owned by the
	FSF (while that would be nice) it's not correct to assume it.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30484 72102866-910b-0410-8b05-ffd578937521
2010-05-30 07:10:31 +00:00
Gregory John Casamento
b4c12c1a73 * Framework/English.lproj/SaveModified.gorm: Correct issues with
Gorm file.
	* Framework/PCSaveModified.m: Use setTitle: instead of setStringValue:
	to set the titles of the buttons.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30481 72102866-910b-0410-8b05-ffd578937521
2010-05-30 05:47:11 +00:00
Gregory John Casamento
3517ccbc92 * Modules/Editors/ProjectCenter/PCEditor.m: Temporarily comment out
previous change util we find the proper fix as it was preventing 
	files from being saved.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@30480 72102866-910b-0410-8b05-ffd578937521
2010-05-30 05:36:36 +00:00
Riccardo Mottola
3ce2f4a4c5 setup undo on the editor view
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@29858 72102866-910b-0410-8b05-ffd578937521
2010-03-06 16:07:28 +00:00
Richard Frith-MacDonald
6607fcc0ef update templates
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@29063 72102866-910b-0410-8b05-ffd578937521
2009-11-26 12:43:40 +00:00
Sergii Stoian
45320c4c28 * Framework/PCProjectBuilder.m: (parseErrorLine:) prepend filname with current
build path.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28725 72102866-910b-0410-8b05-ffd578937521
2009-09-22 21:59:53 +00:00
Gregory John Casamento
1a3b127a7e * Framework/PCMakefileFactory.m: Check if buildDir is nil before
generating the BUILD_DIR directive in the make file.   Sometimes
	this is coming up with (nil) on Windows which is causing the build
	phase to fail.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28716 72102866-910b-0410-8b05-ffd578937521
2009-09-20 07:46:11 +00:00
Riccardo Mottola
ae023c0c49 added icon drawn by me
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28715 72102866-910b-0410-8b05-ffd578937521
2009-09-19 21:44:23 +00:00
Riccardo Mottola
0d792e2a6d fixed John's name, added Riccardo Mottola
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28706 72102866-910b-0410-8b05-ffd578937521
2009-09-18 23:26:15 +00:00
Riccardo Mottola
2db88e2844 Use path component instead of hard-coded slash
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28705 72102866-910b-0410-8b05-ffd578937521
2009-09-18 21:57:35 +00:00
Nicola Pero
daa35431f2 Output no GNUSTEP_INSTALLATION_DOMAIN if it's not set
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28698 72102866-910b-0410-8b05-ffd578937521
2009-09-17 09:20:21 +00:00
Nicola Pero
1f210b10e8 Fixed typo in last change
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28697 72102866-910b-0410-8b05-ffd578937521
2009-09-17 09:08:02 +00:00
Nicola Pero
a2e0ccf011 Try to detect spaces in paths and warn users if they create projects with spaces in paths, and follow the official recommendations of not setting GNUSTEP_INSTALLATION_DOMAIN unless a particular one needs to be specified
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28696 72102866-910b-0410-8b05-ffd578937521
2009-09-17 09:05:45 +00:00
Richard Frith-MacDonald
524a2e7ceb improve generated makefiles
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28684 72102866-910b-0410-8b05-ffd578937521
2009-09-15 09:13:43 +00:00
Riccardo Mottola
05c75052d3 launch executable directly without openapp/opentool. Removed execToolName
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28676 72102866-910b-0410-8b05-ffd578937521
2009-09-14 22:38:28 +00:00
Gregory John Casamento
2fc703c5de * Framework/PCProject.m
* Framework/PCProjectManager.m
	* Headers/ProjectCenter/PCProjectManager.h
	* PCAppController.m: Correct issues with project bundle loading.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28369 72102866-910b-0410-8b05-ffd578937521
2009-06-23 22:21:10 +00:00
Gregory John Casamento
6e95a9a1e5 Update changelog.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28359 72102866-910b-0410-8b05-ffd578937521
2009-06-17 22:02:19 +00:00
Gregory John Casamento
09bc065c63 Change file type to allow opening of files.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28358 72102866-910b-0410-8b05-ffd578937521
2009-06-17 22:00:44 +00:00
Riccardo Mottola
7a09098880 udpated Changelog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28341 72102866-910b-0410-8b05-ffd578937521
2009-06-11 20:52:10 +00:00
Riccardo Mottola
94ee603288 use PCDefine constant for PC_WINDOWS dictionary key
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28339 72102866-910b-0410-8b05-ffd578937521
2009-06-10 22:38:55 +00:00
Riccardo Mottola
0cd4ab00c7 save last editing in user file inside the wrapper and not main project file
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28338 72102866-910b-0410-8b05-ffd578937521
2009-06-10 22:24:14 +00:00
Gregory John Casamento
55f05b710b * Framework/PCEditorManager.m: Added code in -openEditorForFile:
editable:windowed: to open files which are not handled by any editor
	using [NSWorkspace openFile:] as a fallback.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28289 72102866-910b-0410-8b05-ffd578937521
2009-05-19 21:13:24 +00:00
Gregory John Casamento
194e62f47a * Framework/PCProject.m: Add new project directory name.
* Framework/PCProjectManager.m: Fix issue reported with loading of
	subprojects from an aggregate project.   Changed loadProjectAt: method
	to handle both the current and old file locations.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28288 72102866-910b-0410-8b05-ffd578937521
2009-05-18 21:27:56 +00:00
Gregory John Casamento
b8a1ac5612 * Framework/PCProjectManager.m: Remove logic requiring projectWindow
to be key in order to save file.   This was causing files in 
	tear-off editors to not be saved.  This change is in the saveFile
	method.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28260 72102866-910b-0410-8b05-ffd578937521
2009-04-27 21:09:30 +00:00
Gregory John Casamento
e885b519a6 remove special characters
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28240 72102866-910b-0410-8b05-ffd578937521
2009-04-22 20:35:39 +00:00
Gregory John Casamento
01c3eadcf5 * Framework/PCProject.m: Changes to make plist output in
human readable format.
	* Resources/Info-gnustep.plist: Changes to read C++ files using
	C editor.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28239 72102866-910b-0410-8b05-ffd578937521
2009-04-22 20:32:36 +00:00
Sergii Stoian
8b186c4ad7 * Framework/PCProjectBuilder.m:
(-startBuild:), (-startClean:): Move _isBuilding and _isCleaning vars
before build: method call for correct determination in cleanupAfterMake
method.
(build:): Initialize build time vars before call to preBuildChecj method.
* Framework/PCProjectBuilderOptions.m: Do not notify when changing project
properties (build options).


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28216 72102866-910b-0410-8b05-ffd578937521
2009-04-14 23:24:14 +00:00
Riccardo Mottola
dde3badacc delete custom PCSplitView class no longer used
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28164 72102866-910b-0410-8b05-ffd578937521
2009-03-31 22:21:44 +00:00
Riccardo Mottola
8c5d1ef6ed removed and replaced PCSplitView with standard NSSplitView in all instances, bumped framework release to 0.6.0
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28163 72102866-910b-0410-8b05-ffd578937521
2009-03-31 22:13:37 +00:00
Sergii Stoian
89697c5df2 * Framework/PCProjectBuilder.m:
(updateTargetField): Process args correctly when it has nil value.
(startBuild): Move initializing of currentBuildPath and 
currentBuildFile from here...
(build:):...to here. Rename pipes and handles vars to more appropriate
names. Initialize pipes with alloc, init.
(startClean): Use buildArguments as in startBuild method.
(stopMake:): It seems that [makeTask isRunning] works correctly -
use it. Remove comment.   
(cleanupAfterMake): Use _isBuilding and _isCleaning vars to detect
running mode. Release currentBuildPath and currentBuildFile here.
(buildDidTerminate): Release pipes here.        
(logData:error:): Initialize newLineRange.location before entering
cycle.
(logBuildString:newLine:): Cleanup.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28142 72102866-910b-0410-8b05-ffd578937521
2009-03-27 23:39:02 +00:00
Gregory John Casamento
0f642e77d4 Updated TODO.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28139 72102866-910b-0410-8b05-ffd578937521
2009-03-27 07:04:09 +00:00
Gregory John Casamento
f2a055ef97 * Framework/PCProject.m: Implement openWrapperAtPath:
* Framework/PCProjectManager.m: Change method call to use
	openWrapperAtPath:
	* Headers/ProjectCenter/PCProject.h: Add wrapperPath ivar.
	* Modules/Projects/Application/PCAppProject.m:
	Change method to call super.
	* Modules/Projects/Tool/PCToolProject.m: Change method to 
	call super.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28138 72102866-910b-0410-8b05-ffd578937521
2009-03-27 07:01:11 +00:00
Gregory John Casamento
03a7c073c2 * Framework/English.lproj/Builder.gorm: Update icons for stop and
options.
	* Framework/PCProject.m: Added code to put files into packages when
	saving.
	* Headers/ProjectCenter/PCProject.h: Added ivar for file wrapper


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28137 72102866-910b-0410-8b05-ffd578937521
2009-03-27 05:18:53 +00:00
Riccardo Mottola
e8c6874eb1 save windows placements to a separate file with the username as a name
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28136 72102866-910b-0410-8b05-ffd578937521
2009-03-26 23:21:36 +00:00
Sergii Stoian
9f00b0da00 * Documentaion/TODO: Update.
* Documentation/BUGS: Added. Contains reported bugs, not reported but
noticed during my tests, whish list of features, thougths.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28134 72102866-910b-0410-8b05-ffd578937521
2009-03-25 21:03:57 +00:00
Sergii Stoian
9515b6703f * Framework/PCProjectBuilder.m: Add some comments
(parseCompilerLine:): Implemented gcc output for compiling and linking.
Set currentBuildFile var on file compilation.
(cleanupAfterMake),(build:),(parseBuildLine:),(buildDidTerminate): Update 
status field of builder panel and project window.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28126 72102866-910b-0410-8b05-ffd578937521
2009-03-24 00:47:32 +00:00
Sergii Stoian
baa1cfbd35 * Framework/PCProjectBuilder.m: Change type of currentBuildPath var
to NSMutableString.
(buildArguments): Always use messages=yes argument internally.
"Verbose ouput" option (Build Options panel) just toogle if build
shows as with make argument 'messages=yes' or not.
(line:startsWithString:): Implemented line start detection.
(parseMakeLine:): Inital implementation of parsing make tool
output.
(parseCompilerLine:): Add for future implementation.
(logBuildString:newLine:): Remove error: argument as it's not used.
Method outputs to build view.
(parseBuildLine:): Add implementation of entry point of build output
parsing.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28125 72102866-910b-0410-8b05-ffd578937521
2009-03-23 22:05:36 +00:00
Sergii Stoian
67dfd71e53 * Framework/PCProjectBuilder.m: Some rearrangement of log methods.
Category 'Logging' is for general logging methods, 'BuildLogging'
for stantard output processing, 'ErrorLogging' for error output
processing.
(logBuildString:newLine:): New name of logString:error:newLine:.
Use new name across the file.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28119 72102866-910b-0410-8b05-ffd578937521
2009-03-22 01:16:40 +00:00
Sergii Stoian
1a6b1b6f5b Update ChangeLog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28118 72102866-910b-0410-8b05-ffd578937521
2009-03-22 00:13:42 +00:00
Sergii Stoian
e5681f4a50 * Framework/PCProjectInspector.m:
(searchOrderPopupDidChange:): Clean selection in list. Clean text field.
(searchOrderClick:): Show value of selected item in text field.
(addSearchOrder:): Add check for entered value. More checking will be added
in the future.
* Documentation/TODO: Rearrange some items. Update state.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28117 72102866-910b-0410-8b05-ffd578937521
2009-03-22 00:12:43 +00:00
Sergii Stoian
9f0394f9c3 Update ChangeLog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28116 72102866-910b-0410-8b05-ffd578937521
2009-03-21 23:01:05 +00:00
Sergii Stoian
a6359c679d * Framework/PCProjectBuilderOptions.m:
(initWithProject:): Listen to PCProjectDictDidChangeNotification notification.
(awakeFromNib): Move loading of project properties from here...
(loadProjectProperties): ...to here. This is a notification action.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28115 72102866-910b-0410-8b05-ffd578937521
2009-03-21 22:59:46 +00:00
Sergii Stoian
0f3a1e0ba4 Update ChangeLog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28100 72102866-910b-0410-8b05-ffd578937521
2009-03-20 00:56:05 +00:00
Sergii Stoian
d6a49c572a * Framework/PCProject.m:
(buildTargets): Return default build targets only if project file 
doesn't contains list them.
* Framework/PCProjectBuilder.m:
(prebuildCheck): Create build directory only if preference was set.
(build:): Set initial "=== started ===" string.
* Framework/PCProjectInspector.m:
(createBuildAttributes): Set target and action for table view.
(searchOrderPopupDidChange:): Add support for "Build Targets".
(setSearchOrderButtonsState): Enable "Remove" button only if item in 
list was selected.
(syncSearchOrder): Add support for "Build Targets".
* Documentation/TODO: Add some tasks and update status of others.
* Headers/ProjectCenter/PCDefines.h: Add key for build targets support.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28099 72102866-910b-0410-8b05-ffd578937521
2009-03-20 00:53:39 +00:00
Sergii Stoian
a002b0c43c Update Changelog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28096 72102866-910b-0410-8b05-ffd578937521
2009-03-19 00:14:54 +00:00
Sergii Stoian
ace38821ad * Framework/PCProjectManager.m:
(dealloc): Replace if() check with TEST_RELEASE.
(openFileAtPath:): Use class variable instead of method's local.
(saveFile): Call saveFile to project editor if project is active and
project window has key state. Call non-project editor manager otherwise.
* PCPrefController.m:
(stringForKey:defaultValue:): Set value to non-existent key only if
defaultValue is not 'nil' ('nil' when called via stringForKey: method).
(boolForKey:defaultValue:): Set value to non-existent key only if
defaultValue has positive value (has '-1' when called via boolForKey: method).


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28095 72102866-910b-0410-8b05-ffd578937521
2009-03-19 00:13:25 +00:00
Sergii Stoian
96516dd723 * Framework/PCProjectManager.m:
(openProjectAt:): Setactive project to loaded after all initalization
completed.
* Framework/PCProject.m:
(saveProjectWindowsAndPanels): Save project windows and panels
according to preferences setting.
(close:): Remove unsused code.
* Framework/PCProjectBuilder.m: Cleanup.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28087 72102866-910b-0410-8b05-ffd578937521
2009-03-16 23:32:00 +00:00
Sergii Stoian
f8d2b38fe4 * GNUmakefile,
* Framework/GNUmakefile: Change versions to 0.5.3.
* Modules/Preferences/Build/PCBuildPrefs.m: Cleanup.
* Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m: Implement editor
color preferences.
* Modules/Preferences/Saving/PCSavingPrefs.m: Cleanup.
* Modules/Preferences/Misc/PCMiscPrefs.m: Cleanup.
* Documentation/TODO: Update.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28079 72102866-910b-0410-8b05-ffd578937521
2009-03-15 22:47:23 +00:00
Sergii Stoian
7756df5dbf Update Changelog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28075 72102866-910b-0410-8b05-ffd578937521
2009-03-15 00:14:56 +00:00
Sergii Stoian
e6ce23e63b * Headers/Protocols/Preferences.h: Add new methods.
* PCPrefController.m: Implemented set/get of preferences value dependent. All
values are stored in preferences as NSString values and converted upon
request to specified type.
* Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m: Use new methods of 
PCPrefController. Implemented setting of editor fonts.
(setDefaults): Removed.

* Modules/Preferences/Build/PCBuildPrefs.m,
* Modules/Preferences/Misc/PCMiscPrefs.m,
* Modules/Preferences/Saving/PCSavingPrefs.m: Use new methods of PCPrefController.
(setDefaults): Removed.

* Framework/PCProjectLoadedFiles.m,
* Framework/PCMakefileFactory.m,
* Framework/PCProject.m,
* Framework/PCProjectLauncherPanel.m,
* Framework/PCFileManager.m,
* Framework/PCProjectBrowser.m,
* Framework/PCProjectBuilder.m,
* Framework/PCEditorManager.m,
* Framework/PCProjectLoadedFilesPanel.m,
* Framework/PCProjectLauncher.m,
* Framework/PCProjectBuilderPanel.m,
* Framework/PCProjectWindow.m,
* PCAppController.m,
* Framework/PCProjectManager.m: Use new methods of PCPrefController.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28074 72102866-910b-0410-8b05-ffd578937521
2009-03-15 00:12:00 +00:00
Sergii Stoian
8300389ecf Clean up code that includes removed PCInterfacePrefs module header file.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28066 72102866-910b-0410-8b05-ffd578937521
2009-03-11 22:25:44 +00:00
Sergii Stoian
8c23bab5c2 * Remove compile time files
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28059 72102866-910b-0410-8b05-ffd578937521
2009-03-09 20:17:15 +00:00
Sergii Stoian
64995148d5 * Remove compile time files
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28058 72102866-910b-0410-8b05-ffd578937521
2009-03-09 20:16:03 +00:00
Sergii Stoian
29d7d59abc * Sswitch to new interface setting.
* Modules/Preferences/EditorFSC: Add new prefs section.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28057 72102866-910b-0410-8b05-ffd578937521
2009-03-09 20:15:10 +00:00
Sergii Stoian
ec139b282b * ChangeLog; Update.
* Modules/Preferences/Misc/PCMiscPrefs.h,
* Modules/Preferences/Misc/PCMiscPrefs.m,
* Modules/Preferences/Misc/Resources/MiscPrefs.gorm/data.classes,
* Modules/Preferences/Misc/Resources/MiscPrefs.gorm/objects.gorm:
Add new setting UseTearOffWindows.
* Framework/PCProjectWindow.m: Use new setting.
* Modules/Editors/ProjectCenter/PCEditor.m:
(dealloc): Add releasing _window.
* Documentation/TODO: Update


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28042 72102866-910b-0410-8b05-ffd578937521
2009-03-05 00:42:59 +00:00
Sergii Stoian
51459e04f9 Update changelog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28041 72102866-910b-0410-8b05-ffd578937521
2009-03-04 23:01:27 +00:00
Sergii Stoian
628a5ffa00 * Framework/PCProjectManager.m:
(convertLegacyProject:atPath:): Correctly convert legacy application project.
* Framework/PCEditorManager.m;
(openEditorForFile:editable:windowed:): Don't open lert panel if file is
not text file. Situation when editor for non text files called to be opened
must be reviewd.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28040 72102866-910b-0410-8b05-ffd578937521
2009-03-04 23:00:19 +00:00
Sergii Stoian
6ee8943ebf * Update changelog.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28039 72102866-910b-0410-8b05-ffd578937521
2009-03-04 22:08:46 +00:00
Sergii Stoian
9d2a79b3a4 * Framework/PCProjectBrowser.m: Stop using 'SeparateEditor' prefernce.
Remove use of preferences code.
(doubleClick:): Change support of external editor (add support for .app
editors).
* Framework/PCProjectWindow.m: Start implementing two-mode handling of
tear-off windows. New handling will support two modes: 1. all windows 
are opened inside projet window and 2. Build, Launch/Debug, Loaded Files
(Project Find in future) are opened as tear-off windows. This simplifiles
the code and in my opinion more intuitive then current implementation.
* Modules/Editors/ProjectCenter/PCEditor.m:
(_createWindow): Change window attribute ReleasedWhenClosed to NO.
* PCPrefController.m: Add new parameter 'notify' to method setObject. This
parameter is usefull for situation when open and save panels saves its values.
For example: when project are opened 'Open Project' panel save last opened dir
to PC prefernces and post notificaion about prefs changes. Newly created 
objects of projects may lead to PC segfault.
* Modules/Preferences/Build/PCBuildPrefs.m,
* Modules/Preferences/Interface/PCInterfacePrefs.m,
* Modules/Preferences/Saving/PCSavingPrefs.m,
* Modules/Preferences/Misc/PCMiscPrefs.m,
* Framework/PCFileManager: Use new preferences setObject method.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28038 72102866-910b-0410-8b05-ffd578937521
2009-03-04 22:05:51 +00:00
Riccardo Mottola
863a0c679b allow authors inside table to scroll during editing
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28034 72102866-910b-0410-8b05-ffd578937521
2009-03-03 23:21:57 +00:00
Riccardo Mottola
5b5c07c061 Fix string constants
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28020 72102866-910b-0410-8b05-ffd578937521
2009-03-02 01:01:44 +00:00
Riccardo Mottola
c756ee4dd3 update log
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28019 72102866-910b-0410-8b05-ffd578937521
2009-03-02 01:01:35 +00:00
Sergii Stoian
aaab08aa2a * Modules/Preferences/Interface/PCInterfacePrefs.h:
* Modules/Preferences/Interface/Resources/InterfacePrefs.gorm:
* Modules/Preferences/Interface/PCInterfacePrefs.m:
Move options "Remember windows and panels opened in project" and
"Display Log Panel at startup" from here...
* Modules/Preferences/Misc/PCMiscPrefs.h:
* Modules/Preferences/Misc/PCMiscPrefs.m:
* Modules/Preferences/Misc/Resources/MiscPrefs.gorm:
to here.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28010 72102866-910b-0410-8b05-ffd578937521
2009-03-01 01:17:02 +00:00
Sergii Stoian
0e196e0fd1 * Modules/Preferences/Build/Resources/BuildPrefs.gorm: Add missing oulet
for new option.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28009 72102866-910b-0410-8b05-ffd578937521
2009-02-28 22:55:41 +00:00
Sergii Stoian
811a306f55 * Modules/Preferences/Build/PCBuildPrefs.h:
* Modules/Preferences/Build/PCBuildPrefs.m:
* Modules/Preferences/Build/Resources/BuildPrefs.gorm:
Move "Remove files in root build directory on quit" option
from here...
* Modules/Preferences/Misc/PCMiscPrefs.h:
* Modules/Preferences/Misc/PCMiscPrefs.m:
* Modules/Preferences/Misc/Resources/MiscPrefs.gorm:
to here.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28008 72102866-910b-0410-8b05-ffd578937521
2009-02-28 22:47:37 +00:00
Sergii Stoian
9ae293917b * Use new preferences system instead of direct using of NSUserDefaults.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28007 72102866-910b-0410-8b05-ffd578937521
2009-02-28 22:10:30 +00:00
Sergii Stoian
e61398e79c * Add short messages to ChangeLog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27992 72102866-910b-0410-8b05-ffd578937521
2009-02-27 00:50:18 +00:00
Sergii Stoian
dfb30e2882 * Rewriting of preferences finished
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27991 72102866-910b-0410-8b05-ffd578937521
2009-02-27 00:46:25 +00:00
Sergii Stoian
4b2e398b0d * Start rewriting of PC preferences. "Build" preferences implemented
as loadable module. See Changelog for details.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27969 72102866-910b-0410-8b05-ffd578937521
2009-02-25 00:34:59 +00:00
Sergii Stoian
ecec5ece13 * Documentation/TODO: Update
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27961 72102866-910b-0410-8b05-ffd578937521
2009-02-23 19:08:02 +00:00
Sergii Stoian
8f26eb4a77 * Update Documentation/TODO
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27956 72102866-910b-0410-8b05-ffd578937521
2009-02-22 22:32:34 +00:00
Sergii Stoian
e8bc76c5b3 * Set all textfields attributes to 'scrollable'.
* Framework/PCProjectBuilderOptions.m: Set first reponder
after panel is ordereder (call to makeFirstResponder: in
awakeFromNib prevents textfield from draw its' border. 
NUstep bug?).


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27955 72102866-910b-0410-8b05-ffd578937521
2009-02-22 22:18:40 +00:00
Sergii Stoian
9724c929cb * Finish alert panels review. All situations that I've missed will
be worked out in future.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27954 72102866-910b-0410-8b05-ffd578937521
2009-02-22 21:46:01 +00:00
Sergii Stoian
c3c4cfcc79 * PCSaveModififedFiles rename to more generic name PCSaveModified.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27953 72102866-910b-0410-8b05-ffd578937521
2009-02-22 21:04:05 +00:00
Sergii Stoian
7a92c39ce5 * Framework/PCSaveModifiedFiles.m: Change to more generic
implementation. PCRunSaveModifiedFilesPanel() implemented.
* Framework/PCProjectBuilder.m:
(prebuildCheck): Use PCRunSaveModifiedFiles().


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27952 72102866-910b-0410-8b05-ffd578937521
2009-02-22 20:57:42 +00:00
Sergii Stoian
5c6a72a7ca * Framework/PCSaveModifiedFiles.m:
* Framework/English.lproj/SaveModifiedFiles.gorm:
* Headers/ProjectCenter/PCSaveModifiedFiles.m:
Add initial implementation of "Save Modified Files" panel.
* Framework/PCProjectBuilder.m:
(prebuildCheck): Use PCSaveModifiedFiles.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27947 72102866-910b-0410-8b05-ffd578937521
2009-02-22 01:31:37 +00:00
Sergii Stoian
c81a433761 * Documentation/TODO: Update
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27943 72102866-910b-0410-8b05-ffd578937521
2009-02-21 21:24:24 +00:00
Sergii Stoian
ea0d43d72f * Framework/PCProjectBuilder.m:
(prebuildCheck): Swap button names.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27921 72102866-910b-0410-8b05-ffd578937521
2009-02-19 00:39:10 +00:00
Sergii Stoian
ae3f0a1870 * Framework/PCProjectBuilder.m: Cleanup.
* Framework/PCEditorManager.m:
(openEditorForFile:editable:windowed:): Add alert panel that
ordeder front when file to open doesn't exist. Remove commented
out call to [self orderFrontEditorForFile:filePath] (this method
should be called directly to PCEditorManager or PCProjectEditor
classes).
* Documentation/TODO: Added "Fix reported bugs" to list.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27896 72102866-910b-0410-8b05-ffd578937521
2009-02-17 00:06:13 +00:00
Sergii Stoian
d40f593b64 * Framework/PCProjectBuilder.m:
(prebuildCheck): Check if project has edited files.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27875 72102866-910b-0410-8b05-ffd578937521
2009-02-16 00:33:42 +00:00
Sergii Stoian
1699452ef8 * Framework/PCProjectManager.m:
(close): Implemented. Closes not only project but also non
project files editors.
* Framework/PCProject.m: Clean and alert panels in various situations.
* Framework/PCProjectEditor.m: Move closeAllEditors, saveEditedFiles:,
saveAllFiles and saveFileAs: methods to PCEditorManager. Use
<CodeEditor> close: methods instead of closeFile:save:.
(saveFileAs:): Use superclass method.
* Framework/PCEditorManager.m: Adopt moved methods.
(modifiedFiles): Implemented. Return array of file paths.
(hasModifiedFiles): Implemented for future use (e.g. prebuild check
in ProjectBuilder). 
(reviewUnsaved:): Implemented. Go through modified files' editors
and close which results in opening of alert "Save?" panels.
* PCAppController.m: 
(applicationShouldTerminate:): Use PCProjectManager close method
instead of closeAllProjects.
* Modules/Editors/ProjectCenter/PCEditor.m:
(_createWindow): Set "edited" flag according to current state.
(saveFile): Add alert panel on fail.
(closeFile:save:): Rewritten to properly process 'save' flag.
* Headers/Protocols/CodeEditor.h: Added close: method.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27873 72102866-910b-0410-8b05-ffd578937521
2009-02-16 00:10:59 +00:00
Gregory John Casamento
41f163d735 * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Detect when the
program has stopped or exited so that status can be displayed.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27867 72102866-910b-0410-8b05-ffd578937521
2009-02-15 19:06:10 +00:00
Sergii Stoian
7ea7dc4063 * Framework/PCProjectBrowser.m:
(click:): Do not call editor if subproject name selected.
(fileNameIconImage): Set "FileProject" icon if subproject name selected.
* Framework/PCProjectManager.m: Remove unused methods projectPath and
selectedFileName.
* Framework/PCFileManager.m: Add alert panels if operation ends with 
error.
* Framework/PCMakefileFactory.m: Add alert panels on error of creating
files.
* Framework/PCProjectBuilder.m: Review all situations when alert panels
should be opened. Panels text corrected according to OpenStep UIG.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27864 72102866-910b-0410-8b05-ffd578937521
2009-02-15 00:24:12 +00:00
Sergii Stoian
6817d12843 * PCMenuController.m:
(showInfoPanel:): Use appController intead of [NSApp delegate].
* GNUmakefile: Change version to 0.5.1.
* Resources/Info-gnustep.plist: ditto.
* Framework/PCProjectManager.m:
  (open): Move ordering front project window for here...
  (openProjectAt:): to here.
* Framework/PCProjectBrowser.m:
  (nameOfSelectedCategory): Edit comment text.
* Framework/PCLogController.m:
  (showPanel): Call makeKeyAndOrderFront instead of orderFront.
* Headers/PCInfoController.[hm]:
  (showInfoWindow:): Get version info from Info-gnustep.plist.
* PCPrefController.m:
  (showPanel:): Call makeKeyAndOrderFront instead of orderFront.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27861 72102866-910b-0410-8b05-ffd578937521
2009-02-14 15:45:52 +00:00
Nicola Pero
923416f666 Do not compile the ProjectCenter Debugger module on MinGW
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27860 72102866-910b-0410-8b05-ffd578937521
2009-02-14 10:52:43 +00:00
Gregory John Casamento
2c703a94f5 * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Correct
mispelling of search string.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27855 72102866-910b-0410-8b05-ffd578937521
2009-02-13 03:55:44 +00:00
Gregory John Casamento
2e847b959a * Framework/PCProjectManager.m: openProject to correct
bug #25565.   There was an extra semi-colon after the if
	statement in this method which was causing it to return
	before bringing the project window to the fron


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27853 72102866-910b-0410-8b05-ffd578937521
2009-02-12 16:51:26 +00:00
Gregory John Casamento
cb81af5c42 * Framework/PCEditorManager.m: Switch to editor and line in the
-debuggerDidHitBreakpoint: method.
	* Modules/Debuggers/ProjectCenter/PCDebugger.m: Minor cleanup.
	* Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Changes to
	-[PCDebuggerView logString:newLine:] to detect state and change
	it on debugger window.
	* Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm:
	Left justify the status field.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27850 72102866-910b-0410-8b05-ffd578937521
2009-02-12 03:02:57 +00:00
Sergii Stoian
bc9f8bb1f3 Update Changelog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27839 72102866-910b-0410-8b05-ffd578937521
2009-02-11 00:23:46 +00:00
Sergii Stoian
e98d337210 * PCMenuController.m:
(subprojectNew): Use renamed [projectManager openNewSubprojectPanel]
method.
* Framework/PCProjectManager.m: Change all alert panel names according to
operation performed. Edit messages text of alert panels. Cleanup.
(newSubproject): Rename to openNewSubprojectPanel which is more informative.
(createSubproject): Change method definition to createSubproject:(id)sender 
and merge code with old createSubproject:(id)sender.
(controlTextDidChange:): Activate 'Create' button only if subproject with
enetered name doesn't exist in project.
* Framework/PCProjectBrowser.m:
(nameOfSelectedCategory): Fix bug which prevent from removing subprojects.
Now selected category is checked against superproject category list. When
subproject name selected, name of superproject's category is returned. As
side effect ProjectBrowser tries to load editor for selected subproject's 
name. Need to fix.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27838 72102866-910b-0410-8b05-ffd578937521
2009-02-11 00:21:23 +00:00
Sergii Stoian
baafc22e05 * Framework/PCFileCreator: (+sharedCeator): Cleanup
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27837 72102866-910b-0410-8b05-ffd578937521
2009-02-10 21:33:12 +00:00
Sergii Stoian
375f9098a5 Update Changelog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27836 72102866-910b-0410-8b05-ffd578937521
2009-02-10 21:30:09 +00:00
Sergii Stoian
3c30f7fbd0 * Framework/PCProjectManager.m: Corrections in alert panel names.
Make "Add Files" panel run in modal mode.
* Framework/PCProject.m: Corrections in alert panel names.
* Framework/PCFileCreator.[mh]: Partial rewrite. Check existance of files 
  wich will be added. Make panel run in modal mode. Add "Add Header File"
  option button.
* Documentation/TODO: Update.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27826 72102866-910b-0410-8b05-ffd578937521
2009-02-10 00:31:55 +00:00
Sergii Stoian
58757ae6d4 * Update Changelog.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27808 72102866-910b-0410-8b05-ffd578937521
2009-02-08 00:41:46 +00:00
Sergii Stoian
a417d8581e * PCMenuController.m:
(validateMenuItem:): Enable "File" menu items for files opened
  witout project. It fixes bug #25311 (now file saved).
* Framework/PCProjectManager.m:
  (openFileAtPath:): Call to orderFrontEditorForFile: explicitly because
  of last change in PCEditorManager.
* Framework/PCProjectBrowser.m:
  (doubleClick:): Do not open file in separate window with PCProjectEditor
  not PCProjectManager.
* Framework/PCProjectEditor.m:
  (openEditorForCategoryPath:windowed:): Cleanup.
* Framework/PCEditorManager.m:
  (openEditorForFile:editable:windowed:): Remove call to
  orderFrontEditorForFile:.
* Modules/Editors/ProjectCenter/PCEditor.m:
  (_createWindow): Modify default size and position of window.
  (openFileAtPath:editorManager:editable:): Remove creation of internal view.
  Create it when first requested (editorView and componentView methods).
  (windowDidBecomeKey:) No need to set first responder. It seems first responder
  remembered by window correctly.
  (windowDidResignKey:): Call resignFirstResponder: to notify others.
* Modules/Projects/Application/PCAppProject.m:
  (dealloc): TODO added.
* Documentation/TODO: Mark "Finish FileNameIcon..." task as done.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27807 72102866-910b-0410-8b05-ffd578937521
2009-02-08 00:38:13 +00:00
Sergii Stoian
9b5a3b8e4c * Update Changelog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27799 72102866-910b-0410-8b05-ffd578937521
2009-02-06 00:02:13 +00:00
Sergii Stoian
6f85c6383a * Framework/PCProject.m:
(dealloc): Replace DEVELOPMENT with DEBUG

* Framework/PCProjectBrowser.m:
  (fileNameIconPath): Implement new method.

* Framework/PCFileNameIcon.m:
  (mouseDown:) Finish drag&drop implementation.
  (init): Do not set image by default.
  (dealloc): Replace DEVELOPMENT with DEBUG.
  (setDelegate:): Use ASSIGN.
  (updateIcon): Cleanup.

* Framework/English.lproj/ProjectInspector.gorm: Remove
  'Hide on deactivate' attribute to panel. It allows drag&drop
  operations for external applications (e.g. Workspace).

* Modules/Projects/Application/PCAppProject.*: Use PCFileNameIcon
  in inspector to use drag&drop functionality. Cleanup.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27798 72102866-910b-0410-8b05-ffd578937521
2009-02-05 23:59:32 +00:00
Riccardo Mottola
183dfb4adb decrease minimum window height
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27727 72102866-910b-0410-8b05-ffd578937521
2009-01-29 23:48:29 +00:00
Sergii Stoian
719bf01886 Udpdate ChangeLog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27701 72102866-910b-0410-8b05-ffd578937521
2009-01-26 23:11:40 +00:00
Sergii Stoian
feac055af8 * Correct mistake in PCPrefController.m file name
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27700 72102866-910b-0410-8b05-ffd578937521
2009-01-26 23:02:05 +00:00
Sergii Stoian
d1787e2c9c * Headers/Protocols/Preferences.h: Add protocol for communication
between preferences and sections


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27699 72102866-910b-0410-8b05-ffd578937521
2009-01-26 22:58:02 +00:00
Sergii Stoian
8f3e4f1b6e * Move PCPrefController out of the Framework
* Make modifications to files which use PCPrefController


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27698 72102866-910b-0410-8b05-ffd578937521
2009-01-26 22:56:03 +00:00
Sergii Stoian
5e5fa71d5a * Modules/Projects/Application/Resources/AppController.m:
(awakeFromNib:): Remove setting menu title for better GORM
integration (Thanks to German Arias).


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27617 72102866-910b-0410-8b05-ffd578937521
2009-01-17 00:11:12 +00:00
Sergii Stoian
7866230c2c 2009-01-17 Yavor Doganov <yavor@gnu.org>
* Framework/GNUmakefile:
(ProjectCenter_LIBRARIES_DEPEND_UPON): Define to `$(OBJC_LIBS)
$(FND_LIBS) $(GUI_LIBS)' to avoid unresolved symbols. Fixes bug #23792.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27616 72102866-910b-0410-8b05-ffd578937521
2009-01-16 23:59:19 +00:00
Sergii Stoian
62c8affc56 * Framework/PCProject.m:
(fileTypesForCategoryKey:): add "nib" as recognizable interface file type.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27615 72102866-910b-0410-8b05-ffd578937521
2009-01-16 23:38:44 +00:00
Sergii Stoian
1d26215e7f Add mentioning about bug #21619
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27614 72102866-910b-0410-8b05-ffd578937521
2009-01-16 23:04:17 +00:00
Sergii Stoian
c3aa1d47a0 2009-01-17 Sergii Stoian <stoyan255@gmail.com>
* Framework/GNUmakefile: Include PCFileNameField.h and
  PCFileNameIcon.h in ProjectCenter_HEADER_FILES as 
  referenced by PCProjectInspector.h


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27613 72102866-910b-0410-8b05-ffd578937521
2009-01-16 23:02:48 +00:00
Riccardo Mottola
ed890b7e2e make textfields scrollable
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27592 72102866-910b-0410-8b05-ffd578937521
2009-01-13 21:35:05 +00:00
Riccardo Mottola
f0c308711b OpenBSD portability
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27504 72102866-910b-0410-8b05-ffd578937521
2009-01-02 17:51:00 +00:00
Gregory John Casamento
6a062ed252 * Modules/Debuggers/ProjectCenter/PTYView.[mh]: Changes to use
new openpty replacement code on systems which don't have
	openpty, otherwise use the built-in version.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27493 72102866-910b-0410-8b05-ffd578937521
2009-01-02 00:34:09 +00:00
Gregory John Casamento
90c55771fd Change file extension entry so that tools can be debugged.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27492 72102866-910b-0410-8b05-ffd578937521
2009-01-01 22:34:46 +00:00
Gregory John Casamento
fd51336457 * Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm:
Change the status bar size and set minimum window size.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27490 72102866-910b-0410-8b05-ffd578937521
2009-01-01 20:59:06 +00:00
Gregory John Casamento
55e2966fb3 * Modules/Debuggers/ProjectCenter/GNUmakefile
* Modules/Debuggers/ProjectCenter/PTYView.h
	* Modules/Debuggers/ProjectCenter/PTYView.m: Change code to use
	openpty(...).


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27487 72102866-910b-0410-8b05-ffd578937521
2009-01-01 18:01:42 +00:00
Richard Frith-MacDonald
763d325c6a quick hack to get this to compile on windows again
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27486 72102866-910b-0410-8b05-ffd578937521
2009-01-01 11:39:51 +00:00
Sergii Stoian
cc43e948dc * Framework/PCFileNameIcon.m:
* Headers/ProjectCenter/PCFileNameIcon.h:
  Implementation of dragging functionality.
  
* Framework/PCProjectBrowser.m: Implement file icon delegate methods.
  Dragging files to category icon adds files to project.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27472 72102866-910b-0410-8b05-ffd578937521
2008-12-30 23:58:11 +00:00
Richard Frith-MacDonald
073b6a650d Use #import throughout
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27463 72102866-910b-0410-8b05-ffd578937521
2008-12-30 13:47:27 +00:00
Gregory John Casamento
321b334912 * Modules/Debuggers/ProjectCenter/Resources/continue_button.png:
Add image.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27461 72102866-910b-0410-8b05-ffd578937521
2008-12-30 03:22:13 +00:00
Gregory John Casamento
4b0be76f13 * Modules/Debuggers/ProjectCenter/GNUmakefile: Add continue icon.
* Modules/Debuggers/ProjectCenter/PCDebugger.m: Add continue method.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27460 72102866-910b-0410-8b05-ffd578937521
2008-12-30 03:21:13 +00:00
Gregory John Casamento
f41650b9b8 * Documentation/TODO: Update progress.
* Modules/Debuggers/ProjectCenter/GNUmakefile: Add images
	to makefile.
	* Modules/Debuggers/ProjectCenter/PCDebugger.m: Add up and down
	methods to implement this behaviour.
	* Modules/Debuggers/ProjectCenter/Resources/down_button.png
	* Modules/Debuggers/ProjectCenter/Resources/up_button.png:
	Images for the up/down buttons.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27459 72102866-910b-0410-8b05-ffd578937521
2008-12-30 01:17:05 +00:00
Riccardo Mottola
66b546f33f removed troublesome warning parameter gcc 2.95
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27458 72102866-910b-0410-8b05-ffd578937521
2008-12-29 22:47:42 +00:00
Riccardo Mottola
f684926ec8 removed --args parameter
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27457 72102866-910b-0410-8b05-ffd578937521
2008-12-29 22:47:11 +00:00
Riccardo Mottola
38d424a25e removed double ;
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27456 72102866-910b-0410-8b05-ffd578937521
2008-12-29 22:22:17 +00:00
Gregory John Casamento
591ef01a5b * Framework/PCProjectLauncher.m: Remove local variable for debugger from
method.  Also add it to the launcher dealloc method.
	* Headers/ProjectCenter/PCProjectLauncher.h: Add an ivar for the debugger.
	* Modules/Debuggers/ProjectCenter/PCDebugger.m: Add dealloc to shut down
	the debugger window when it's dealloc.
	* Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Don't set status when
	terminated, since it causes a crash.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27445 72102866-910b-0410-8b05-ffd578937521
2008-12-29 05:25:52 +00:00
Gregory John Casamento
fc1d806411 * Modules/Debuggers/ProjectCenter/PCDebugger.m: Added code
to do the restart and pause actions in the debugger.
	* Modules/Debuggers/ProjectCenter/PCDebuggerView.[hm]: Added
	method subProcessId and an ivar and the logic to parse the
	process id from debugger output.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27444 72102866-910b-0410-8b05-ffd578937521
2008-12-28 16:19:27 +00:00
Gregory John Casamento
eefe748587 * Framework/PCEditorManager.m: Remove log.
* Modules/Debuggers/ProjectCenter/GNUmakefile: Added new images
	to resource list.
	* Modules/Debuggers/ProjectCenter/PCDebugger.[hm]: Added setStatus:
	method to manage status field.
	* Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Added code
	to handle the toolbar.
	* Modules/Debuggers/ProjectCenter/PTYView.[hm]: Added method called
	"terminate" so that subclasses can override how the process is
	terminated.
	* Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm: Added
	status line.
	* Modules/Debuggers/ProjectCenter/Resources/go_button.png
	* Modules/Debuggers/ProjectCenter/Resources/next_button.png
	* Modules/Debuggers/ProjectCenter/Resources/pause_button.png
	* Modules/Debuggers/ProjectCenter/Resources/restart_button.png
	* Modules/Debuggers/ProjectCenter/Resources/stepin_button.png
	* Modules/Debuggers/ProjectCenter/Resources/stepout_button.png:
	Images for debugger toolbar.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27440 72102866-910b-0410-8b05-ffd578937521
2008-12-28 07:19:45 +00:00
Gregory John Casamento
96c021a74f * Framework/PCEditorManager.m: Changed code to use the filePath
that is passed in, since it is now fully qualified.
	* Modules/Debuggers/ProjectCenter/PCDebugger.m: Pass the "-f" (fullname)
	flag to gdb.  This causes gdb to give a fully qualified pathname back.
	* Modules/Debuggers/ProjectCenter/PCDebuggerView.[hm]: Code to 
	extract the line and file information.
	* Modules/Debuggers/ProjectCenter/PTYView.[hm]: New method
	putString:.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27439 72102866-910b-0410-8b05-ffd578937521
2008-12-27 05:43:41 +00:00
Gregory John Casamento
ca0d589c85 * Framework/PCEditorManager.m: Scroll to and select the line that
the debugger has stopped at.
	* Modules/Debuggers/ProjectCenter/PCDebuggerView.m: bring the debugger
	window to the front when a breakpoint is detected.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27430 72102866-910b-0410-8b05-ffd578937521
2008-12-26 17:55:11 +00:00
Gregory John Casamento
1d1c796f67 * Framework/PCEditorManager.m
* Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Changes to bring
	up the file in which the debugger has stopped in.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27429 72102866-910b-0410-8b05-ffd578937521
2008-12-26 07:18:55 +00:00
Gregory John Casamento
466f1709f2 Changes to allow the debugger to notify the editor when a breakpoint is encountered.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27428 72102866-910b-0410-8b05-ffd578937521
2008-12-26 06:38:46 +00:00
Gregory John Casamento
43e24cad84 * Modules/Debuggers/ProjectCenter/GNUmakefile: Added PTYView.[hm]
* Modules/Debuggers/ProjectCenter/PCDebugger.[hm]: Simplified to 
	call PCDebuggerView instance with the program to start.
	* Modules/Debuggers/ProjectCenter/PCDebuggerView.[hm]: Refactored
	into a subclass of PTYView.
	* Modules/Debuggers/ProjectCenter/PTYView.[hm]: pty based terminal
	view which allows us to read and write from a pseudo-terminal.
	The code in the master/slave methods was inspired by an example
	given in "UNIX Network Programming" by W. Richard Stevens and also
	Nicola Vitacolonna.
	* Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm: Added
	PTYView and made the PCDebuggerView a subclass of it.   Also made
	the window release when closed so that the gdb process gets 
	terminated.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27416 72102866-910b-0410-8b05-ffd578937521
2008-12-25 15:46:41 +00:00
Gregory John Casamento
cd2924d9ab Write to the stream directly
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27411 72102866-910b-0410-8b05-ffd578937521
2008-12-23 14:48:11 +00:00
Gregory John Casamento
dad9dde30e * Modules/Debuggers/ProjectCenter/PCDebugger.h
* Modules/Debuggers/ProjectCenter/PCDebugger.m
	* Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Add code
	to write to the file desicriptor.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27410 72102866-910b-0410-8b05-ffd578937521
2008-12-23 00:49:57 +00:00
Gregory John Casamento
3ea83315ba Info table for debugger.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27409 72102866-910b-0410-8b05-ffd578937521
2008-12-23 00:01:09 +00:00
Gregory John Casamento
50ac933d43 * English.lproj/ProjectCenter.gorm: Minor changes.
* Framework/PCEditorManager.m: Cleanup.
        * Framework/PCProjectLauncher.m: Cleanup.
        * GNUmakefile: New module.
        * Headers/Protocols/CodeDebugger.h: New methods
        * Modules/Debuggers/ProjectCenter/GNUmakefile: Added debugger
        to resources.
        * Modules/Debuggers/ProjectCenter/PCDebugger.h
        * Modules/Debuggers/ProjectCenter/PCDebugger.m: Changes to talk to
        debugger task
        * Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm: Debugger
        gorm file.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27407 72102866-910b-0410-8b05-ffd578937521
2008-12-22 23:45:43 +00:00
Sergii Stoian
94baea2b63 * Documentatio/TODO: move unfinshed tasks from 0.5 to 0.6 release
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27406 72102866-910b-0410-8b05-ffd578937521
2008-12-22 22:01:26 +00:00
Riccardo Mottola
0f85f9390c interpret char from the view and send them to the debugger std in
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27394 72102866-910b-0410-8b05-ffd578937521
2008-12-22 00:39:45 +00:00
Riccardo Mottola
61691b8689 interpret char from the view and send them to the debugger std in
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27393 72102866-910b-0410-8b05-ffd578937521
2008-12-22 00:38:35 +00:00
Gregory John Casamento
9feb86a622 Debugger protocol
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27392 72102866-910b-0410-8b05-ffd578937521
2008-12-22 00:31:55 +00:00
Gregory John Casamento
c35bd787df Changes for gorm file and debugger class.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27382 72102866-910b-0410-8b05-ffd578937521
2008-12-22 00:09:23 +00:00
Riccardo Mottola
32be29331b new tasks
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27367 72102866-910b-0410-8b05-ffd578937521
2008-12-21 16:53:04 +00:00
Sergii Stoian
dfa1083363 Documentation/TODO: update 0.6 release tasks
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27361 72102866-910b-0410-8b05-ffd578937521
2008-12-20 23:13:00 +00:00
Nicola Pero
077d9acf41 Removed GNUSTEP_CORE_SOFTWARE=YES from makefiles and instead set PACKAGE_NAME=ProjectCenter
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27352 72102866-910b-0410-8b05-ffd578937521
2008-12-19 13:13:49 +00:00
Nicola Pero
dd04c2f9b6 Set GNUSTEP_CORE_SOFTWARE to YES so that project center is installed by default in SYSTEM if gnustep-make has been configured with --disable-packages
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27338 72102866-910b-0410-8b05-ffd578937521
2008-12-18 19:25:05 +00:00
Richard Frith-MacDonald
0fcb14a78f Avoid some confusion when selecting files
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27323 72102866-910b-0410-8b05-ffd578937521
2008-12-17 10:46:22 +00:00
Richard Frith-MacDonald
d616702b69 Allow more types of help
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27322 72102866-910b-0410-8b05-ffd578937521
2008-12-17 09:47:48 +00:00
Richard Frith-MacDonald
f3d2771081 Add help
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27318 72102866-910b-0410-8b05-ffd578937521
2008-12-17 07:04:14 +00:00
Gregory John Casamento
173eb165ac Beginnings of debugger interface.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27314 72102866-910b-0410-8b05-ffd578937521
2008-12-16 21:31:41 +00:00
Richard Frith-MacDonald
1597cd9cee Fixups for NSRole
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27312 72102866-910b-0410-8b05-ffd578937521
2008-12-16 20:40:20 +00:00
Riccardo Mottola
b41546414a corrected wrong outlet
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27268 72102866-910b-0410-8b05-ffd578937521
2008-12-09 21:57:33 +00:00
Riccardo Mottola
08029f654a created and connected button outlets for build and debugger
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27264 72102866-910b-0410-8b05-ffd578937521
2008-12-09 00:51:53 +00:00
Riccardo Mottola
8c5c85d4db created set buttons for paths
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27263 72102866-910b-0410-8b05-ffd578937521
2008-12-08 21:08:49 +00:00
Riccardo Mottola
00d1c0f635 handle setting path from buttons
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27236 72102866-910b-0410-8b05-ffd578937521
2008-12-07 00:45:47 +00:00
Gregory John Casamento
5fbc998044 Correct warning in AppController.m
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27162 72102866-910b-0410-8b05-ffd578937521
2008-11-28 02:09:36 +00:00
Gregory John Casamento
2269ad78ec Fix for bug #24674.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27159 72102866-910b-0410-8b05-ffd578937521
2008-11-27 16:57:29 +00:00
Gregory John Casamento
cf5e1561a9 * Framework/PCProjectBrowser.m: Check return value of
[NSWorkspace getInfoForFile:application:type:].  Corrects crash when
	no editor is available for a type.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@27144 72102866-910b-0410-8b05-ffd578937521
2008-11-27 06:25:27 +00:00
Gregory John Casamento
e2fd1153ef Update changelog with new version for release.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26968 72102866-910b-0410-8b05-ffd578937521
2008-10-26 00:42:44 +00:00
Gregory John Casamento
a05bd780b9 Added URL for SVN.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26967 72102866-910b-0410-8b05-ffd578937521
2008-10-26 00:40:35 +00:00
Riccardo Mottola
0234884099 fix memory related crash, enhancements for relative install paths
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26954 72102866-910b-0410-8b05-ffd578937521
2008-10-22 19:55:32 +00:00
Riccardo Mottola
c1fb4165f9 correct bugtracker URL
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26953 72102866-910b-0410-8b05-ffd578937521
2008-10-22 19:54:38 +00:00
Gregory John Casamento
6a3279d598 * ChangeLog: Moved to here top level of project.
* Documentation/ChangeLog: Removed from here...
	* Modules/Editors/ProjectCenter/PCEditor.m: Corrected an issue in the
	windowDidResignKey: method which was making the window the first
	responder.  This was preventing Find from working properly.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26933 72102866-910b-0410-8b05-ffd578937521
2008-10-18 22:16:05 +00:00
Gregory John Casamento
bb3decbb48 Correct coloration issue in build panel.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26863 72102866-910b-0410-8b05-ffd578937521
2008-09-22 23:39:57 +00:00
Gregory John Casamento
dc4adba496 Correct coloration issue with main window textfields.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26862 72102866-910b-0410-8b05-ffd578937521
2008-09-22 23:37:24 +00:00
Gregory John Casamento
2efa58419a Corrected issue with header file section in makefile generation for library.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26745 72102866-910b-0410-8b05-ffd578937521
2008-07-04 15:16:08 +00:00
Gregory John Casamento
7434ba3a2c Corrected an issue with headers in GNUmakefile generation.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26744 72102866-910b-0410-8b05-ffd578937521
2008-07-02 23:10:43 +00:00
Gregory John Casamento
b30e645eb2 License
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26461 72102866-910b-0410-8b05-ffd578937521
2008-04-22 23:19:05 +00:00
Sergii Stoian
a8bd14c991 Commit last logged change
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26107 72102866-910b-0410-8b05-ffd578937521
2008-02-20 00:02:09 +00:00
Sergii Stoian
d574a0a9cc * Framework/PCProjectBuilder.m:
(-parseErorLine:): Fixed type of saved row and column values.
          Cleanup.
        * Framework/PCEditorManager.m:
          (-openEditorForFile:editable:windowed:): Fixed another NSLog
          parameter missing.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26106 72102866-910b-0410-8b05-ffd578937521
2008-02-20 00:00:56 +00:00
Sergii Stoian
f66acd94df * Documentation/Changelog: Update
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26095 72102866-910b-0410-8b05-ffd578937521
2008-02-18 22:50:56 +00:00
Gregory John Casamento
256e47d6c9 updating changelog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26061 72102866-910b-0410-8b05-ffd578937521
2008-02-14 03:13:31 +00:00
Gregory John Casamento
6c4e1a4c65 * Framework/PCMakefileFactory.m: Correction for bug#22311. Added
project-type specific makefile generation.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26060 72102866-910b-0410-8b05-ffd578937521
2008-02-14 03:11:32 +00:00
Gregory John Casamento
f453b256ea Update changelog.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26051 72102866-910b-0410-8b05-ffd578937521
2008-02-11 04:54:36 +00:00
Gregory John Casamento
171bf04b12 2008-02-10 23:53-EST Gregory John Casamento <greg_casamento@yahoo.com>
* Framework/PCEditorManager.m: Corrected problem with call to 
	NSLog(..) which was causing a crash.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26050 72102866-910b-0410-8b05-ffd578937521
2008-02-11 04:54:08 +00:00
Sergii Stoian
87bc0ef57b * Framework/PCProjectManager.[mh]: Cleaning up code that manages
non-project editors. Use PCEditorManager instead. Remove
PCFileManager's dalegate code(FileManagerDelegates category).
(-newFile): Call PCFileCreator's method newFileInProject:.
* Framework/PCFileManager.[mh]: Move code related to creation of
new file in project from here
* Framework/PCFileCreator.[mh]: to here.
(-createFile): Add additional check before adding file to 
project	(fixes bug #17493).
* Framework/English.lproj/NewFile.gorm: Set owner to PCFileCreator.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@26024 72102866-910b-0410-8b05-ffd578937521
2008-02-04 23:51:28 +00:00
Sergii Stoian
4e24cf3451 * Framework/PCEditorManager.m: Added.
* Headers/ProjectCenter/PCEditormanager.h: Added.
* PCMenuController.m: (-fileSaveAs:): move code to 
PCProjectManager.m.
* Headers/ProjectCenter/PCEditorManager.h: New file.
* Framework/PCEditorManager.m: New file. Superclass for
PCProjectEditor.
* Framework/PCProjectManager.m: Use PCEditorManager.
Implement opening files outside of projects (fixes bug #15992).
* Framework/PCProjectLoadedFiles.m: Use PCEditorManager.
* Framework/PCProject.m: (-setProjectManager:): Use new
method of initializing PCProjectEditor.
* Framework/GNUmakefile: Add PCEditorManager.[hm].
* Framework/PCProjectBrowser.m: Made use of 
PCProjectEditor's editorForFile: method.
* Framework/PCProjectEditor.m: Remove initializing of extern
variables (moved into PCEditorManager). Use '_componentView'
var instead of 'componentView'. The same with _scrollView and
_project.
(-initWithProject:): renamed into init. Removed code duplicated
with superclass' code.
(-dealloc): Removed code duplicated with superclass' code.
(-editorForFile🔑): Removed. Code moved into superclass'
editorForFile: method.
(-openEditorForCategoryPath:windowed:): Code that determines
existance of file and if file is plain text move into
[super openEditorForFile:editable:windowed:]. Changed file
opening coditions. Made use of [<CodeEditor> fileStructureItemSelected]
method. Code that determines classes and methods in category path
was removed.
(openEditorForFile:categoryPath:editable:windowed:): Removed in favour
of superclass' method.
(activeEditor): Ditto.
(allEditors): Ditto.
(closeActiveEditor:): Ditto.
(closeEditorForFile:): Ditto.
(saveFile): Ditto.
(saveFileTo:): Ditto.
(revertFileToSaved): Ditto.
(editorDidResignActive:): Ditto.
(editorDidChangeFileName:): Ditto.
(closeAllEditors:): Cleanup.
(saveFileAs:): Made use of new -openEditorForFile:editable:windowed:
method.
* Framework/PCProjectWindow.m: Made usage of editorManager method
of <CodeEditor> protocol.
* Modules/Editors/ProjectCenter/PCEditorView.m: 
(becomeFirstResponder): Use new -becomeFirstResponder: method of
PCEditor class.
* Modules/Editors/ProjectCenter/PCEditor.h: Change name of var 
projectEditor to _editorManager. Add parameter (PCEditorView *)view
to becomeFistResponder and resignFirstResponder methods. Add some
comments.
* Modules/Editors/ProjectCenter/PCEditor.m: Rename method
-openFileAtPath:categoryPath:projectEditor:editable: to
-openFileAtPath:editorManager:editable. Rename -projectEditor method
to -editorManager. Change becomeFistResponder and resignFirstResponder 
methods' definitions.
(fileStructureItemSelected:): Add initial implementation of action 
code according to the type of selected item.
* Headers/Protocols/CodeEditor.h: Change definition of
-openFileAtPath:categoryPath:projectEditor:editable: mathod to
-openFileAtPath:editorManager:editable. Remove methods
scrollToClassName: and scrollToMethodName:. Rename projectEditor
method into editorManager.
* Headers/ProjectCenter/PCProjectEditor.h: Made PCProjectEditor
as subclass of PCEditorManager. Add prefix '_' to variables.
(-initWithProject:): renamed into init.
(setProject:): Added.
Removed methods and variables duplicated with superclass.
* Headers/ProjectCenter/PCProjectManager.h: Add editorManager var.
(-saveFileAs:): renamed to saveFileAs. 



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25991 72102866-910b-0410-8b05-ffd578937521
2008-01-21 22:26:36 +00:00
Sergii Stoian
d2852f9571 * Framework/PCProjectBrowser.m: (doubleClick:): open file with
external application only if NSWorkspace doesn't return
"ProjectCenter.app" appliction name.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25958 72102866-910b-0410-8b05-ffd578937521
2008-01-16 23:16:24 +00:00
Sergii Stoian
55e1d65d65 * Images/FileProject.tiff: Added
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25955 72102866-910b-0410-8b05-ffd578937521
2008-01-16 00:36:44 +00:00
Sergii Stoian
993f6d5b82 * GNUmakefile: Remove FileRTF.tiff from resoures.
* Images/FileRTF.tiff: Removed.
* Images/FileM.tiff,
* Images/FileMH.tiff,
* Images/FileH.tiff,
* Images/FileHH.tiff,
* Images/FileC.tiff,
* Images/FileCH.tiff,
Moved to Modules/Editors/ProjectEditor/Resources.
* Modules/Editors/ProjectCenter/PCEditor.h: Added new variable
_isEditable.
* Modules/Editors/ProjectCenter/PCEditor.m:
(_createEditorViewWithFrame:): Set editable state for NSTextView here.
Add observer for changed text notification here.
* Resources/Info.plist: NSTypes was extended.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25954 72102866-910b-0410-8b05-ffd578937521
2008-01-16 00:35:17 +00:00
Sergii Stoian
e7781cc811 Fix timestamp in last Changelog entry
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25953 72102866-910b-0410-8b05-ffd578937521
2008-01-15 18:21:25 +00:00
Sergii Stoian
639baf6118 * Framework/PCBundleManager.m: (objectForClassName:bundleType:protocol:)
Return nil if className is nil.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25952 72102866-910b-0410-8b05-ffd578937521
2008-01-15 18:20:21 +00:00
Nicola Pero
065115bbe3 Use ADDITIONAL_GUI_LIBS, not ADDITIONAL_LDFLAGS, to specify libraries to link
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25767 72102866-910b-0410-8b05-ffd578937521
2007-12-20 14:00:35 +00:00
Nicola Pero
5821ef654c Compressed my last changelog entry
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25732 72102866-910b-0410-8b05-ffd578937521
2007-12-13 19:44:47 +00:00
Nicola Pero
91629266a0 Small improvements to makefiles; use GNUSTEP_APPS instead of GNUSTEP_SYSTEM_ROOT/Applications when installing, and support non-flattened when linking
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25731 72102866-910b-0410-8b05-ffd578937521
2007-12-13 19:43:42 +00:00
Nicola Pero
b3d6df698d Updated commented code to be gnustep-make v2.0 compliant
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25730 72102866-910b-0410-8b05-ffd578937521
2007-12-13 19:12:36 +00:00
Nicola Pero
c793a9eb9b Improved linking against uninstalled ProjectCenter.framework
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25729 72102866-910b-0410-8b05-ffd578937521
2007-12-13 19:03:54 +00:00
Sergii Stoian
4bafd9555d Documentation/Changelog: fix date of last entry
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25505 72102866-910b-0410-8b05-ffd578937521
2007-09-27 00:05:34 +00:00
Sergii Stoian
26dc666444 * Framework/PCBundleManager.m,
* Headers/ProjectCenter/PCBundleManager.h: Make massive cleaup.
some methods changed, some deleted, some added.
* Framework/PCProjectManager.m,
* Framework/PCProjectEditor.m: Make use of changed PCBundleManager.
* TextFinder.m:
(-enterSelection:): Add sanity check for text variable.
(-jumpToSelection:): Ditto.
* Modules/Parsers/ProjectCenter/Resources/Info.table: Fix value of
"Name" key.
* Headers/Protocols/CodeEditor.h: Remove declaration of 
openExternalEditor:withPath:projectEditor: method. It will be provided
by Custom.editor bundle (will be added soon).
* Headers/ProjectCenter/PCProjectEditor.h: Cleanup.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25504 72102866-910b-0410-8b05-ffd578937521
2007-09-27 00:03:51 +00:00
Sergii Stoian
e8e18614e8 * English.lproj/FindPanel.gorm: Added Find panel.
* PCMenuController.m: Added Find panel support.
* TextFinder.[hm]: Added implementation of Find panel.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25498 72102866-910b-0410-8b05-ffd578937521
2007-09-23 22:27:21 +00:00
Gregory John Casamento
7f177759cf Highlighted version of these images.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25493 72102866-910b-0410-8b05-ffd578937521
2007-09-16 08:32:15 +00:00
Gregory John Casamento
bad9bbf095 Subproject, library and project icons.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25492 72102866-910b-0410-8b05-ffd578937521
2007-09-15 04:28:12 +00:00
Gregory John Casamento
73bba343ef Documentation images.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25491 72102866-910b-0410-8b05-ffd578937521
2007-09-15 04:16:16 +00:00
Gregory John Casamento
805daf2bb2 Additional image replacements and gorm corrections.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25466 72102866-910b-0410-8b05-ffd578937521
2007-09-08 20:14:22 +00:00
Gregory John Casamento
45a14ab733 Correction for background color and image size.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25465 72102866-910b-0410-8b05-ffd578937521
2007-09-08 00:50:06 +00:00
Gregory John Casamento
1cf72798df Replacment images for PC.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25462 72102866-910b-0410-8b05-ffd578937521
2007-09-07 06:03:51 +00:00
Gregory John Casamento
91419bc8eb New versions of previously removed images.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25459 72102866-910b-0410-8b05-ffd578937521
2007-09-06 04:40:30 +00:00
Sergii Stoian
c71af8d5cf Commit last logged change
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25425 72102866-910b-0410-8b05-ffd578937521
2007-08-29 22:08:26 +00:00
Sergii Stoian
6f1816983b Modules/Projects/Library/Resources/Version: Changed GCC version to 2.95.3.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25424 72102866-910b-0410-8b05-ffd578937521
2007-08-29 22:07:02 +00:00
Sergii Stoian
d90884488d * Framework/PCProjectWindow.m:
(-preferencesDidChange:): Show Builder and Launcher panels only
they are visible in project window (fixes bug #20858).


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25423 72102866-910b-0410-8b05-ffd578937521
2007-08-29 21:57:37 +00:00
Sergii Stoian
8a4661e36b * Frameworks/PCFileManager.m:
(-filesForOpenOfType:multiple:title:accView:): Removed
(-fileForSaveOfType:title:accView:): Removed.
(-filesForAddOfTypes:): Removed.
(-filesOfTypes:operation:multiple:title:accView:): Implemented.
Replaces removed methods.
(-_panelForOperation:title:accView:): New method. Returns panel
for specified operation type.
(-_saveLastDirectoryForPanel:): New method. Saves last opened
directory for operation type (panel).
(-panel:isValidFilename:): Validate directory as correct filename
if project is opening and directory has PC.project file.
* Headers/ProjectCenter/PCFileManager.h: Added new variable 'operation'
and declaraion of new mathods.
* Framework/PCProjectManager.m: Use new methods of PCFileManager.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25422 72102866-910b-0410-8b05-ffd578937521
2007-08-29 20:39:25 +00:00
Sergii Stoian
6f1525ed30 * Modules/Projects/Library/Resources/Version: Change gcc version
to 2.9.5.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25412 72102866-910b-0410-8b05-ffd578937521
2007-08-22 22:34:35 +00:00
Sergii Stoian
0674dcb996 * Modules/Editors/ProjectCenter/Resources/ObjC.syntax: Change color
of 'NO'.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25411 72102866-910b-0410-8b05-ffd578937521
2007-08-22 22:29:49 +00:00
Sergii Stoian
5882671bfb * Modules/Projects/*/Resources/Info.table: Add missing targets to some
project types.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25408 72102866-910b-0410-8b05-ffd578937521
2007-08-21 23:28:29 +00:00
Sergii Stoian
2c508faefe * Framework/PCProjectBuilderOptions.m: Add missing file.
* Headers/ProjectCenter/PCProjectBuilderOptions.h: Add missing file.
* Framework/PCProject.m:
(-rootCategories): Call subproject's method if subproject is active.
(-rootEntries): Ditto.
(-keyForCategory:): Ditto. Fix bug #20854.
(-categoryForKey:): Ditto.
(-keyForRootCategoryInCategoryPath:): Since keyForCategory: was made
subproject's sensitive implement key searching here.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25407 72102866-910b-0410-8b05-ffd578937521
2007-08-21 23:22:12 +00:00
Sergii Stoian
74db52149f * Framework/PCProjectBuilderOptions.m: New file.
* Headers/ProjectCenter/PCProjectBuilderOptions.h: New file.
* ProjectBuilder options handling finished.
* Fixed compliance to GNUstep make v2.
* Framework/PCFileNameIcon.m: Start implementing drag/drop.
* Images/ProjectCenter.tiff: Use ProjectManager's app icon.
* Modules/Projects/*/Resources/Info.table: change default targets.
* Headers/ProjectCenter/PCDefines.h: Clean up.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25406 72102866-910b-0410-8b05-ffd578937521
2007-08-21 21:30:36 +00:00
Gregory John Casamento
f1f6ae6234 Removed from version control.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25390 72102866-910b-0410-8b05-ffd578937521
2007-08-15 03:16:37 +00:00
Sergii Stoian
39c33fcf2d 2007-07-19 Sergii Stoian <stoyan255@gmail.com>
* GNUmakefile.postamble: Cleanup old code.
        * Headers/ProjectCenter/PCMakefileFacory.h:
        * Framework/PCMakefileFacory.m:
        (-createMakefileFroProject:): change argument type from
        NSSrting to PCProject. Set installation path PCInstallDir
        value.
        * Modules/Projects/*/PC*Project.m:
        (-writeMakefile): Adopt createMakefileForProject argument type
        changes.
	* Documentation/TODO: Update



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25340 72102866-910b-0410-8b05-ffd578937521
2007-07-18 23:01:17 +00:00
Sergii Stoian
a8073eb037 * GNUmakefile: Set GNUSTEP_INSTALLATION_DOMAIN to SYSTEM.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25221 72102866-910b-0410-8b05-ffd578937521
2007-06-05 22:37:15 +00:00
Sergii Stoian
b4044a3d1f 2007-06-05 Sergii Stoian <stoyan255@gmail.com>
* Framework/PCProjectBuilder.m: Added parsing of gcc error output.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25220 72102866-910b-0410-8b05-ffd578937521
2007-06-04 22:27:18 +00:00
Nicola Pero
d6da8e6f6b Fixed running stuff under debug
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25090 72102866-910b-0410-8b05-ffd578937521
2007-04-27 13:42:28 +00:00
Nicola Pero
1bfdbcfe56 Fixed launching apps/tools
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25089 72102866-910b-0410-8b05-ffd578937521
2007-04-27 12:59:45 +00:00
Nicola Pero
218d8f84db Fixed part of launching an application
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@25086 72102866-910b-0410-8b05-ffd578937521
2007-04-27 12:06:13 +00:00
Nicola Pero
73e911a0e5 Updated bundle lookup for new filesystem layout; fixed infinite loop when building
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24785 72102866-910b-0410-8b05-ffd578937521
2007-03-06 18:11:37 +00:00
Nicola Pero
d93c8551e6 Fixed definition of where to install ProjectCenter bundles
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24560 72102866-910b-0410-8b05-ffd578937521
2007-02-14 12:50:32 +00:00
Nicola Pero
53135405c5 Do not set GNUSTEP_INSTALLATION_DIR in generated GNUmakefiles, to make sure they work with the new Linux FHS support
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24558 72102866-910b-0410-8b05-ffd578937521
2007-02-14 12:47:27 +00:00
Sergii Stoian
a827776a6e * Modules/Editors/ProjectCenter/Resources/ObjC.syntax: Update.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24390 72102866-910b-0410-8b05-ffd578937521
2007-01-20 15:04:42 +00:00
Sergii Stoian
f24d40c2d3 PCButton.m([initWitCoder]): add [_cell setImageDimsWhenDisabled:YES]
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24382 72102866-910b-0410-8b05-ffd578937521
2007-01-19 00:06:32 +00:00
Sergii Stoian
7fb3796a38 * Framework/PCProjectManager.m: Remove code handling rootBuildPath var.
Remove rootBuildPath var.
* Headers/ProjectCenter/PCProjectManager.h: Ditto.
* Framework/PCFileManager.m: Add removeDirsIfEmpty:(BOOL) parameter to
  remove* methods.
* Headers/ProjectCenter/PCFileManager.h: Ditto.
* Framework/PCProject.m: Pass removeDirsIfEmpty:(BOOL) parameter to
  PCFileManager remove* methods calls.
* PCAppController.m: Ditto.
* Modules/Projects/Application/PCAppProject.m: Ditto.
* Modules/Projects/Tool/PCToolProject.m: Ditto.
* Framework/PCProjectBuilder.m: Rename ivar currentProject into project.
  Use it.
  (prebuildCheck:): Create root build directory if not exist.
* Headers/ProjectCenter/PCProjectBuilder.h: Rename ivar currentProject
  into project.
* Documentation/TODO: Update.
* Documentation/ANNOUNCE: Ditto.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24369 72102866-910b-0410-8b05-ffd578937521
2007-01-16 16:27:33 +00:00
Sergii Stoian
3793013f03 * Framework/PCProjectManager.m: Fix problem with closing project.
* Framework/PCProjectr.m: Ditto.
        * Framework/PCMakefileFactory.m: Support for root build directory added.
        * Framework/PCProjectBuilder.m: Code cleanup.
        * Framework/PCProjectEditor.m: Enable usage of parser. Start testing process.
        * Framework/PCProjectWindows.m: Enable tooltips for buttons.
        * Framework/PCPrefController.m: setRootBuildDir: fix.

        * PCAppController.m: applicationWillTerminate: Remove file from build dir on
        application quit. This code still needs review (also removed build dir because of
        use PCFileManager's method).

        * Modules/Editors/ProjectCenter/PCEditor.m: browserItemsForItem: Crashes if file
        is not supported by parser. Fixed.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24353 72102866-910b-0410-8b05-ffd578937521
2007-01-15 18:40:58 +00:00
Sergii Stoian
d5c82c42a2 Fix min size of project window and change min size of builder panel
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24344 72102866-910b-0410-8b05-ffd578937521
2007-01-12 18:26:49 +00:00
Sergii Stoian
c47403f9b0 Project Builder make errors parsing: finished formatting, testing
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24343 72102866-910b-0410-8b05-ffd578937521
2007-01-12 18:02:41 +00:00
Sergii Stoian
b8f509a5b3 Update missing PCProjectBuilderPanel.h
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24340 72102866-910b-0410-8b05-ffd578937521
2007-01-11 17:25:14 +00:00
Sergii Stoian
1af5e10b72 Make possibility to install Protocols while .svn directory existing
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24339 72102866-910b-0410-8b05-ffd578937521
2007-01-11 17:23:37 +00:00
Sergii Stoian
4bc380355d Updates in Project Builder make errors parsing
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24338 72102866-910b-0410-8b05-ffd578937521
2007-01-11 17:21:41 +00:00
Sergii Stoian
8e2277ff6a Updates in Project Builder make errors parsing
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24337 72102866-910b-0410-8b05-ffd578937521
2007-01-11 17:18:53 +00:00
Sergii Stoian
096f3ed392 Builder.gorm, BuilderPanel.gorm added to Framework/English.lproj
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24331 72102866-910b-0410-8b05-ffd578937521
2007-01-09 16:49:47 +00:00
Sergii Stoian
2095cdca6f Fix makefiles wrt to framework directory renaming
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24271 72102866-910b-0410-8b05-ffd578937521
2006-12-27 12:50:09 +00:00
Sergii Stoian
941e34d83b Update ANNOUNCE and Changelog files
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24270 72102866-910b-0410-8b05-ffd578937521
2006-12-27 12:43:56 +00:00
Sergii Stoian
a7fd0dfd70 Prepare ANNOUNCE file for release
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24264 72102866-910b-0410-8b05-ffd578937521
2006-12-26 17:52:46 +00:00
Sergii Stoian
827a4c7d00 Remove Framework/Resource/GNUmakefile
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24255 72102866-910b-0410-8b05-ffd578937521
2006-12-26 17:06:01 +00:00
Sergii Stoian
c3973a8573 Localizable resources for application and framework was defined (English.lproj)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24254 72102866-910b-0410-8b05-ffd578937521
2006-12-26 17:04:57 +00:00
Sergii Stoian
62f062f726 continuing merging...
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24243 72102866-910b-0410-8b05-ffd578937521
2006-12-26 11:10:53 +00:00
Sergii Stoian
f113470a11 continuing merging...
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24242 72102866-910b-0410-8b05-ffd578937521
2006-12-26 11:00:33 +00:00
Sergii Stoian
787bb6a506 Start merging changes from unstable branch
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24241 72102866-910b-0410-8b05-ffd578937521
2006-12-26 10:58:39 +00:00
Nicola Pero
78a45e6a2e Updates to prevent ProjectCenter from generating utterly broken makefiles wrt installation
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24104 72102866-910b-0410-8b05-ffd578937521
2006-11-15 18:06:59 +00:00
Nicola Pero
4164ae01d8 Added long comment
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@24103 72102866-910b-0410-8b05-ffd578937521
2006-11-15 18:05:56 +00:00
Gregory John Casamento
4edc6af1fc Corrected issue with dangling menu/menu items in gorm file.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@23938 72102866-910b-0410-8b05-ffd578937521
2006-10-21 19:42:43 +00:00
Nicola Pero
efbe1eac39 Do not set GNUSTEP_INSTALLATION_DIR in the GNUmakefile
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@23809 72102866-910b-0410-8b05-ffd578937521
2006-10-09 21:51:47 +00:00
Nicola Pero
cbde9aed9a Do not set GNUSTEP_INSTALLATION_DIR
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@23808 72102866-910b-0410-8b05-ffd578937521
2006-10-09 21:42:06 +00:00
Richard Frith-MacDonald
8101618a59 Preserve state of target options for project.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@23752 72102866-910b-0410-8b05-ffd578937521
2006-10-04 09:14:24 +00:00
Richard Frith-MacDonald
05049e9a69 Fix to work both with and without MacOS-X compatibile tracking rects.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@23712 72102866-910b-0410-8b05-ffd578937521
2006-10-02 12:19:10 +00:00
Richard Frith-MacDonald
dec193e4c5 Support specification of help file.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@23665 72102866-910b-0410-8b05-ffd578937521
2006-09-29 08:25:12 +00:00
Richard Frith-MacDonald
a4c58b49cd Update copyright notice and conform to coding standards in templates
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@23548 72102866-910b-0410-8b05-ffd578937521
2006-09-18 12:57:33 +00:00
Riccardo Mottola
d9fb8ea6bb updated templates and GPL addresses
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@23452 72102866-910b-0410-8b05-ffd578937521
2006-09-11 08:47:36 +00:00
Richard Frith-MacDonald
90bb9ac417 use current process name to save defaults
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@22450 72102866-910b-0410-8b05-ffd578937521
2006-02-08 14:32:11 +00:00
Sergii Stoian
446784557f Release 0.4.3
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@22314 72102866-910b-0410-8b05-ffd578937521
2006-01-15 22:51:23 +00:00
Richard Frith-Macdonald
c5dc4943f5 Bugfix launching application ... provide full path for the application to
be launched rather than just hoping that openapp will find the correct one.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@22237 72102866-910b-0410-8b05-ffd578937521
2006-01-01 15:37:34 +00:00
Sergii Stoian
232a83ccb6 *** empty log message ***
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@22129 72102866-910b-0410-8b05-ffd578937521
2005-12-01 23:23:36 +00:00
Sergii Stoian
e8d9376472 Fix includes in PCPrefcontroller.m
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@22078 72102866-910b-0410-8b05-ffd578937521
2005-11-22 23:25:39 +00:00
Sergii Stoian
61e0f2c6ef *** empty log message ***
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@22042 72102866-910b-0410-8b05-ffd578937521
2005-11-18 16:27:44 +00:00
Sergii Stoian
8932c97e93 2005-11-18 Adam Fedor <fedor@gnu.org>
* GNUmakefile.preamble: Change 'whereis' to which. (Make sure if it's
        portable, Serg Stoyan). Correct ADDITIONAL_LIB_DIRS.
        * Library/PCLogController.h: Change tags to PC_* because of conflict
        on MingW. And is use in code.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@22041 72102866-910b-0410-8b05-ffd578937521
2005-11-18 16:01:51 +00:00
Sergii Stoian
f605efba76 Remove forgotten PCLogConrtoller.m and PCPrefController.m
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@22040 72102866-910b-0410-8b05-ffd578937521
2005-11-18 15:43:53 +00:00
Sergii Stoian
c54e5babb7 *** empty log message ***
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@22031 72102866-910b-0410-8b05-ffd578937521
2005-11-18 00:26:42 +00:00
Sergii Stoian
313e17ee33 *** empty log message ***
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@22030 72102866-910b-0410-8b05-ffd578937521
2005-11-18 00:20:47 +00:00
Sergii Stoian
5e07243fa8 *** empty log message ***
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@22011 72102866-910b-0410-8b05-ffd578937521
2005-11-14 23:39:37 +00:00
Sergii Stoian
ff72db3c5c PCButton mouseMoved: check if ttWindow is not nil
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@21400 72102866-910b-0410-8b05-ffd578937521
2005-07-02 23:09:42 +00:00
Sergii Stoian
48956cf88d Fixed bug #13590
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@21385 72102866-910b-0410-8b05-ffd578937521
2005-06-30 21:34:14 +00:00
Sergii Stoian
cf1b68f0e7 Fixed bug #11779
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@21293 72102866-910b-0410-8b05-ffd578937521
2005-06-07 20:39:06 +00:00
Gregory John Casamento
ab6698ec55 Minor bug fix suggested by Pascal Hoftsee. Simply moved one line down below the part where it was being referenced after the release.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20691 72102866-910b-0410-8b05-ffd578937521
2005-02-12 05:41:17 +00:00
Sergii Stoian
ca6e580622 Release 0.4.2
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20620 72102866-910b-0410-8b05-ffd578937521
2005-01-26 19:30:43 +00:00
Sergii Stoian
2eb78d7c9c Disable removal of root build directory. Release 0.4.2
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20619 72102866-910b-0410-8b05-ffd578937521
2005-01-26 19:28:24 +00:00
Sergii Stoian
2cb3174880 Release 0.4.1
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20600 72102866-910b-0410-8b05-ffd578937521
2005-01-23 00:06:03 +00:00
Sergii Stoian
a66f7753e3 Fix bug in releasing PCButton
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20529 72102866-910b-0410-8b05-ffd578937521
2005-01-08 22:17:23 +00:00
Sergii Stoian
27d6b344e7 Fix compiling on Windows. Fix returning PCFileManager's defaultManager
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20523 72102866-910b-0410-8b05-ffd578937521
2005-01-05 21:04:12 +00:00
Gregory John Casamento
9be3f61de0 Added check to prevent crash if buildPath isn't set.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20521 72102866-910b-0410-8b05-ffd578937521
2005-01-05 02:07:32 +00:00
Sergii Stoian
1f6aad8624 Added methods into PCFileManager
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20519 72102866-910b-0410-8b05-ffd578937521
2005-01-04 23:11:20 +00:00
Sergii Stoian
f44e640e8b Fixed bug #11448. Fixed bug with editor on close.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20516 72102866-910b-0410-8b05-ffd578937521
2005-01-03 12:30:47 +00:00
Sergii Stoian
7ece56461a Added files PCAddFilesPanel.[hm]. Fixed bug #11478
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20515 72102866-910b-0410-8b05-ffd578937521
2005-01-03 01:25:10 +00:00
Sergii Stoian
9cab0f9822 PCAddFilesPanel added. Bugfixes in file adding code.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20514 72102866-910b-0410-8b05-ffd578937521
2005-01-03 00:20:54 +00:00
Sergii Stoian
bb13a30ed7 *** empty log message ***
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20491 72102866-910b-0410-8b05-ffd578937521
2004-12-27 21:04:29 +00:00
Nicola Pero
7a9f0785df Fixed compiling project center when non-flattened
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20363 72102866-910b-0410-8b05-ffd578937521
2004-11-19 22:55:08 +00:00
Sergii Stoian
c41409fd7f GORM files updated
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@20050 72102866-910b-0410-8b05-ffd578937521
2004-09-13 21:38:44 +00:00
Sergii Stoian
81f0133a29 Update gorm files with latest GORM
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19770 72102866-910b-0410-8b05-ffd578937521
2004-07-22 15:12:41 +00:00
Sergii Stoian
db635d78a3 Removed Editor.tiff. Editor button replaced with Loaded Files button. Fixes in Inspector regarding applying changes entered in textfields
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19769 72102866-910b-0410-8b05-ffd578937521
2004-07-22 14:42:57 +00:00
Sergii Stoian
c3662d2502 ButtonTile.tiff removed
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19762 72102866-910b-0410-8b05-ffd578937521
2004-07-21 21:56:50 +00:00
Sergii Stoian
0296453981 New tooltips code
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19761 72102866-910b-0410-8b05-ffd578937521
2004-07-21 21:53:05 +00:00
Sergii Stoian
2f4e4df656 Fix Auto-Save slider in Prefrences
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19742 72102866-910b-0410-8b05-ffd578937521
2004-07-15 22:18:42 +00:00
Sergii Stoian
b8cf3d75c5 Update all GORM files with latest CVS GORM version
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19741 72102866-910b-0410-8b05-ffd578937521
2004-07-15 22:06:19 +00:00
Sergii Stoian
cbf3861dce Fix recognizing subproject files
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19740 72102866-910b-0410-8b05-ffd578937521
2004-07-15 22:00:50 +00:00
Sergii Stoian
f8b0c67d51 Another fix to adding resource files of subprojects files
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19683 72102866-910b-0410-8b05-ffd578937521
2004-07-04 19:22:47 +00:00
Sergii Stoian
a47c8aa7b8 Adding files to project fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19675 72102866-910b-0410-8b05-ffd578937521
2004-07-03 13:30:04 +00:00
Sergii Stoian
6781fde41f PCProject bugfixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19661 72102866-910b-0410-8b05-ffd578937521
2004-07-01 11:36:33 +00:00
Gregory John Casamento
aacf8a79b1 Minor correction to #ifdef directive. It was misspelled causing a build failure
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19633 72102866-910b-0410-8b05-ffd578937521
2004-06-27 16:48:45 +00:00
Sergii Stoian
aab56397c9 PCProject's doesAcceptFile:forKey: fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19576 72102866-910b-0410-8b05-ffd578937521
2004-06-22 07:46:07 +00:00
Sergii Stoian
9084d3fa4b Add Files fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19574 72102866-910b-0410-8b05-ffd578937521
2004-06-21 20:35:37 +00:00
Sergii Stoian
5137d57150 ProjectWindow, ProjectLauncher, ApplicationProject Inspector.gorm fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19561 72102866-910b-0410-8b05-ffd578937521
2004-06-20 00:07:52 +00:00
Sergii Stoian
319aa22eea ChangeLog fix the date
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19558 72102866-910b-0410-8b05-ffd578937521
2004-06-19 22:32:13 +00:00
Sergii Stoian
17526fd33f Removed Modules/ApplicationProject/Resources/GNUmakefile.*
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19557 72102866-910b-0410-8b05-ffd578937521
2004-06-19 22:30:45 +00:00
Sergii Stoian
58ff2c3992 ProjectCenterInfo.plist moved and renamed to Resources/Info-gnustep.plist
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19556 72102866-910b-0410-8b05-ffd578937521
2004-06-19 22:00:48 +00:00
Sergii Stoian
4867c9aa5d see Documentation ChangeLog
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19555 72102866-910b-0410-8b05-ffd578937521
2004-06-19 21:55:29 +00:00
Sergii Stoian
3bfa190040 Fix in PCProjectManager's convertLegacyProject:atPath:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19528 72102866-910b-0410-8b05-ffd578937521
2004-06-15 22:06:30 +00:00
Sergii Stoian
cfe02368c5 Various fixes and cleanups
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19527 72102866-910b-0410-8b05-ffd578937521
2004-06-15 20:41:49 +00:00
Sergii Stoian
cc6f1ede8b *** empty log message ***
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19516 72102866-910b-0410-8b05-ffd578937521
2004-06-14 09:42:27 +00:00
Sergii Stoian
0b4fa737b8 Aggregate project type added. MultiFiles.tiff added. Fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19515 72102866-910b-0410-8b05-ffd578937521
2004-06-14 09:19:48 +00:00
Sergii Stoian
68a13d3d66 Reload subprojects list only if subprojects added/removed
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19509 72102866-910b-0410-8b05-ffd578937521
2004-06-12 22:45:55 +00:00
Sergii Stoian
db2e4ddedf Remove all unimplemented items from menu
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19508 72102866-910b-0410-8b05-ffd578937521
2004-06-12 19:39:38 +00:00
Sergii Stoian
f896634c59 gcc 3.4.0 compilation fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19507 72102866-910b-0410-8b05-ffd578937521
2004-06-12 19:23:26 +00:00
Sergii Stoian
755f874774 Fix bugs appearing during openning legacy projects
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19501 72102866-910b-0410-8b05-ffd578937521
2004-06-11 23:02:47 +00:00
Sergii Stoian
801bade1da Fix loading 0.3.x Gorm project
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19498 72102866-910b-0410-8b05-ffd578937521
2004-06-11 16:42:02 +00:00
Sergii Stoian
be9e55b9f3 continuing cleanup
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19497 72102866-910b-0410-8b05-ffd578937521
2004-06-11 14:03:34 +00:00
Sergii Stoian
c2ec8fcf20 Remove files and dirs left from 0.3.x release
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19496 72102866-910b-0410-8b05-ffd578937521
2004-06-11 13:55:14 +00:00
Sergii Stoian
6f7a22551b Start merging branches
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19495 72102866-910b-0410-8b05-ffd578937521
2004-06-11 13:43:02 +00:00
Gregory John Casamento
d288662f70 Reverting an accidental commit by qmathe.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19124 72102866-910b-0410-8b05-ffd578937521
2004-04-16 05:22:00 +00:00
Quentin Mathe
508a0d21c3 Added a toolbar example application
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19118 72102866-910b-0410-8b05-ffd578937521
2004-04-15 23:18:23 +00:00
Sergii Stoian
242f97b135 *** empty log message ***
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@18880 72102866-910b-0410-8b05-ffd578937521
2004-03-24 16:40:43 +00:00
Gregory John Casamento
e89e7a3bff Corrected a segfault on close.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@18705 72102866-910b-0410-8b05-ffd578937521
2004-02-28 14:43:23 +00:00
Gregory John Casamento
784cb5c265 Corrected a segfault.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@18703 72102866-910b-0410-8b05-ffd578937521
2004-02-28 13:33:52 +00:00
Sergii Stoian
135aa36da4 Add and changelog entry about last fix
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@18062 72102866-910b-0410-8b05-ffd578937521
2003-11-07 22:51:19 +00:00
Sergii Stoian
ac94385c11 Fix segfault when closing Gorm and Renaissance projects
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@18061 72102866-910b-0410-8b05-ffd578937521
2003-11-07 22:48:34 +00:00
Philippe C.D. Robert
467e7fe100 FIX: BaseInterface.gorm is copied as expected upon project creation
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17818 72102866-910b-0410-8b05-ffd578937521
2003-10-11 15:29:08 +00:00
Sergii Stoian
b4b5c7774a Version 0.3.6
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17814 72102866-910b-0410-8b05-ffd578937521
2003-10-10 16:39:42 +00:00
Gregory John Casamento
447091bef1 Added new gorm file
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17671 72102866-910b-0410-8b05-ffd578937521
2003-09-14 19:14:00 +00:00
Gregory John Casamento
dd0a4bda95 Replacing baseInterface.gorm with BaseInterface.gorm
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17670 72102866-910b-0410-8b05-ffd578937521
2003-09-14 19:12:45 +00:00
Fred Kiefer
d2e71e1166 Let PCLib compile with GCC 3.3
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17627 72102866-910b-0410-8b05-ffd578937521
2003-09-06 12:23:50 +00:00
Fred Kiefer
b6352e5f12 PCLib/GNUMakefile.preamble removed all -Werror.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17626 72102866-910b-0410-8b05-ffd578937521
2003-09-06 12:22:50 +00:00
Philippe C.D. Robert
4a16a7ce1f Fixing mem leak
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17551 72102866-910b-0410-8b05-ffd578937521
2003-08-26 15:53:52 +00:00
Sergii Stoian
770051d866 *** empty log message ***
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17545 72102866-910b-0410-8b05-ffd578937521
2003-08-25 20:18:33 +00:00
Sergii Stoian
6541a8d081 PCProjectBuilder.[hm]: stop logging when building/cleaning. Cleanups
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17542 72102866-910b-0410-8b05-ffd578937521
2003-08-25 20:13:51 +00:00
Philippe C.D. Robert
78ecb14e67 Initial support for external debugging based on Stefan Urbanek's code.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17463 72102866-910b-0410-8b05-ffd578937521
2003-08-10 12:38:35 +00:00
Philippe C.D. Robert
41c72d7a22 Fixed minor typo
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17428 72102866-910b-0410-8b05-ffd578937521
2003-08-03 16:45:12 +00:00
Philippe C.D. Robert
ee6ee0d972 Fixed minor typo
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17427 72102866-910b-0410-8b05-ffd578937521
2003-08-03 16:39:02 +00:00
Philippe C.D. Robert
70c0bded36 Code cleanup
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17414 72102866-910b-0410-8b05-ffd578937521
2003-08-01 15:02:04 +00:00
Philippe C.D. Robert
b5c4e7400e Added -methodSignatureForSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17413 72102866-910b-0410-8b05-ffd578937521
2003-08-01 14:32:31 +00:00
Philippe C.D. Robert
f536e7911b Removed -Werror [this should not be checked into the CVS tree]
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17412 72102866-910b-0410-8b05-ffd578937521
2003-08-01 14:23:56 +00:00
Philippe C.D. Robert
c97d9d3d2b Updating the ANNOUNCE text to be correct wrt the GPL
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17184 72102866-910b-0410-8b05-ffd578937521
2003-07-10 17:15:48 +00:00
Philippe C.D. Robert
b0b735d334 Merging all changes from the RELEASE_0_3_5 branch into the main branch.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17183 72102866-910b-0410-8b05-ffd578937521
2003-07-10 16:00:49 +00:00
Philippe C.D. Robert
c61214127f Serg volunteered to do UI cleanup (wrt inspector tasks mostly)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17170 72102866-910b-0410-8b05-ffd578937521
2003-07-07 17:32:31 +00:00
Philippe C.D. Robert
50bd23a4c9 Uppercase key for interface category lookup
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@17129 72102866-910b-0410-8b05-ffd578937521
2003-07-05 12:19:54 +00:00
530 changed files with 40744 additions and 27356 deletions

9
.cvsignore Normal file
View file

@ -0,0 +1,9 @@
.gwdir
*.swp
*~
*.app
*.bundle
*.framework
*obj
derived_src
ProjectCenter

3
.dist-ignore Normal file
View file

@ -0,0 +1,3 @@
.gwdir
*.swp
*~

23
.github/scripts/build.sh vendored Executable file
View file

@ -0,0 +1,23 @@
#! /usr/bin/env sh
set -ex
echo "Building..."
# build dependencies...
./.github/scripts/dependencies.sh
export LIBRARY_PATH=$HOME/staging/lib:$HOME/staging/lib64:$LIBRARY_PATH;
export LD_LIBRARY_PATH=$HOME/staging/lib:$HOME/staging/lib64:$LD_LIBRARY_PATH;
if [ $LIBRARY_COMBO = 'ng-gnu-gnu' ];
then
export CPATH=$HOME/staging/include;
else
export CPATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/include;
fi;
export PATH=$HOME/staging/bin:$PATH;
export GNUSTEP_MAKEFILES=$HOME/staging/share/GNUstep/Makefiles;
. $HOME/staging/share/GNUstep/Makefiles/GNUstep.sh;
# Build gorm
make && make install && make check || (cat Tests/tests.log && false);

135
.github/scripts/dependencies.sh vendored Executable file
View file

@ -0,0 +1,135 @@
#! /usr/bin/env sh
set -ex
DEP_SRC=$HOME/dependency_source/
DEP_ROOT=$HOME/staging
install_prerequisites() {
sudo apt-get -qq update
sudo apt-get install -y cmake pkg-config libgnutls28-dev libgmp-dev libffi-dev libicu-dev \
libxml2-dev libxslt1-dev libssl-dev libavahi-client-dev zlib1g-dev
if [ $LIBRARY_COMBO = 'gnu-gnu-gnu' ];
then
if [ $CC = 'gcc' ];
then
sudo apt-get install -y gobjc;
fi;
sudo apt-get install -y libobjc-8-dev libblocksruntime-dev;
else
curl -s -o - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -;
sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main" && sudo apt-get update -qq;
sudo apt-get install -y clang-9 libkqueue-dev libpthread-workqueue-dev;
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-9 10 \
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-9;
export PATH=$(echo "$PATH" | sed -e 's/:\/usr\/local\/clang-7.0.0\/bin//');
if [ "$RUNTIME_VERSION" = "gnustep-2.0" ];
then
sudo update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.gold" 10;
fi;
fi;
if [ $LIBRARY_COMBO = 'ng-gnu-gnu' ];
then
curl -LO https://cmake.org/files/v3.15/cmake-3.15.5-Linux-x86_64.tar.gz;
tar xf cmake-3.15.5-Linux-x86_64.tar.gz;
mv cmake-3.15.5-Linux-x86_64 $HOME/cmake;
export PATH=$HOME/cmake/:$HOME/cmake/bin:$PATH
fi;
}
install_gnustep_make() {
cd $DEP_SRC
git clone https://github.com/gnustep/tools-make.git
cd tools-make
if [ -n "$RUNTIME_VERSION" ]
then
WITH_RUNTIME_ABI="--with-runtime-abi=${RUNTIME_VERSION}"
else
WITH_RUNTIME_ABI=""
fi
./configure --prefix=$DEP_ROOT --with-library-combo=$LIBRARY_COMBO $WITH_RUNTIME_ABI
make install
echo Objective-C build flags: `$HOME/staging/bin/gnustep-config --objc-flags`
}
install_ng_runtime() {
cd $DEP_SRC
git clone https://github.com/gnustep/libobjc2.git
cd libobjc2
git submodule init
git submodule sync
git submodule update
cd ..
mkdir libobjc2/build
cd libobjc2/build
export CC="clang"
export CXX="clang++"
export CXXFLAGS="-std=c++11"
cmake -DTESTS=off -DCMAKE_BUILD_TYPE=RelWithDebInfo -DGNUSTEP_INSTALL_TYPE=NONE -DCMAKE_INSTALL_PREFIX:PATH=$DEP_ROOT ../
make install
}
install_libdispatch() {
cd $DEP_SRC
# will reference upstream after https://github.com/apple/swift-corelibs-libdispatch/pull/534 is merged
git clone -b system-blocksruntime https://github.com/ngrewe/swift-corelibs-libdispatch.git
mkdir swift-corelibs-libdispatch/build
cd swift-corelibs-libdispatch/build
export CC="clang"
export CXX="clang++"
export LIBRARY_PATH=$DEP_ROOT/lib;
export LD_LIBRARY_PATH=$DEP_ROOT/lib:$LD_LIBRARY_PATH;
export CPATH=$DEP_ROOT/include;
cmake -DBUILD_TESTING=off -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX:PATH=$HOME/staging -DINSTALL_PRIVATE_HEADERS=1 -DBlocksRuntime_INCLUDE_DIR=$DEP_ROOT/include -DBlocksRuntime_LIBRARIES=$DEP_ROOT/lib/libobjc.so ../
make install
}
install_gnustep_base() {
export GNUSTEP_MAKEFILES=$HOME/staging/share/GNUstep/Makefiles
. $HOME/staging/share/GNUstep/Makefiles/GNUstep.sh
cd $DEP_SRC
git clone https://github.com/gnustep/libs-base.git
cd libs-base
./configure
make
make install
}
install_gnustep_gui() {
export GNUSTEP_MAKEFILES=$HOME/staging/share/GNUstep/Makefiles
. $HOME/staging/share/GNUstep/Makefiles/GNUstep.sh
cd $DEP_SRC
git clone https://github.com/gnustep/libs-gui.git
cd libs-gui
./configure
make
make install
}
install_gnustep_back() {
export GNUSTEP_MAKEFILES=$HOME/staging/share/GNUstep/Makefiles
. $HOME/staging/share/GNUstep/Makefiles/GNUstep.sh
cd $DEP_SRC
git clone https://github.com/gnustep/libs-back.git
cd libs-back
./configure
make
make install
}
mkdir -p $DEP_SRC
if [ "$LIBRARY_COMBO" = 'ng-gnu-gnu' ]
then
install_ng_runtime
install_libdispatch
fi
install_prerequisites
install_gnustep_make
install_gnustep_base
install_gnustep_gui
install_gnustep_back

10
.github/scripts/test.sh vendored Executable file
View file

@ -0,0 +1,10 @@
#! /usr/bin/env sh
set -ex
echo "Testing..."
. $HOME/staging/share/GNUstep/Makefiles/GNUstep.sh;
# Test gorm
make check || (cat Tests/tests.log && false);

38
.github/workflows/main.yml vendored Normal file
View file

@ -0,0 +1,38 @@
# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the workflow will run
on: push
# A workflow run is made up of one or more jobs that can run
# sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
env:
LIBRARY_COMBO: gnu-gnu-gnu
CC: gcc
# Steps represent a sequence of tasks that will be executed as
# part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE,
# so your job can access it
- uses: actions/checkout@v2
# Runs a single command using the runners shell
- name: Build source
run: ./.github/scripts/build.sh
# Runs a single command using the runners shell
- name: Run tests
run: ./.github/scripts/test.sh
# Runs a set of commands using the runners shell
- name: Run a multi-line script
run: |
echo Add other actions to build,
echo test, and deploy your project.

14
.gitignore vendored Normal file
View file

@ -0,0 +1,14 @@
*.app
*.debug
*.profile
*.plugin
*.framework
*.debugger
*.editor
*.parser
*.preferences
*.project
*.swp
derived_src
obj
*~

View file

@ -1,59 +0,0 @@
Announcement
************
This is version 0.3.5 of ProjectCenter.
What is ProjectCenter?
======================
ProjectCenter is a clone of the NEXTSTEP ProjectBuilder application for
GNUstep.
ProjectCenter is covered under the GNU Public License. This means if you
make changes to these programs, you cannot charge a fee, other than
distribution fees, for others to use the program. You should read the
COPYING file for more information.
Noteworthy changes in version `0.3.5'.
======================================
Many features have been polished and stabilised, see ChangeLog for the
complete list of changes.
How can I get support for this software?
========================================
You may wish to use the GNUstep discussion mailing list for general
questions and discussion. Look at the GNUstep Web Pages for more
information regarding GNUstep resources <http://www.gnustep.org/>
Where can you get it? How can you compile it?
==============================================
You can download sources and rpms (for some machines) from
ftp://ftp.gnustep.org/pub/gnustep/dev-apps/.
Where do I send bug reports?
============================
Bug reports can be sent to <bug-gnustep@gnu.org>.
Obtaining GNU Software
======================
Check out the GNU web site. (`http://www.gnu.org/')
Check out the GNUstep web site. (`http://www.gnustep.org/')
Most GNU software is packed using the GNU `gzip' compression program.
Source code is available on most sites distributing GNU software.
For information on how to order GNU software on tape, floppy or
cd-rom, or printed GNU manuals, check the file etc/ORDERS in the GNU
Emacs distribution or in GNUinfo/ORDERS on prep, or e-mail a request to:
<gnu@gnu.org>
By ordering your GNU software from the FSF, you help us continue to
develop more free software. Media revenues are our primary source of
support. Donations to FSF are deductible on US tax returns.

View file

@ -1,8 +0,0 @@
Philippe C.D. Robert
Adam Fedor
Pierre-Yves Rivaille
Nicola Perot
Richard Frith-Macdonald
David Ayers
Serg Stoyan

6
CODEOWNERS Normal file
View file

@ -0,0 +1,6 @@
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
# @global-owner1 and @global-owner2 will be requested for
# review when someone opens a pull request.
* @rmottola
* @gcasa

850
COPYING
View file

@ -1,285 +1,627 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02111, USA
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
TERMS AND CONDITIONS
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
0. Definitions.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
"This License" refers to version 3 of the GNU General Public License.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
A "covered work" means either the unmodified Program or a work based
on the Program.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
1. Source Code.
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
The Corresponding Source for a work in source code form is that
same work.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
13. Use with the GNU Affero General Public License.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
14. Revised Versions of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
NO WARRANTY
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
15. Disclaimer of Warranty.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
@ -287,15 +629,15 @@ free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
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
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@ -304,36 +646,30 @@ the "copyright" line and a pointer to where the full notice is found.
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., 675 Mass Ave, Cambridge, MA 02111, USA.
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

5115
ChangeLog

File diff suppressed because it is too large Load diff

65
Documentation/ANNOUNCE Normal file
View file

@ -0,0 +1,65 @@
ANNOUNCE
********
This is version 0.5.0 of ProjectCenter.
What is ProjectCenter?
======================
ProjectCenter is GNUstep IDE(Intergated Development Environment)
application. It is a clone of the OPENSTEP ProjectBuilder application
for GNUstep.
ProjectCenter is covered under the GNU General Public License. This means
if you make changes to these programs, you cannot charge a fee, other than
distribution fees, for others to use the program. You should read the
Documentation/COPYING file for more information.
Noteworthy changes in version `0.5.0'.
======================================
* Added new project types "Framework" and "Resource Set".
* Implemented on demand loading of bundles (project types, editor).
* Impemented localization support for projects.
* Some user interface ehnancements were made (save/restore geometry of
subviews in project window splitview, drag and drop for icons).
* Clicking on .m and .h file in project browser expands to file structure
(classes, methods).
* Incorporated ProjectManager's editor with some modifications. Implemented
syntax color highlighting.
* All windows and panels are now GORM files.
* Fixes for MingW environment.
* Support for separate build directory added.
How can I get support for this software?
========================================
You may wish to use the GNUstep discussion mailing list for general
questions and discussion. Look at the GNUstep Web Pages for more
information regarding GNUstep resources <http://www.gnustep.org>
Where can you get it? How can you compile it?
==============================================
You can download sources from ftp://ftp.gnustep.org/pub/gnustep/dev-apps/.
Where do I send bug reports?
============================
Bug reports can be sent to <bug-gnustep@gnu.org>.
Obtaining GNU Software
======================
Check out the GNU web site. (`http://www.gnu.org/')
Check out the GNUstep web site. (`http://www.gnustep.org/')

12
Documentation/AUTHORS Normal file
View file

@ -0,0 +1,12 @@
Authors:
Philippe C.D. Robert <probert@siggraph.org>
Sergii Stoian <stoyan255gmail.com>
Contributors:
David Ayers <d.ayers@inode.at>
Richard Frith-Macdonald <rfm@gnu.org>
Nicola Pero <n.pero@mi.flashnet.it>
Pierre-Yves Rivaille <pyrivail@ens-lyon.fr>
Adam Fedor <fedor@gnu.org>
Daniel Luederwald <das_flip@gmx.de>
Gregory Jonh Casamento <greg_casamento@yahoo.com>

73
Documentation/BUGS Normal file
View file

@ -0,0 +1,73 @@
KNOWN BUGS:
~~~~~~~~~~
- [bug #25571] exception on removing author in project inspector.
This happens to me with project-center-0.5.0.
in the Project Inspector -> Project Description, click the Add button to
add an Author now the text input field is active, to add an author, as
long as this is active, and then pressing remove button, to remove an
author, then PC exits with the following exception:
NSRangeException: Index 1 is out of range 1 (in 'removeObjectAtIndex:')
- [sr #106614] ProjectCenter, document type extensions.
In the project center project properties editor, if there are several
extensions separated bya space, they should be encoded as element arrays
- [bug #25193] pc fails to load project from ImageViewer.pc.project.
- [bug #22815] ProjectCenter won't open a new project .
[doesn't work for me]
- [bug #22411] font types in ProjectCenter Editor.
- [bug #22441] Usability: Project Center should have a separate project type
for Renaissance based applications
- [bug #22124] ProjectCenter doesn't support extra entries in Plist.
- [bug #22008] Project Center should support more flexible directory
configurations.
- [bug #22026] ProjectCenter should split up project file.
- [bug #11931] Build before launch on change.
- [bug #20858] UI components (editor, builder, launcher).
The latest change fixes the initial problem but introduces a new one!
The new issue is that doesn't matter what I check or uncheck on the Interface
Preferences the only thing that is shown is the Editor in the SplitView.
It's reproducable every time, no matter what. All you need to do is check
every option, so that only the browser will be shown, then uncheck random
options.
On another note, but still related, when the Editor is shown (after being
hidden by the preferences) it doesn't preserve it's previous size.
RELEASE CRTITICAL UNKNOWN BUGS:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ProjectBuilder's incorrectly parses output of gnustep-make (incorrect
directories, incorrectly recognises initial point of error etc.).
- Browser must be double checked for correct behaviour on browsing,
file removal, opening editor (currently is bad).
- It seems that changing subproject's attributes doesn't change 'edited'
state of project window.
- Removing files works bad (crashes, strange warnings, exceptions). Check it!
Maybe this happens only in subprojects... It may be connected to browser's
functionality.
- PC tries to load internal editor for .gorm files. Fix it!!!
- Setting localizable resources through inspector works bad. Double check it
and fix!!! Also check this functionality when multiple files selected.
- Double check support for "Resource Set" project type as subproject of
existing projecttypes.
-
WHISH LIST:
~~~~~~~~~~
+ Open panel with list of modified files on project close and project build.
- Think about browser initial responder status: now very uncomfortable
to find some file in browser list when editor is open.
- "Project Attributes" for Application should be reviewed after split of
"Application" to "Application" and "Renaissance" project types.
- Add setting to preferences "Create template-based files on project creation".
It should allow to switch off creation of .m, .h, .gorm files from templates.

339
Documentation/COPYING Normal file
View file

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02111, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
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., 675 Mass Ave, Cambridge, MA 02111, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

2092
Documentation/ChangeLog-1 Normal file

File diff suppressed because it is too large Load diff

View file

@ -16,12 +16,3 @@ Here is the quick way of building and installing ProjectCenter:
make install;
By default ProjectCenter gets installed under GNUSTEP_SYSTEM_ROOT.
Important!
==========
When ProjectCenter fails to launch due to a missing bundle path, you can set
it using GNUstep's defaults tool ie. to:
defaults write ProjectCenter BundlePaths /TheProperPath/Library/ProjectCenter

22
Documentation/README Normal file
View file

@ -0,0 +1,22 @@
ProjectCenter
=============
This is ProjectCenter, the GNUstep IDE which is part of the GNUstep
project and is copyrighted by the Free Softare Foundation. ProjectCenter
is released under the GPL - see Documentation/COPYING for the details.
Further information can be found on the GNUstep site at www.gnustep.org
on the ProjectCenter page
http://www.gnustep.org/experience/ProjectCenter.html
For the installation instructions read the INSTALL file.
For a list of upcoming and/or planned features read the TODO file.
For a list of changes in released versions read the ANNOUNCE file.
The main author of ProjectCenter is Philippe C.D. Robert, current
maintainer is Serg Stoyan, but others have contributed a lot to the
current state of the project (see Documentatio/AUTHORS). Many of the
icons have been created by Andrew Lindsay.

70
Documentation/SCHEME Normal file
View file

@ -0,0 +1,70 @@
+- PCProjectInspector
|
+- PCLoadedFilesPanel
|
+- PCBuildPanel
|
+- PCLaunchPanel
|
+- [SI]PCFindPanel
PCAppController-\ |
| ----- PCProjectManager
PCMenuController/ | ||
| PCProject <PCAppProject, PCBundleProject>
| |
| +- PCProjectWindow
| |
| +- PCProjectBrowser
| |
| +- PCProjectLoadedFiles
| |
| +- PCProjectBuilder
| |
| +- PCProjectLauncher
| |
| +- [SI]PCProjectFinder
| |
| +- PCProjectEditor
| ||
| PCEditor
| |
| +- PCEditorView
|
PCTextFinder
|
PCFileManager
|
+- PCFileCreator
------------------------------
Other (controls, tools, etc.):
------------------------------
PCButton
PCSplitView
PCOutputView (Should be implemented. Used by e.g. Project Builder)
PCBundleLoader (Used in ProjectCenter application)
PCMakefileFactory (Used in PC*Project bundles)
PCServer (don't used)
----------
THOUGHTS:
----------
- implement PCProjectFinder and PCFindPanel GUI;
- "Edit" menu should be completely provided by Editor part;
- "Add Files" panel should provide selection of type and "Choose Folders"
and "Add Class", "Add Header" and so on checkbox;
- "New File in Project..." panel should provide "Create Header",
"Create Class" and so on checkbox.
- Add "Installable" or something to "Bundle" project type project attributes.
Localization:
~~~~~~~~~~~~~
- On project creation, all resources go to Resources subdir and placed into
GNUmakefile as *_RESOURCE_FILES; [done!]
- If some file from [PC*Proj localizableKeys] categories selected as
"Localizable Resource", that file removed from *_RESOURCE_FILES and placed
into *_LOCALIZED_RESOURCE_FILES (for directories: Resources->Language.lproj);
- in PC.project add USER_LANGUAGES=(); [done!]
- in PC.project add LOCALIZED_RESOURCES=(); [done!]

118
Documentation/TODO Normal file
View file

@ -0,0 +1,118 @@
TODO
****
This is the GNUstep ProjectCenter TODO list.
Feel free to propose changes to this list or make suggestions!
ProjectCenter 0.4 Owner/Status
----------------- ------------
- Review and cleanup of PC project bundles/templates [done!]
- Finish Project Inspector [done!]
- Inspector UI using Gorm [done!]
- File creation (File->New in project) cleanup and finishing [done!]
- Initial suprojects support [done!]
- Finish support of external editors [done!]
- Preferences enhancements and UI using Gorm [done!]
- Remember project windows and panels in PC.project [done!]
ProjectCenter 0.5
-----------------
- Create ProjectWindow GORM file [done!]
- Add "Framework" project type [done!]
- Add "Resource Set" project type [done!]
- Implement on demand loading of bundles [done!]
- Localization support for projects [done!]
- Finish save/restore size of split views in Project Window [done!]
--- Project Editor:
- Implement on demand loading (editor for file type) [done!]
- Open some files read only (Supporting Files) [done!]
- Implement code parser (get it from CodeEditor?) [done!]
- Project Browser should show file structure. [done!]
- Click on Browser item should move cursor to line in file [done!]
--- Project Builder:
- Create panel and builder GORM files [done!]
- Implement root build directory handling [done!]
- Finish options handling [done!]
- Parse gcc output [95% done!]
- Display warnings,errors,options etc. as clickable list [done!]
- GNUstep make version 2.0 compliance [done!]
- Save last used path separately for different file panels [done!]
ProjectCenter 0.6
-----------------
- Create new Info panel [done!]
- Implement support for integrated debugging [90% done]
- change project type from file to bundle [done!] casamento/mottola
- Finish FileNameIcon (draggable, files can be dragged to it) [done!]
- More options for file creation [done!]
- Review all situations when dialogs must be popped up [done!]
- Check all textfields if 'scrollable' attribute set [done!]
- Rewrite Preferences (3rd party sections etc.) [done!]
--- Project Builder --------------------------------------------
- Review build, compiler, linker options setting
(Build Options, Inspector) [done!]
- Finish parsing build output (compiler errors/warnings,
make errors, gnustep-make verbose mode) stoyan
- Finish interaction with Editor (errors, warnings) stoyan
- Add support for running configurable(Build Options)
command before and after make stoyan
--- Project Editor ---------------------------------------------
- review situations when editor is opened stoyan
- implement go to line stoyan
- Implement interaction with Builder (errors, warnings) stoyan
- Implement indentation stoyan
- implement undo inside editor [done!]
- Add and use basic editor preferences (fonts, colors, sizes) [50% done]
--- Project Inspector ------------------------------------------
- Make sections as loadable bundles stoyan
- Finish functionality of all sections stoyan
- Review all sections for correct behaviour stoyan
- Split "Application" to "Application GORM" and
"Application Renaissance" project types stoyan
- Add "Palette" project type ???
- Add "Component" project type ???
- Process reported bugs ???
- Think about imlementing pending adding/removal of files ???
- New icons. Need volunteers!!! ???
ProjectCenter 0.7
-----------------
- Finish suppor of integrated debugging ???
- Add support for browsing 'Library' category entries ???
- Add support for non-project files ???
- Implement symbols indexing. This feature touches Browser
(class and method list) and Editor (autocompletion) ???
- Editor: implement autocompletion ???
- An initial project wide find feature ???
- Better integration with other tools (GORM). DevKit? ???
ProjectCenter 0.8
-----------------
- Implement code folding in Editor ???
- Direct code documentation (using autogsdoc) ???
- Think about adopting existing directory tree (more flexible
directory configurations) [bug #22008] ???
ProjectCenter 0.9
-----------------
- ProjectCenter localization ???
- Initial user documentation ???
- Implement Plist editor for editing project files[bug #22124] ???
- An initial class browser/documentation feature ???
ProjectCenter 1.0
-----------------
Version 1.0 is aimed at stabilising and optimising existing
features. There will not be any new features since 0.9.
After 1.0
---------
- CVS/SVN integration ???

View file

@ -0,0 +1,34 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"findNext:",
"findNextAndOrderFindPanelOut:",
"findPrevious:",
"ignoreCase:",
"replace:",
"replaceAll:",
"replaceAndFind:"
);
Super = NSObject;
};
TextFinder = {
Actions = (
"findNext:",
"findNextAndOrderFindPanelOut:",
"findPrevious:",
"replace:",
"replaceAll:",
"replaceAndFind:"
);
Outlets = (
findNextButton,
findTextField,
ignoreCaseButton,
replaceAllScopeMatrix,
replaceTextField,
statusField
);
Super = NSObject;
};
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,20 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"showInfoWindow:"
);
Super = NSObject;
};
PCInfoController = {
Actions = (
"showInfoWindow:"
);
Outlets = (
infoWindow,
versionField,
copyrightField
);
Super = NSObject;
};
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,41 +0,0 @@
{
IBClasses = (
{CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
{
ACTIONS = {
addFile = id;
addSubproject = id;
closeProject = id;
findNext = id;
findPrevious = id;
newFile = id;
newProject = id;
newSubproject = id;
openFile = id;
openProject = id;
removeFile = id;
removeSubproject = id;
renameFile = id;
revertFile = id;
revertToSaved = id;
runTarget = id;
saveFile = id;
saveFiles = id;
saveProject = id;
saveProjectAs = id;
showBuildPanel = id;
showEditorPanel = id;
showFindPanel = id;
showInfoPanel = id;
showInspector = id;
showPrefWindow = id;
showRunPanel = id;
};
CLASS = PCAppController;
LANGUAGE = ObjC;
OUTLETS = {delegate = id; };
SUPERCLASS = NSObject;
}
);
IBVersion = 1;
}

View file

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IBEditorPositions</key>
<dict>
<key>29</key>
<string>26 425 415 44 0 0 1024 746 </string>
</dict>
<key>IBFramework Version</key>
<string>286.0</string>
<key>IBOpenObjects</key>
<array>
<integer>29</integer>
</array>
<key>IBSystem Version</key>
<string>6F21</string>
</dict>
</plist>

Binary file not shown.

View file

@ -0,0 +1,73 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"setBuildTool:"
);
Super = NSObject;
};
PCPrefController = {
Actions = (
"popupChanged:",
"setSuccessSound:",
"setFailureSound:",
"setPromptOnClean:",
"setKeepBackup:",
"setSaveOnQuit:",
"setSavePeriod:",
"setDisplayPanels:",
"setPromptWhenQuit:",
"setDebugger:",
"setEditor:",
"setTabBehaviour:",
"setTabSpaces:",
"setRootBuildDir:",
"setDeleteCache:",
"setFullPathInFilePanels:",
"setRememberWindows:",
"setEditorSize:",
"setDisplayLog:",
"setBuildTool:"
);
Outlets = (
panel,
popupButton,
sectionsView,
buildingView,
successField,
setSuccessButton,
failureField,
setFailureButton,
promptOnClean,
savingView,
keyBindingsView,
miscView,
saveOnQuit,
keepBackup,
autosaveSlider,
autosaveField,
separateBuilder,
separateLauncher,
separateEditor,
separateLoadedFiles,
promptWhenQuit,
debuggerField,
editorField,
interfaceView,
deleteCache,
fullPathInFilePanels,
rememberWindows,
tabMatrix,
tabSpacesField,
rootBuildDirField,
rootBuildDirButton,
editorColumnsField,
editorLinesField,
displayLog,
buildToolField,
debuggerButton,
buildToolButton
);
Super = NSObject;
};
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,70 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"findEnterSelection:",
"findJumpToSelection:",
"findNext:",
"findPrevious:",
"findShowPanel:",
"performGoToLinePanelAction:"
);
Super = NSObject;
};
PCAppController = {
Actions = (
);
Outlets = (
menuController
);
Super = NSObject;
};
PCMenuController = {
Actions = (
"showInfoPanel:",
"showPrefWindow:",
"projectOpen:",
"projectNew:",
"projectSave:",
"projectAddFiles:",
"projectSaveFiles:",
"projectRemoveFiles:",
"subprojectNew:",
"subprojectAdd:",
"fileOpen:",
"fileNew:",
"fileSave:",
"fileSaveAs:",
"fileSaveTo:",
"fileRevertToSaved:",
"fileClose:",
"fileOpenQuickly:",
"fileRename:",
"fileNewUntitled:",
"showInspector:",
"showBuildPanel:",
"showLoadedFilesPanel:",
"runTarget:",
"executeBuild:",
"stopBuild:",
"startClean:",
"showLaunchPanel:",
"debugTarget:",
"toggleToolbar:",
"loadedFilesSortByTime:",
"loadedFilesSortByName:",
"loadedFilesNextFile:",
"loadedFilesPreviousFile:",
"showLogPanel:",
"findEnterSelection:",
"findNext:",
"findPrevious:",
"findShowPanel:",
"findJumpToSelection:",
"goToLine:"
);
Outlets = (
);
Super = NSObject;
};
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,41 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"orderFrontFontPanel:",
"searchOrderPopupDidChange:",
"setSearchOrder:",
"removeSearchOrder:",
"addSearchOrder:",
"changeCommonProjectEntry:"
);
Super = NSObject;
};
PCProjectInspector = {
Actions = (
"searchOrderPopupDidChange:",
"setSearchOrder:",
"removeSearchOrder:",
"addSearchOrder:",
"changeCommonProjectEntry:"
);
Outlets = (
buildAttributesView,
projectNameLabel,
searchOrderPopup,
searchOrderList,
searchOrderTF,
searchOrderSet,
searchOrderRemove,
searchOrderAdd,
cppOptField,
objcOptField,
cOptField,
ldOptField,
searchOrderScroll,
searchOrderColumn,
installDomainPopup
);
Super = NSObject;
};
}

Binary file not shown.

View file

@ -0,0 +1,48 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"showOptionsPanel:",
"showFindView:",
"showProjectBuild:",
"showProjectInspector:",
"showProjectLaunch:",
"showProjectLoadedFiles:",
"startBuild:",
"startClean:"
);
Super = NSObject;
};
PCButton = {
Actions = (
);
Outlets = (
);
Super = NSButton;
};
PCProjectBuilder = {
Actions = (
"startBuild:",
"startClean:",
"showOptionsPanel:"
);
Outlets = (
buildButton,
cleanButton,
componentView,
split,
optionsButton,
statusField,
targetField,
errorsCountField
);
Super = NSObject;
};
PCSplitView = {
Actions = (
);
Outlets = (
);
Super = NSSplitView;
};
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,26 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"optionsButtonClicked:",
"optionsPopupChanged:"
);
Super = NSObject;
};
PCProjectBuilderOptions = {
Actions = (
"optionsPopupChanged:",
"optionsButtonClicked:"
);
Outlets = (
buildArgsField,
debugButton,
verboseButton,
optionsPanel,
stripButton,
sharedLibsButton,
targetPopup
);
Super = NSObject;
};
}

Binary file not shown.

View file

@ -0,0 +1,37 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"showProjectInspector:",
"showFindView:",
"showProjectBuild:",
"showProjectLaunch:",
"showProjectLoadedFiles:"
);
Super = NSObject;
};
PCAuxiliaryWindow = {
Actions = (
);
Outlets = (
);
Super = NSWindow;
};
PCProjectBuilderPanel = {
Actions = (
);
Outlets = (
contentBox,
emptyBox,
panel
);
Super = NSPanel;
};
PCSplitView = {
Actions = (
);
Outlets = (
);
Super = NSSplitView;
};
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,39 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"fileNameDidChange:",
"setLocalizableResource:"
);
Super = NSObject;
};
PCFileNameField = {
Actions = (
);
Outlets = (
);
Super = NSTextField;
};
PCFileNameIcon = {
Actions = (
);
Outlets = (
);
Super = NSImageView;
};
PCProjectInspector = {
Actions = (
"fileNameDidChange:",
"setPublicHeader:",
"setLocalizableResource:"
);
Outlets = (
fileIconView,
fileNameField,
fileAttributesView,
localizableButton,
publicHeaderButton
);
Super = NSObject;
};
}

Binary file not shown.

View file

@ -0,0 +1,12 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
PCLogController = {
Actions = (
);
Outlets = (
panel,
textView
);
Super = NSObject;
};
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,29 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"closeNewFilePanel:",
"createFile:",
"newFilePopupChanged:"
);
Super = NSObject;
};
PCFileCreator = {
Actions = (
"closeNewFilePanel:",
"createFile:",
"newFilePopupChanged:"
);
Outlets = (
newFilePanel,
nfImage,
nfTypePB,
nfDescriptionTV,
nfNameField,
nfCancelButton,
nfCreateButton,
nfAddHeaderButton
);
Super = NSObject;
};
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,28 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"orderFrontFontPanel:",
"closeNewSubprojectPanel:",
"createSubproject:"
);
Super = NSObject;
};
PCProjectManager = {
Actions = (
"closeNewSubprojectPanel:",
"createSubproject:"
);
Outlets = (
nsPanel,
nsImage,
nsTitle,
nsNameField,
nsTypePB,
nsCancelButton,
nsCreateButton,
projectNameField
);
Super = NSObject;
};
}

Binary file not shown.

View file

@ -0,0 +1,21 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"setCurrentLanguage:"
);
Super = NSObject;
};
PCProjectInspector = {
Actions = (
"setCurrentLanguage:"
);
Outlets = (
projectTypeField,
projectAttributesView,
projectLanguagePB,
projectNameField
);
Super = NSObject;
};
}

View file

@ -0,0 +1,37 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"orderFrontFontPanel:",
"addAuthor:",
"removeAuthor:",
"upAuthor:",
"downAuthor:",
"changeCommonProjectEntry:"
);
Super = NSObject;
};
PCProjectInspector = {
Actions = (
"addAuthor:",
"removeAuthor:",
"upAuthor:",
"downAuthor:",
"changeCommonProjectEntry:"
);
Outlets = (
descriptionField,
releaseField,
licenseField,
licDescriptionField,
urlField,
authorsScroll,
authorAdd,
authorRemove,
authorUp,
authorDown,
projectDescriptionView
);
Super = NSObject;
};
}

View file

@ -0,0 +1,22 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"orderFrontFontPanel:",
"inspectorPopupDidChange:"
);
Super = NSObject;
};
PCProjectInspector = {
Actions = (
"inspectorPopupDidChange:"
);
Outlets = (
inspectorPanel,
inspectorPopup,
inspectorView,
contentView
);
Super = NSObject;
};
}

View file

@ -0,0 +1,22 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"addLanguage:",
"removeLanguage:"
);
Super = NSObject;
};
PCProjectInspector = {
Actions = (
"addLanguage:",
"removeLanguage:"
);
Outlets = (
projectLanguagesView,
languagesList,
newLanguage
);
Super = NSObject;
};
}

View file

@ -0,0 +1,64 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"showProjectInspector:",
"showFindView:",
"showProjectBuild:",
"showProjectLaunch:",
"showProjectLoadedFiles:"
);
Super = NSObject;
};
PCButton = {
Actions = (
);
Outlets = (
);
Super = NSButton;
};
PCFileNameField = {
Actions = (
);
Outlets = (
);
Super = NSTextField;
};
PCFileNameIcon = {
Actions = (
);
Outlets = (
);
Super = NSImageView;
};
PCProjectWindow = {
Actions = (
"showProjectInspector:",
"showFindView:",
"showProjectBuild:",
"showProjectLaunch:",
"showProjectLoadedFiles:"
);
Outlets = (
buildButton,
fileIcon,
fileIconTitle,
findButton,
h_split,
inspectorButton,
launchButton,
loadedFilesButton,
projectWindow,
statusLine,
toolbarView
);
Super = NSObject;
};
PCSplitView = {
Actions = (
);
Outlets = (
);
Super = NSSplitView;
};
}

Binary file not shown.

View file

@ -0,0 +1,29 @@
{
"## Comment" = "Do NOT change this file, Gorm maintains it";
FirstResponder = {
Actions = (
"buttonClicked:"
);
Super = NSObject;
};
PCAuxiliaryWindow = {
Actions = (
);
Outlets = (
);
Super = NSWindow;
};
SaveModifiedFilesDelegate = {
Actions = (
"buttonClicked:"
);
Outlets = (
alternateButton,
defaultButton,
panel,
otherButton,
filesList
);
Super = NSObject;
};
}

Binary file not shown.

Binary file not shown.

138
Framework/GNUmakefile Normal file
View file

@ -0,0 +1,138 @@
#
# GNUmakefile - Generated by ProjectCenter
#
PACKAGE_NAME = ProjectCenter
include $(GNUSTEP_MAKEFILES)/common.make
#
# Framework
#
VERSION = 0.7.0
FRAMEWORK_NAME = ProjectCenter
ProjectCenter_CURRENT_VERSION_NAME = 0.7.0
ProjectCenter_DEPLOY_WITH_CURRENT_VERSION = yes
ProjectCenter_HEADER_FILES_DIR = ../Headers/ProjectCenter
ProjectCenter_LIBRARIES_DEPEND_UPON += $(OBJC_LIBS) $(FND_LIBS) $(GUI_LIBS)
#
# Subprojects
#
#SUBPROJECTS = Resources
#
# Header files
#
ProjectCenter_HEADER_FILES = \
PCDefines.h \
ProjectCenter.h \
\
PCBundleManager.h \
PCEditorManager.h \
PCFileManager.h \
PCAddFilesPanel.h \
PCFileCreator.h \
PCMakefileFactory.h \
PCSaveModified.h \
\
PCProjectManager.h \
PCProject.h \
PCProjectWindow.h \
PCProjectInspector.h \
PCProjectBuilder.h \
PCProjectBuilderOptions.h \
PCProjectBuilderPanel.h \
PCProjectLauncher.h \
PCProjectLauncherPanel.h \
PCProjectEditor.h \
\
PCProjectBrowser.h \
PCProjectLoadedFiles.h \
PCProjectLoadedFilesPanel.h \
\
PCFileNameField.h \
PCFileNameIcon.h \
\
PCLogController.h \
\
PCAuxiliaryWindow.h
#
# Class files
#
ProjectCenter_OBJC_FILES = \
PCBundleManager.m \
PCEditorManager.m \
PCMakefileFactory.m \
PCFileManager.m \
PCAddFilesPanel.m \
PCFileCreator.m \
PCSaveModified.m \
\
PCProjectManager.m \
PCProject.m \
PCProjectWindow.m \
PCProjectInspector.m \
PCProjectBuilder.m \
PCProjectBuilderOptions.m \
PCProjectBuilderPanel.m \
PCProjectLauncher.m \
PCProjectLauncherPanel.m \
PCProjectEditor.m \
\
PCProjectBrowser.m \
PCProjectLoadedFiles.m \
PCProjectLoadedFilesPanel.m \
\
PCButton.m \
PCFileNameField.m \
PCFileNameIcon.m \
\
PCLogController.m \
\
PCAuxiliaryWindow.m
#
# Resources
#
ProjectCenter_RESOURCE_FILES = \
Resources/cfile.template \
Resources/cheader.template \
Resources/class.template \
Resources/gsmarkup.template \
Resources/header.template \
Resources/postamble.template \
Resources/protocol.template \
Resources/ocppclass.template \
#
# Localization
#
ProjectCenter_LOCALIZED_RESOURCE_FILES = \
ProjectWindow.gorm \
BuilderPanel.gorm \
Builder.gorm \
BuilderOptions.gorm \
NewSubproject.gorm \
NewFile.gorm \
ProjectInspector.gorm \
BuildAttributes.gorm \
ProjectAttributes.gorm \
ProjectDescription.gorm \
ProjectLanguages.gorm \
FileAttributes.gorm \
LogPanel.gorm \
SaveModified.gorm
ProjectCenter_LANGUAGES = \
English
-include GNUmakefile.preamble
include $(GNUSTEP_MAKEFILES)/framework.make
include $(GNUSTEP_MAKEFILES)/aggregate.make
-include GNUmakefile.postamble

View file

@ -3,7 +3,7 @@
#
# Copyright (C) 2001 Free Software Foundation, Inc.
#
# Author: Philippe C.D. Robert <prh@3dkit.org>
# Author: Philippe C.D. Robert <probert@siggraph.org>
#
# This file is part of GNUstep
#
@ -20,11 +20,17 @@
# You should have received a copy of the GNU Library General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# 31 Milk Street #960789 Boston, MA 02196 USAA.
before-all::
rm -f ProjectCenter
$(LN_S) . ProjectCenter
#before-all::
# cd ..;rm -f ProjectCenter;$(LN_S) Library ProjectCenter
after-clean::
rm -f ProjectCenter
#after-clean::
# rm -f ../ProjectCenter
#after-uninstall::
# rm -rf $(GNUSTEP_LIBRARIES)/libProjectCenter*
#after-install::
# cp -r Protocols $(GNUSTEP_HEADERS)/ProjectCenter
# cp -r Widgets $(GNUSTEP_HEADERS)/ProjectCenter

View file

@ -2,7 +2,7 @@
#
# Copyright (C) 2001 Free Software Foundation, Inc.
#
# Author: Philippe C.D. Robert <prh@3dkit.org>
# Author: Philippe C.D. Robert <probert@siggraph.org>
#
# This file is part of GNUstep
#
@ -22,7 +22,7 @@
# You should have received a copy of the GNU Library General Public
# License along with this library; see the file COPYING.LIB.
# If not, write to the Free Software Foundation,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# 31 Milk Street #960789 Boston, MA 02196 USAA.
#
# Makefile.preamble
@ -33,27 +33,34 @@
# be put into Makefile.postamble.
#
# FIXME: Why are we hardcoding the full path to 'make' or 'gdb' in
# here ? Can't we discover them at runtime ?
GMAKE := $(shell which ${MAKE})
GDB := $(shell which gdb)
#
# Flags dealing with compiling and linking
#
# Additional flags to pass to the preprocessor
ADDITIONAL_CPPFLAGS += -Wall -Werror
ADDITIONAL_CPPFLAGS +=
# Additional flags to pass to the Objective-C compiler
ADDITIONAL_OBJCFLAGS += -Wall -Werror
ADDITIONAL_OBJCFLAGS += -DDEVELOPMENT\
-DPCDefaultBuildTool=@"\"$(GMAKE)\"" \
-DPCDefaultDebugger=@"\"$(GDB)\""
# Additional flags to pass to the C compiler
ADDITIONAL_CFLAGS += -Wall -Werror
ADDITIONAL_CFLAGS +=
# Additional include directories the compiler should search
ADDITIONAL_INCLUDE_DIRS += -I../PCLib
ADDITIONAL_INCLUDE_DIRS += -I../ -I../Headers
# Additional LDFLAGS to pass to the linker
#ADDITIONAL_LDFLAGS +=
ADDITIONAL_LDFLAGS +=
# Additional library directories the linker should search
ADDITIONAL_LIB_DIRS += -L../PCLib/$(GNUSTEP_OBJ_DIR)
ADDITIONAL_LIB_DIRS += -L../ProjectCenter/$(GNUSTEP_OBJ_DIR)
ADDITIONAL_TOOL_LIBS +=
@ -62,7 +69,7 @@ ADDITIONAL_TOOL_LIBS +=
#
# Additional directories to be created during installation
ADDITIONAL_INSTALL_DIRS +=
ADDITIONAL_INSTALL_DIRS +=
#
# Local configuration

116
Framework/PCAddFilesPanel.m Normal file
View file

@ -0,0 +1,116 @@
/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2004-2014 Free Software Foundation
Authors: Serg Stoyan
Riccardo Mottola
This file is part of GNUstep.
This application 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 application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
#import <ProjectCenter/PCLogController.h>
#import <ProjectCenter/PCAddFilesPanel.h>
static PCAddFilesPanel *addFilesPanel = nil;
@implementation PCAddFilesPanel
+ (PCAddFilesPanel *)addFilesPanel
{
if (addFilesPanel == nil)
{
addFilesPanel = [[self alloc] init];
}
return addFilesPanel;
}
// --- "Add Files..." panel
- (id)init
{
NSRect fr;
self = [super init];
fr = NSMakeRect(20,30,160,21);
// File type popup
fileTypePopup = [[NSPopUpButton alloc] initWithFrame:fr pullsDown:NO];
[fileTypePopup setRefusesFirstResponder:YES];
[fileTypePopup setAutoenablesItems:NO];
[fileTypePopup setTarget:self];
[fileTypePopup setAction:@selector(filesForAddPopupClicked:)];
[fileTypePopup selectItemAtIndex:0];
fileTypeAccessaryView = [[NSBox alloc] init];
[fileTypeAccessaryView setTitle:@"File Types"];
[fileTypeAccessaryView setTitlePosition:NSAtTop];
[fileTypeAccessaryView setBorderType:NSGrooveBorder];
[fileTypeAccessaryView addSubview:fileTypePopup];
[fileTypeAccessaryView sizeToFit];
[fileTypeAccessaryView setAutoresizingMask:NSViewMinXMargin
| NSViewMaxXMargin];
// Panel
[self setAllowsMultipleSelection:YES];
return self;
}
- (void)setCategories:(NSArray *)categories
{
[fileTypePopup removeAllItems];
[fileTypePopup addItemsWithTitles:categories];
}
- (void)selectCategory:(NSString *)category
{
[self setAccessoryView:fileTypeAccessaryView];
[fileTypePopup selectItemWithTitle:category];
[self filesForAddPopupClicked:self];
}
- (NSString *)selectedCategory
{
return [fileTypePopup titleOfSelectedItem];
}
- (void)setFileTypes:(NSArray *)fileTypes
{
NSString *path = nil;
[super setAllowedFileTypes: fileTypes];
path = [_browser path];
[self validateVisibleColumns];
[_browser setPath:path];
[self display];
}
- (void)filesForAddPopupClicked:(id)sender
{
NSString *category = [fileTypePopup titleOfSelectedItem];
if ([[self delegate] respondsToSelector:@selector(categoryChangedTo:)])
{
[[self delegate] categoryChangedTo:category];
}
}
@end

View file

@ -0,0 +1,33 @@
/*
PCAuxiliaryWindow.m
Author: German A. Arias <germanandre@gmx.es>
Date: September 2013
This file is part of ProjectCenter.
ProjectCenter 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 3 of the License, or (at your option) any later version.
This application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
#import <ProjectCenter/PCAuxiliaryWindow.h>
@implementation PCAuxiliaryWindow
- (BOOL) canBecomeMainWindow
{
return NO;
}
@end

421
Framework/PCBundleManager.m Normal file
View file

@ -0,0 +1,421 @@
/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2000-2004 Free Software Foundation
Authors: Philippe C.D. Robert
Serg Stoyan
This file is part of GNUstep.
This application 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 application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
// TODO: Finish support for third party bundles.
// It involves support for user defined bundle directories
// through preferences. Now supported are:
// - PC application resource dir
// (GNUSTEP_SYSTEM_APPS/ProjectCenter.app/Resources)
// - GNUSTEP_SYSTEM_LIBRARY/Bundles/ProjectCenter
// (NSApplicationSupportDirectory)
#import <ProjectCenter/PCBundleManager.h>
#import <ProjectCenter/PCDefines.h>
#import <ProjectCenter/PCLogController.h>
@implementation PCBundleManager
//----------------------------------------------------------------------------
// Init and free methods
//----------------------------------------------------------------------------
- (id)init
{
if ((self = [super init]))
{
loadedBundles = [[NSMutableDictionary alloc] init];
bundlesInfo = [[NSMutableDictionary alloc] init];
}
return self;
}
- (void)dealloc
{
RELEASE(loadedBundles);
RELEASE(bundlesInfo);
[super dealloc];
}
//
- (NSString *)resourcePath
{
NSString *path = [[NSBundle mainBundle] resourcePath];
if (![[NSFileManager defaultManager] fileExistsAtPath:path])
{
[NSException raise:@"PCBundleManagerPathException"
format:@"ProjectCenter installed incorrectly"];
return nil;
}
return path;
}
// --- Handling of bundles' Info.table dictionaries without actual
// --- bundles loading
// bundlesInfo is a dictionary. key/value pair is the following:
// (NSString *) (NSDictionary *)
// "full path of a bundle" = "Info.table contents"
- (NSDictionary *)infoForBundlesType:(NSString *)extension
{
NSArray *bundles;
NSEnumerator *enumerator;
NSString *bundlePath;
NSString *infoTablePath;
NSDictionary *infoTable;
NSMutableDictionary *reqBundlesInfo;
reqBundlesInfo = [NSMutableDictionary dictionary];
bundles = [NSBundle pathsForResourcesOfType:extension
inDirectory:[self resourcePath]];
enumerator = [bundles objectEnumerator];
while ((bundlePath = [enumerator nextObject]))
{
infoTablePath = [NSString
stringWithFormat:@"%@/Resources/Info.table", bundlePath];
// TODO: fill 'reqBundlesInfo' with element from 'bundlesInfo' if
// exists
infoTable = [NSDictionary dictionaryWithContentsOfFile:infoTablePath];
[reqBundlesInfo setObject:infoTable forKey:bundlePath];
[bundlesInfo setObject:infoTable forKey:bundlePath];
}
return reqBundlesInfo;
}
// Key value can be checked against NSString and NSArray values only.
- (NSDictionary *)infoForBundleType:(NSString *)extension
keyName:(NSString *)key
keyContains:(NSString *)value
{
NSDictionary *reqBundlesInfo;
NSEnumerator *enumerator;
NSString *bundlePath;
id keyValue;
NSDictionary *infoTable;
if (extension == nil)
{
return nil;
}
reqBundlesInfo = [self infoForBundlesType:extension];
enumerator = [[reqBundlesInfo allKeys] objectEnumerator];
infoTable = nil;
while ((bundlePath = [enumerator nextObject]))
{
infoTable = [reqBundlesInfo objectForKey:bundlePath];
if (key == nil || value == nil)
{
break;
}
keyValue = [infoTable objectForKey:key];
if ([keyValue isKindOfClass:[NSString class]] &&
[keyValue isEqualToString:value])
{
break;
}
else if ([keyValue isKindOfClass:[NSArray class]] &&
[keyValue containsObject:value])
{
break;
}
else
{
infoTable = nil;
}
}
return infoTable;
}
- (NSDictionary *)infoForBundleName:(NSString *)name
type:(NSString *)type
{
NSDictionary *reqBundlesInfo = [self infoForBundlesType:type];
NSEnumerator *enumerator = [[reqBundlesInfo allKeys] objectEnumerator];
NSString *bundlePath;
NSDictionary *infoTable;
infoTable = nil;
while ((bundlePath = [enumerator nextObject]))
{
infoTable = [reqBundlesInfo objectForKey:bundlePath];
if ([[infoTable objectForKey:@"Name"] isEqualToString:name])
{
break;
}
else
{
infoTable = nil;
}
}
return infoTable;
}
- (NSString *)classNameForBundleType:(NSString*)type
fileName:(NSString *)fileName
{
NSString *fileExtension = [fileName pathExtension];
NSDictionary *infoTable = nil;
NSString *className = nil;
infoTable = [self infoForBundleType:type
keyName:@"FileTypes"
keyContains:fileExtension];
className = [infoTable objectForKey:@"PrincipalClassName"];
return className;
}
- (NSString *)bundlePathWithName:(NSString *)bundleName
{
NSArray *bundlePaths = nil;
NSString *bundleFullPath = nil;
NSEnumerator *enumerator = nil;
// Search for bundle full path in bundlesInfo dictionary
bundlePaths = [bundlesInfo allKeys];
enumerator = [bundlePaths objectEnumerator];
// NSLog(@"Bundle fullpath method #1: %@",
// [[self resourcePath] stringByAppendingPathComponent:bundleName]);
while ((bundleFullPath = [enumerator nextObject]))
{
if ([[bundleFullPath lastPathComponent] isEqualToString:bundleName])
{
break;
}
}
// NSLog(@"Bundle fullpath method #2: %@", bundleFullPath);
return bundleFullPath;
}
// --- Invokes loading of bundle
- (id)objectForClassName:(NSString *)className
bundleType:(NSString *)bundleExtension
protocol:(Protocol *)proto
{
Class objectClass;
if (!className)
{
NSLog(@"Bundle for class called with empty className");
return nil;
}
if ([self bundleOfType:bundleExtension withClassName:className] == nil)
{
NSLog(@"Bundle for class %@ NOT FOUND!", className);
return nil;
}
objectClass = NSClassFromString(className);
if (proto != nil && ![objectClass conformsToProtocol:proto])
{
[NSException raise:NOT_A_PROJECT_TYPE_EXCEPTION
format:@"%@ does not conform to protocol!", className];
return nil;
}
return [[objectClass alloc] init];
}
- (id)objectForBundleWithName:(NSString *)name
type:(NSString *)extension
protocol:(Protocol *)proto
{
NSDictionary *infoTable;
NSString *className;
infoTable = [self infoForBundleName:name type:extension];
className = [infoTable objectForKey:@"PrincipalClassName"];
return [self objectForClassName:className
bundleType:extension
protocol:proto];
}
- (id)objectForBundleType:(NSString *)extension
protocol:(Protocol *)proto
fileName:(NSString *)fileName
{
NSString *className;
className = [self classNameForBundleType:extension fileName:fileName];
return [self objectForClassName:className
bundleType:extension
protocol:proto];
}
// --- Bundle loading
- (NSBundle *)bundleOfType:(NSString *)type
withClassName:(NSString *)className
{
NSArray *bundlePaths = nil;
NSString *bundleFullPath = nil;
NSDictionary *infoTable = nil;
NSEnumerator *enumerator = nil;
NSString *bundleName = nil;
NSString *principalClass;
// Search for bundle full path in bundlesInfo dictionary
bundlePaths = [bundlesInfo allKeys];
enumerator = [bundlePaths objectEnumerator];
while ((bundleFullPath = [enumerator nextObject]))
{
if ([[bundleFullPath pathExtension] isEqualToString:type])
{
infoTable = [bundlesInfo objectForKey:bundleFullPath];
principalClass = [infoTable objectForKey:@"PrincipalClassName"];
if ([className isEqualToString:principalClass])
{
break;
}
}
}
// NSLog(@"bundleForClassName: %@ path %@", className, bundleFullPath);
// Extract from full bundle path it's name and extension
bundleName = [bundleFullPath lastPathComponent];
if (![self loadBundleIfNeededWithName:bundleName])
{
return nil;
}
return [loadedBundles objectForKey:bundleFullPath];
}
- (BOOL)loadBundleIfNeededWithName:(NSString *)bundleName
{
NSString *bundleFullPath = [self bundlePathWithName:bundleName];
// Check if bundle allready loaded
if ([[loadedBundles allKeys] containsObject:bundleFullPath] == NO)
{
return [self loadBundleWithFullPath:bundleFullPath];
}
return YES;
}
- (void)loadBundlesWithExtension:(NSString *)extension
{
NSEnumerator *enumerator;
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL isDir;
NSString *path = [self resourcePath];
if (path)
{
[self loadBundlesAtPath:path withExtension:extension];
}
// Load third party bundles
enumerator = [NSSearchPathForDirectoriesInDomains
(NSApplicationSupportDirectory, NSAllDomainsMask, YES)
objectEnumerator];
while ((path = [enumerator nextObject]) != nil)
{
path = [path stringByAppendingPathComponent:@"ProjectCenter"];
if ([fileManager fileExistsAtPath:path isDirectory:&isDir] && isDir)
{
PCLogInfo(self, @"Loading bundles at %@", path);
[self loadBundlesAtPath:path withExtension:extension];
}
}
}
- (void)loadBundlesAtPath:(NSString *)path withExtension:(NSString *)extension
{
NSEnumerator *enumerator;
NSString *bundleName;
NSArray *dir;
dir = [[NSFileManager defaultManager] directoryContentsAtPath:path];
enumerator = [dir objectEnumerator];
while ((bundleName = [enumerator nextObject]))
{
if ([[bundleName pathExtension] isEqualToString:extension])
{
NSString *fullPath = nil;
fullPath = [NSString stringWithFormat:@"%@/%@", path, bundleName];
[self loadBundleWithFullPath:fullPath];
}
}
}
- (BOOL)loadBundleWithFullPath:(NSString *)path
{
NSBundle *bundle = nil;
if ((bundle = [NSBundle bundleWithPath:path]) && [bundle load])
{
[loadedBundles setObject:bundle forKey:path];
PCLogInfo(self, @"Bundle %@ successfully loaded!", path);
}
else
{
NSRunAlertPanel(@"Load Bundle",
@"Could not load bundle %@!",
@"OK", nil, nil, path);
return NO;
}
return YES;
}
- (NSDictionary *)loadedBundles
{
return loadedBundles;
}
@end

50
Framework/PCButton.m Normal file
View file

@ -0,0 +1,50 @@
/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2003-2019 Free Software Foundation
Authors: Serg Stoyan
Riccardo Mottola
This file is part of ProjectCenter.
This application 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 application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
#import <ProjectCenter/PCButton.h>
#import <ProjectCenter/PCDefines.h>
@implementation PCButton
// ============================================================================
// ==== Main
// ============================================================================
- (id)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
if (self)
{
[_cell setGradientType:NSGradientConcaveWeak];
[_cell setImageDimsWhenDisabled:YES];
[self setImagePosition:NSImageOnly];
[self setFont:[NSFont systemFontOfSize:[NSFont smallSystemFontSize]]];
[self setRefusesFirstResponder:YES];
}
return self;
}
@end

550
Framework/PCEditorManager.m Normal file
View file

@ -0,0 +1,550 @@
/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2002-2015 Free Software Foundation
Authors: Philippe C.D. Robert
Serg Stoyan
Riccardo Mottola
This file is part of GNUstep.
This application 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 application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
#import <ProjectCenter/PCDefines.h>
#import <ProjectCenter/PCFileManager.h>
#import <ProjectCenter/PCProjectManager.h>
#import <ProjectCenter/PCBundleManager.h>
#import <ProjectCenter/PCEditorManager.h>
#import <ProjectCenter/PCProject.h>
#import <ProjectCenter/PCProjectEditor.h>
#import <ProjectCenter/PCLogController.h>
#import <ProjectCenter/PCSaveModified.h>
#import <Protocols/CodeEditor.h>
#import "Modules/Preferences/Misc/PCMiscPrefs.h"
NSString *PCEditorDidChangeFileNameNotification =
@"PCEditorDidChangeFileNameNotification";
NSString *PCEditorWillOpenNotification = @"PCEditorWillOpenNotification";
NSString *PCEditorDidOpenNotification = @"PCEditorDidOpenNotification";
NSString *PCEditorWillCloseNotification = @"PCEditorWillCloseNotification";
NSString *PCEditorDidCloseNotification = @"PCEditorDidCloseNotification";
NSString *PCEditorWillChangeNotification = @"PCEditorWillChangeNotification";
NSString *PCEditorDidChangeNotification = @"PCEditorDidChangeNotification";
NSString *PCEditorWillSaveNotification = @"PCEditorWillSaveNotification";
NSString *PCEditorDidSaveNotification = @"PCEditorDidSaveNotification";
NSString *PCEditorWillRevertNotification = @"PCEditorWillRevertNotification";
NSString *PCEditorDidRevertNotification = @"PCEditorDidRevertNotification";
NSString *PCEditorDidBecomeActiveNotification =
@"PCEditorDidBecomeActiveNotification";
NSString *PCEditorDidResignActiveNotification =
@"PCEditorDidResignActiveNotification";
@implementation PCEditorManager
// ===========================================================================
// ==== Initialisation
// ===========================================================================
- (id)init
{
if ((self = [super init]))
{
PCLogStatus(self, @"[init]");
_editorsDict = [[NSMutableDictionary alloc] init];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(editorDidOpen:)
name:PCEditorDidOpenNotification
object:nil];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(editorDidClose:)
name:PCEditorDidCloseNotification
object:nil];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(editorDidBecomeActive:)
name:PCEditorDidBecomeActiveNotification
object:nil];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(editorDidResignActive:)
name:PCEditorDidResignActiveNotification
object:nil];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(editorDidChangeFileName:)
name:PCEditorDidChangeFileNameNotification
object:nil];
}
return self;
}
- (void)dealloc
{
#ifdef DEBUG
NSLog (@"PCEditorManager: dealloc");
#endif
[[NSNotificationCenter defaultCenter] removeObserver:self];
RELEASE(editorName);
RELEASE(_editorsDict);
[super dealloc];
}
- (PCProjectManager *)projectManager
{
return _projectManager;
}
- (void)setProjectManager:(PCProjectManager *)aProjectManager
{
_projectManager = aProjectManager;
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(loadPreferences:)
name:PCPreferencesDidChangeNotification
object:nil];
[self loadPreferences:nil];
}
- (void)loadPreferences:(NSNotification *)aNotification
{
id <PCPreferences> prefs = [_projectManager prefController];
ASSIGN(editorName, [prefs stringForKey:Editor]);
}
// ===========================================================================
// ==== Editor handling
// ===========================================================================
- (id<CodeEditor>)editorForFile:(NSString *)filePath
{
return [_editorsDict objectForKey:filePath];
}
- (id<CodeEditor>)openEditorForFile:(NSString *)filePath
editable:(BOOL)editable
windowed:(BOOL)windowed
{
NSFileManager *fm = [NSFileManager defaultManager];
BOOL isDir;
PCBundleManager *bundleManager = [_projectManager bundleManager];
NSString *fileName = [filePath lastPathComponent];
id<CodeEditor> editor;
id<CodeParser> parser;
BOOL exists = [fm fileExistsAtPath:filePath isDirectory:&isDir];
// Determine if file does not exist or file is directory
if (!exists)
{
NSRunAlertPanel(@"Open Editor",
@"Couldn't open editor for file '%@'.\n"
@"File doesn't exist.",
@"Close", nil, nil, filePath);
return nil;
}
// Determine if file is text file
if(isDir == NO)
{
if (![[PCFileManager defaultManager] isTextFile:filePath] && !isDir)
{
// TODO: Do not open alert panel for now. Internal editor
// for non text files must not be opened. Review PCProjectBrowser.
/* NSRunAlertPanel(@"Open Editor",
@"Couldn't open editor for file '%@'.\n"
@"File is not plain text.",
@"Close", nil, nil, filePath);*/
PCLogInfo(self, @"Not a text file %@", filePath);
return nil;
}
}
else
{
NSString *app;
/* we don't have in-window editors for any bundles right now */
if (!windowed)
return nil;
/* Check for bundles and if possible let them be opened by Workspace but only if windowed */
app = [[NSWorkspace sharedWorkspace] getBestAppInRole:@"Editor" forExtension:[fileName pathExtension]];
if (windowed && app != nil)
{
if ([[NSWorkspace sharedWorkspace] openFile: filePath])
return nil;
}
}
// NSLog(@"EditorManager 1: %@", _editorsDict);
editor = [_editorsDict objectForKey: filePath];
if (editor == nil)
{
// Editor
editor = [bundleManager objectForBundleWithName:editorName
type:@"editor"
protocol:@protocol(CodeEditor)];
if (editor == nil)
{
editor = [bundleManager
objectForBundleWithName:@"ProjectCenter"
type:@"editor"
protocol:@protocol(CodeEditor)];
}
/* if we have a valid editor, we try to set a parser */
if (editor)
{
// Parser
parser = [bundleManager objectForBundleType:@"parser"
protocol:@protocol(CodeParser)
fileName:fileName];
if(parser != nil)
{
[editor setParser:parser];
}
[editor openFileAtPath:filePath
editorManager:self
editable:editable];
[_editorsDict setObject:editor forKey:filePath];
RELEASE(editor);
}
else
{
//
// If we don't have an editor, we fall back to opening the
// file with the editor designated by the system.
//
[[NSWorkspace sharedWorkspace] openFile: filePath];
}
}
if(editor != nil)
{
[editor setWindowed:windowed];
}
return editor;
}
- (void)orderFrontEditorForFile:(NSString *)path
{
id<CodeEditor> editor = [_editorsDict objectForKey:path];
if (!editor)
{
return;
}
[editor show];
}
- (id<CodeEditor>)activeEditor
{
return _activeEditor;
}
- (void)setActiveEditor:(id<CodeEditor>)anEditor
{
if (anEditor != _activeEditor)
{
_activeEditor = anEditor;
}
}
- (NSArray *)allEditors
{
return [_editorsDict allValues];
}
- (void)closeActiveEditor:(id)sender
{
if (!_activeEditor)
{
return;
}
[_activeEditor close:sender];
}
- (void)closeEditorForFile:(NSString *)file
{
id<CodeEditor> editor;
if ([_editorsDict count] > 0 && (editor = [_editorsDict objectForKey:file]))
{
[editor close:self];
}
}
- (NSArray *)modifiedFiles
{
NSEnumerator *enumerator = [_editorsDict keyEnumerator];
NSString *key = nil;
id<CodeEditor> editor;
NSMutableArray *modifiedFiles = [[NSMutableArray alloc] init];
while ((key = [enumerator nextObject]))
{
editor = [_editorsDict objectForKey:key];
if ([editor isEdited])
{
[modifiedFiles addObject:key];
}
}
return AUTORELEASE((NSArray *)modifiedFiles);
}
- (BOOL)hasModifiedFiles
{
if ([[self modifiedFiles] count])
{
return YES;
}
return NO;
}
- (BOOL)reviewUnsaved:(NSArray *)modifiedFiles
{
NSEnumerator *enumerator = [modifiedFiles objectEnumerator];
NSString *filePath;
id<CodeEditor> editor;
while ((filePath = [enumerator nextObject]))
{
editor = [_editorsDict objectForKey:filePath];
[self orderFrontEditorForFile:filePath];
if ([editor close:self] == NO)
{ // Operation should be aborted
return NO;
}
}
return YES;
}
- (BOOL)closeAllEditors
{
NSArray *modifiedFiles = [self modifiedFiles];
if ([modifiedFiles count])
{
if (!PCRunSaveModifiedFilesPanel(self,
@"Save and Close",
@"Close Anyway",
@"Cancel"))
{
return NO;
}
}
[_editorsDict removeAllObjects];
return YES;
}
// ===========================================================================
// ==== File handling
// ===========================================================================
- (BOOL)saveAllFiles
{
NSEnumerator *enumerator = [_editorsDict keyEnumerator];
id<CodeEditor> editor;
NSString *key;
BOOL ret = YES;
while ((key = [enumerator nextObject]))
{
editor = [_editorsDict objectForKey:key];
if ([editor saveFileIfNeeded] == NO)
{
ret = NSRunAlertPanel(@"Save Files",
@"Couldn't save file '%@'.\n"
@"Operation stopped.",
@"Ok",nil,nil);
return NO;
}
}
return ret;
}
- (BOOL)saveFile
{
id<CodeEditor> editor = [self activeEditor];
if (editor != nil)
{
return [editor saveFileIfNeeded];
}
return NO;
}
- (BOOL)saveFileAs:(NSString *)file
{
id<CodeEditor> editor = [self activeEditor];
if (editor != nil)
{
BOOL res;
BOOL iw = [editor isWindowed];
res = [editor saveFileTo:file];
[editor closeFile:self save:NO];
[self openEditorForFile:file
editable:YES
windowed:iw];
return res;
}
return NO;
}
- (BOOL)saveFileTo:(NSString *)file
{
id<CodeEditor> editor = [self activeEditor];
if (editor != nil)
{
return [editor saveFileTo:file];
}
return NO;
}
- (BOOL)revertFileToSaved
{
id<CodeEditor> editor = [self activeEditor];
if (editor != nil)
{
return [editor revertFileToSaved];
}
return NO;
}
// ===========================================================================
// ==== Notifications
// ===========================================================================
- (void)editorDidOpen:(NSNotification *)aNotif
{
id editor = [aNotif object];
[self setActiveEditor:editor];
}
- (void)editorDidClose:(NSNotification *)aNotif
{
id editor = [aNotif object];
// It is not our editor
if (![[_editorsDict allValues] containsObject:editor])
{
return;
}
[_editorsDict removeObjectForKey:[editor path]];
if (![_editorsDict count])
{
[self setActiveEditor:nil];
}
}
- (void)editorDidBecomeActive:(NSNotification *)aNotif
{
id<CodeEditor> editor = [aNotif object];
if (![[_editorsDict allValues] containsObject:editor])
{
return;
}
[self setActiveEditor:editor];
}
- (void)editorDidResignActive:(NSNotification *)aNotif
{
// Clearing activeEditor blocks the ability to get some information from
// loaded and visible but not active editor
/* PCEditor *editor = [aNotif object];
if ([editor projectEditor] != self)
{
return;
}
[self setActiveEditor:nil];*/
}
- (void)editorDidChangeFileName:(NSNotification *)aNotif
{
NSDictionary *_editorDict = [aNotif object];
id<CodeEditor> _editor = [_editorDict objectForKey:@"Editor"];
NSString *_oldFileName = nil;
NSString *_newFileName = nil;
if (![[_editorsDict allValues] containsObject:_editor])
{
return;
}
_oldFileName = [_editorDict objectForKey:@"OldFile"];
_newFileName = [_editorDict objectForKey:@"NewFile"];
[_editorsDict removeObjectForKey:_oldFileName];
[_editorsDict setObject:_editor forKey:_newFileName];
}
- (void)gotoFile: (NSString *)fileName atLine: (NSUInteger)line
{
PCProject *project = [_projectManager rootActiveProject];
PCProjectEditor *pe = [project projectEditor];
id<CodeEditor> editor = [pe openEditorForFilePath: fileName windowed: NO];
// [self orderFrontEditorForFile:fileName];
[editor scrollToLineNumber: line];
}
@end

534
Framework/PCFileCreator.m Normal file
View file

@ -0,0 +1,534 @@
/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2001-2015 Free Software Foundation
Authors: Philippe C.D. Robert
Serg Stoyan
Riccardo Mottola
This file is part of GNUstep.
This application 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 application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
#import <ProjectCenter/PCDefines.h>
#import <ProjectCenter/PCProject.h>
#import <ProjectCenter/PCFileManager.h>
#import <ProjectCenter/PCFileCreator.h>
#import <ProjectCenter/PCLogController.h>
static PCFileCreator *_creator = nil;
static NSDictionary *dict = nil;
@implementation PCFileCreator
+ (id)sharedCreator
{
if (_creator == nil)
{
NSDictionary *classDict;
NSDictionary *headerDict;
NSDictionary *ccDict;
NSDictionary *chDict;
NSDictionary *classPpDict;
NSDictionary *protocolDict;
NSDictionary *gsmarkupDict;
NSString *descr;
NSString *template;
NSBundle *bundle;
_creator = [[[self class] alloc] init];
bundle = [NSBundle bundleForClass:[self class]];
// Setting up the dictionary needed for registration!
// Objective C Class
descr = @"Generic Objective-C class.\n\n"
@"This is a plain subclass of NSObject which includes"
@" only Foundation.h.";
template = [bundle pathForResource:@"class" ofType:@"template"];
classDict = [NSDictionary dictionaryWithObjectsAndKeys:
PCClasses, @"ProjectKey",
descr, @"TypeDescription",
template,@"TemplateFile",
nil];
// Objective C Header
descr = @"Generic Objective-C header.\n\n"
@"This is a plain interface subclassing NSObject."
@" The file includes Foundation.h";
template = [bundle pathForResource:@"header" ofType:@"template"];
headerDict =[NSDictionary dictionaryWithObjectsAndKeys:
PCHeaders,@"ProjectKey",
descr,@"TypeDescription",
template,@"TemplateFile",
nil];
// C File
descr = @"Generic ANSI-C implementation file.\n\n"
@"This file contains no Objective-C dependency in any form.";
template = [bundle pathForResource:@"cfile" ofType:@"template"];
ccDict = [NSDictionary dictionaryWithObjectsAndKeys:
PCOtherSources,@"ProjectKey",
descr,@"TypeDescription",
template,@"TemplateFile",
nil];
// C Header
descr = @"Generic ANSI-C header.\n\n"
@"This file contains no Objective-C dependency in any form.";
template = [bundle pathForResource:@"cheader" ofType:@"template"];
chDict = [NSDictionary dictionaryWithObjectsAndKeys:
PCHeaders,@"ProjectKey",
descr,@"TypeDescription",
template,@"TemplateFile",
nil];
// Objective C Protocol
descr = @"Generic Objective-C protocol.\n\n"
@"This is common Objective-C protocol, comparable"
@" i.e. to a Java interface.";
template = [bundle pathForResource:@"protocol" ofType:@"template"];
protocolDict = [NSDictionary dictionaryWithObjectsAndKeys:
PCHeaders,@"ProjectKey",
descr,@"TypeDescription",
template,@"TemplateFile",
nil];
// Objective C++ Class
descr = @"Generic Objective-C++ class.\n\n"
@"This is a plain subclass of NSObject which includes"
@" only Foundation.h. Extend it with c++";
template = [bundle pathForResource:@"ocppclass" ofType:@"template"];
classPpDict = [NSDictionary dictionaryWithObjectsAndKeys:
PCClasses, @"ProjectKey",
descr, @"TypeDescription",
template,@"TemplateFile",
nil];
// GSMarkup
descr = @"Generic GSMarkup File.\n\n"
@"This is the interface description of GNUstep Renaissance.";
template = [bundle pathForResource:@"gsmarkup" ofType:@"template"];
gsmarkupDict =[NSDictionary dictionaryWithObjectsAndKeys:
PCGSMarkupFiles,@"ProjectKey",
descr,@"TypeDescription",
template, @"TemplateFile",
nil];
dict = [[NSDictionary alloc] initWithObjectsAndKeys:
ccDict, CFile,
chDict, CHeader,
protocolDict, ProtocolFile,
headerDict, ObjCHeader,
classDict, ObjCClass,
classPpDict, ObjCppClass,
gsmarkupDict, GSMarkupFile,
nil];
}
return _creator;
}
- (id)init
{
self = [super init];
activeProject = nil;
return self;
}
- (void)dealloc
{
RELEASE(newFilePanel);
RELEASE(dict);
[super dealloc];
}
- (NSDictionary *)creatorDictionary
{
return dict;
}
- (void)newFileInProject:(PCProject *)aProject
{
// Set to nil after panel closing
activeProject = aProject;
[self showNewFilePanel];
}
- (void)createFileOfType:(NSString *)fileType
path:(NSString *)path
project:(PCProject *)project
{
NSDictionary *newFiles;
newFiles = [self filesToCreateForFileOfType:fileType
path:path
withComplementary:YES];
[self createFiles:newFiles inProject:project];
}
- (NSDictionary *)filesToCreateForFileOfType:(NSString *)type
path:(NSString *)path
withComplementary:(BOOL)complementary
{
NSMutableDictionary *files = nil;
NSString *newFile = nil;
// A class and possibly a header
files = [NSMutableDictionary dictionaryWithCapacity:2];
// Remove file extension from "path"
if (![[path pathExtension] isEqualToString: @""])
{
path = [path stringByDeletingPathExtension];
}
// Objective-C Class
if ([type isEqualToString:ObjCClass])
{
newFile = [path stringByAppendingPathExtension:@"m"];
[files setObject:[dict objectForKey:ObjCClass] forKey:newFile];
}
// Objective-C++ Class
else if ([type isEqualToString:ObjCppClass])
{
newFile = [path stringByAppendingPathExtension:@"mm"];
[files setObject:[dict objectForKey:ObjCppClass] forKey:newFile];
}
// C File
else if ([type isEqualToString:CFile])
{
newFile = [path stringByAppendingPathExtension:@"c"];
[files setObject:[dict objectForKey:CFile] forKey:newFile];
}
// C Header
// When creating C file also create C Header file
if ([type isEqualToString:CHeader] ||
([type isEqualToString:CFile] && complementary))
{
newFile = [path stringByAppendingPathExtension:@"h"];
[files setObject:[dict objectForKey:CHeader] forKey:newFile];
}
// Objective-C Header
// When creating Objective C Class file also create Objective C Header file
else if ([type isEqualToString:ObjCHeader] ||
([type isEqualToString:ObjCClass] && complementary))
{
newFile = [path stringByAppendingPathExtension:@"h"];
[files setObject:[dict objectForKey:ObjCHeader] forKey:newFile];
}
// GSMarkup
else if ([type isEqualToString:GSMarkupFile])
{
newFile = [path stringByAppendingPathExtension:@"gsmarkup"];
[files setObject:[dict objectForKey:GSMarkupFile] forKey:newFile];
}
// Objective-C Protocol
else if ([type isEqualToString:ProtocolFile])
{
newFile = [path stringByAppendingPathExtension:@"h"];
[files setObject:[dict objectForKey:ProtocolFile] forKey:newFile];
}
return files;
}
- (BOOL)createFiles:(NSDictionary *)fileList
inProject:(PCProject *)aProject
{
PCFileManager *pcfm = [PCFileManager defaultManager];
NSEnumerator *enumerator = [[fileList allKeys] objectEnumerator];
NSString *template = nil;
NSString *newFile = nil;
NSDictionary *fileType = nil;
NSString *key = nil;
while ((newFile = [enumerator nextObject]))
{
fileType = [fileList objectForKey:newFile];
key = [fileType objectForKey:@"ProjectKey"];
template = [fileType objectForKey:@"TemplateFile"];
if ([pcfm copyFile:template toFile:newFile])
{
[self replaceTagsInFileAtPath:newFile withProject:aProject];
[aProject addFiles:[NSArray arrayWithObject:newFile]
forKey:key
notify:YES];
}
}
// Notify the browser!
[[NSNotificationCenter defaultCenter]
postNotificationName:@"ProjectDictDidChangeNotification"
object:self];
return YES;
}
- (void)replaceTagsInFileAtPath:(NSString *)newFile
withProject:(PCProject *)aProject
{
NSString *projectName = [aProject projectName];
NSString *date = [[NSCalendarDate calendarDate] description];
int year = [[NSCalendarDate calendarDate] yearOfCommonEra];
NSString *aFile = [newFile lastPathComponent];
NSString *UCfn = [[aFile stringByDeletingPathExtension] uppercaseString];
NSString *fn = [aFile stringByDeletingPathExtension];
NSRange subRange;
#ifdef WIN32
file = [[NSMutableString stringWithContentsOfFile: newFile
encoding: NSUTF8StringEncoding
error: NULL] retain];
#else
file = [[NSMutableString stringWithContentsOfFile:newFile] retain];
#endif
while ((subRange = [file rangeOfString:@"$FULLFILENAME$"]).length)
{
[file replaceCharactersInRange:subRange withString:aFile];
}
while ((subRange = [file rangeOfString:@"$FILENAME$"]).length)
{
[file replaceCharactersInRange:subRange withString:fn];
}
while ((subRange = [file rangeOfString:@"$UCFILENAME$"]).length)
{
[file replaceCharactersInRange:subRange withString:UCfn];
}
while ((subRange = [file rangeOfString:@"$USERNAME$"]).length)
{
[file replaceCharactersInRange:subRange withString:NSUserName()];
}
while ((subRange = [file rangeOfString:@"$FULLUSERNAME$"]).length)
{
[file replaceCharactersInRange:subRange withString:NSFullUserName()];
}
while ((subRange = [file rangeOfString:@"$PROJECTNAME$"]).length)
{
[file replaceCharactersInRange:subRange withString:projectName];
}
while ((subRange = [file rangeOfString:@"$DATE$"]).length)
{
[file replaceCharactersInRange:subRange withString:date];
}
while ((subRange = [file rangeOfString:@"$YEAR$"]).length)
{
[file replaceCharactersInRange:subRange
withString:[[NSNumber numberWithInt:year] stringValue]];
}
#ifdef WIN32
[file writeToFile: newFile
atomically: YES
encoding: NSUTF8StringEncoding
error: NULL];
#else
[file writeToFile:newFile atomically:YES];
#endif
[file release];
}
@end
@implementation PCFileCreator (UInterface)
// ============================================================================
// ==== "New File in Project" Panel
// ============================================================================
- (void)showNewFilePanel
{
if (!newFilePanel)
{
if ([NSBundle loadNibNamed:@"NewFile" owner:self] == NO)
{
PCLogError(self, @"error loading NewFile NIB!");
return;
}
[newFilePanel setFrameAutosaveName:@"NewFile"];
if (![newFilePanel setFrameUsingName: @"NewFile"])
{
[newFilePanel center];
}
[nfImage setImage:[NSApp applicationIconImage]];
[nfTypePB setRefusesFirstResponder:YES];
[nfTypePB removeAllItems];
[nfTypePB addItemsWithTitles:
[[dict allKeys]
sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]];
[nfTypePB selectItemAtIndex:0];
[nfCancelButton setRefusesFirstResponder:YES];
[nfCreateButton setRefusesFirstResponder:YES];
[nfAddHeaderButton setRefusesFirstResponder:YES];
[newFilePanel setDefaultButtonCell:[nfCreateButton cell]];
}
[self newFilePopupChanged:nfTypePB];
[newFilePanel makeKeyAndOrderFront:self];
[nfNameField setStringValue:@""];
[newFilePanel makeFirstResponder:nfNameField];
[newFilePanel setLevel:NSModalPanelWindowLevel];
[NSApp runModalForWindow:newFilePanel];
}
- (void)closeNewFilePanel:(id)sender
{
[newFilePanel orderOut:self];
[NSApp stopModal];
activeProject = nil;
}
- (void)createFile:(id)sender
{
if ([self createFile])
{
[self closeNewFilePanel:self];
}
else
{
[newFilePanel makeKeyAndOrderFront:self];
}
}
- (void)newFilePopupChanged:(id)sender
{
NSString *typeTitle = [sender titleOfSelectedItem];
NSDictionary *fileType = [dict objectForKey:typeTitle];
if (!fileType)
{
return;
}
[nfDescriptionTV setString:[fileType objectForKey:@"TypeDescription"]];
[nfAddHeaderButton setState:NSOffState];
if ([typeTitle isEqualToString:ObjCClass] ||
[typeTitle isEqualToString:CFile])
{
[nfAddHeaderButton setEnabled:YES];
}
else
{
[nfAddHeaderButton setEnabled:NO];
}
}
- (void)controlTextDidChange:(NSNotification *)aNotif
{
if ([aNotif object] != nfNameField)
{
return;
}
// TODO: Add check for valid file names
if ([[nfNameField stringValue] length] > 0)
{
[nfCreateButton setEnabled:YES];
}
else
{
[nfCreateButton setEnabled:NO];
}
}
- (BOOL)createFile
{
NSString *fileName = [nfNameField stringValue];
NSString *fileType = [nfTypePB titleOfSelectedItem];
NSString *path = nil;
NSString *key = nil;
NSDictionary *newFiles = nil;
NSEnumerator *enumerator = nil;
NSString *filePath = nil;
NSFileManager *fm = [NSFileManager defaultManager];
BOOL complementary;
path = [[activeProject projectPath] stringByAppendingPathComponent:fileName];
// Create file
if (path)
{
// Get file list for creation
complementary = [nfAddHeaderButton state]==NSOnState ? YES : NO;
newFiles = [self filesToCreateForFileOfType:fileType
path:path
withComplementary:complementary];
// Check if project already has files with such names
enumerator = [[newFiles allKeys] objectEnumerator];
while ((filePath = [enumerator nextObject]))
{
key = [[newFiles objectForKey:filePath] objectForKey:@"ProjectKey"];
fileName = [filePath lastPathComponent];
if (![activeProject doesAcceptFile:fileName forKey:key])
{
NSRunAlertPanel(@"New File in Project",
@"Project %@ already has file %@ in %@",
@"OK", nil, nil,
[activeProject projectName], fileName, key);
return NO;
}
if ([fm fileExistsAtPath:filePath])
{
int ret;
ret = NSRunAlertPanel
(@"New File in Project",
@"Project directory %@ already has file %@.\n"
@"Do you want to overwrite it?",
@"Stop", @"Overwrite", nil,
[filePath stringByDeletingLastPathComponent],
fileName);
if (ret == NSAlertDefaultReturn) // Stop
{
return NO;
}
else // Overwrite. Remove destination of copy operation
{
[fm removeFileAtPath:filePath handler:nil];
}
}
}
// Create files
return [self createFiles:newFiles inProject:activeProject];
}
return NO;
}
@end

710
Framework/PCFileManager.m Normal file
View file

@ -0,0 +1,710 @@
/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2000-2022 Free Software Foundation
Authors: Philippe C.D. Robert
Serg Stoyan
Riccardo Mottola
This file is part of GNUstep.
This application 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 application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
#import <ProjectCenter/PCDefines.h>
#import <ProjectCenter/PCFileManager.h>
#import <ProjectCenter/PCFileCreator.h>
#import <ProjectCenter/PCProjectManager.h>
#import <ProjectCenter/PCProject.h>
#import <ProjectCenter/PCProjectBrowser.h>
#import <ProjectCenter/PCAddFilesPanel.h>
#import <Protocols/Preferences.h>
#import <ProjectCenter/PCLogController.h>
@implementation PCFileManager
// ===========================================================================
// ==== Class methods
// ===========================================================================
static PCFileManager *_mgr = nil;
+ (PCFileManager *)defaultManager
{
if (_mgr == nil)
{
_mgr = [[self alloc] init];
}
return _mgr;
}
// ===========================================================================
// ==== Init and free
// ===========================================================================
- (id)initWithProjectManager:(PCProjectManager *)aProjectManager
{
if ((self = [super init]))
{
projectManager = aProjectManager;
}
return self;
}
- (void)dealloc
{
#ifdef DEVELOPMENT
NSLog (@"PCFileManager: dealloc");
#endif
if (addFilesPanel)
{
RELEASE(addFilesPanel);
}
[super dealloc];
}
// ===========================================================================
// ==== NSFileManager delegate methods
// ===========================================================================
- (BOOL) fileManager:(NSFileManager *)manager
shouldProceedAfterError:(NSDictionary *)errorDict
{
NSLog(@"FM error is: %@", [errorDict objectForKey:@"Error"]);
return YES;
}
// ===========================================================================
// ==== File handling
// ===========================================================================
- (BOOL)createDirectoriesIfNeededAtPath:(NSString *)path
{
NSString *_path = [NSString stringWithString:path];
NSString *_oldPath = nil;
NSMutableArray *pathArray = [NSMutableArray array];
NSFileManager *fm = [NSFileManager defaultManager];
BOOL isDir;
int i;
/* We stop when we find a file, or when we can't remove any path
* component any more. Else, you may end up in an infinite loop if
* _path = @"".
*/
isDir = NO;
while (_path != nil
&& ![_path isEqualToString: _oldPath]
&& ![fm fileExistsAtPath:_path isDirectory:&isDir])
{
[pathArray addObject:[_path lastPathComponent]];
_oldPath = _path;
_path = [_path stringByDeletingLastPathComponent];
}
if (!isDir)
{
return NO;
}
if ([_path length] != [path length])
{
for (i = [pathArray count]-1; i >= 0; i--)
{
_path =
[_path stringByAppendingPathComponent:[pathArray objectAtIndex:i]];
if ([fm createDirectoryAtPath:_path attributes:nil] == NO)
{
return NO;
}
}
}
return YES;
}
- (BOOL)copyFile:(NSString *)file toFile:(NSString *)toFile
{
NSFileManager *fm = [NSFileManager defaultManager];
NSString *directoryPath = nil;
if (!file)
{
return NO;
}
if (![fm fileExistsAtPath:toFile])
{
directoryPath = [toFile stringByDeletingLastPathComponent];
if ([self createDirectoriesIfNeededAtPath:directoryPath] == NO)
{
NSRunAlertPanel(@"Copy File",
@"Couldn't create directories at path %@",
@"Ok",nil,nil, directoryPath);
return NO;
}
if ([fm copyPath:file toPath:toFile handler:self] == NO)
{
NSRunAlertPanel(@"Copy File",
@"Couldn't copy file %@ to %@",
@"Ok",nil,nil, file, toFile);
return NO;
}
}
return YES;
}
- (BOOL)copyFile:(NSString *)file intoDirectory:(NSString *)directory
{
NSString *path = nil;
if (!file)
{
return NO;
}
path = [directory stringByAppendingPathComponent:[file lastPathComponent]];
if (![self copyFile:file toFile:path])
{ // No need to open aler panel here
return NO;
}
return YES;
}
- (BOOL)copyFile:(NSString *)file
fromDirectory:(NSString *)fromDir
intoDirectory:(NSString *)toDir
{
NSString *path = nil;
if (!file || !fromDir || !toDir)
{
return NO;
}
path = [fromDir stringByAppendingPathComponent:[file lastPathComponent]];
if (![self copyFile:path intoDirectory:toDir])
{
return NO;
}
return YES;
}
- (BOOL)copyFiles:(NSArray *)files intoDirectory:(NSString *)directory
{
NSEnumerator *enumerator = nil;
NSString *file = nil;
if (!files)
{
return NO;
}
enumerator = [files objectEnumerator];
while ((file = [enumerator nextObject]))
{
if ([self copyFile:file intoDirectory:directory] == NO)
{
return NO;
}
}
return YES;
}
- (BOOL)removeDirectoriesIfEmptyAtPath:(NSString *)path
{
NSFileManager *fm = [NSFileManager defaultManager];
while ([[fm directoryContentsAtPath:path] count] == 0)
{
if ([fm removeFileAtPath:path handler:nil] == NO)
{
NSRunAlertPanel(@"Remove Directory",
@"Couldn't remove empty directory at path %@",
@"Ok",nil,nil, path);
return NO;
}
path = [path stringByDeletingLastPathComponent];
}
return YES;
}
- (BOOL)removeFile:(NSString *)file
fromDirectory:(NSString *)directory
removeDirsIfEmpty:(BOOL)removeDirs
{
NSString *path = nil;
NSFileManager *fm = [NSFileManager defaultManager];
if (!file)
{
return NO;
}
path = [directory stringByAppendingPathComponent:file];
if (![fm removeFileAtPath:path handler:nil])
{
NSRunAlertPanel(@"Remove File",
@"Couldn't remove file at path %@",
@"Ok",nil,nil, path);
return NO;
}
if (removeDirs)
{
[self removeDirectoriesIfEmptyAtPath:directory];
}
return YES;
}
- (BOOL)removeFileAtPath:(NSString *)file removeDirsIfEmpty:(BOOL)removeDirs
{
return [self removeFile:[file lastPathComponent]
fromDirectory:[file stringByDeletingLastPathComponent]
removeDirsIfEmpty:removeDirs];
}
- (BOOL)removeFiles:(NSArray *)files
fromDirectory:(NSString *)directory
removeDirsIfEmpty:(BOOL)removeDirs
{
NSEnumerator *filesEnum = nil;
NSString *file = nil;
if (!files)
{
return NO;
}
filesEnum = [files objectEnumerator];
while ((file = [filesEnum nextObject]))
{
if ([self removeFile:file
fromDirectory:directory
removeDirsIfEmpty:removeDirs] == NO)
{
return NO;
}
}
return YES;
}
- (BOOL)moveFile:(NSString *)file intoDirectory:(NSString *)directory
{
if ([self copyFile:file intoDirectory:directory] == YES)
{
[self removeFileAtPath:file removeDirsIfEmpty:YES];
}
else
{
NSRunAlertPanel(@"Move File",
@"Couldn't move file %@ to %@",
@"Ok",nil,nil, file, directory);
return NO;
}
return YES;
}
// ===========================================================================
// ==== Find Executable
// Tries to find the first matching executable tool fromt he given, nil-terminated
// list. Returns the full path for it.
// ===========================================================================
- (NSString*) findExecutableToolFrom: (NSArray*)candidates
{
NSFileManager *manager;
NSEnumerator *pathEnumerator;
NSString *directory;
manager = [NSFileManager defaultManager];
pathEnumerator = [NSSearchPathForDirectoriesInDomains(NSDeveloperDirectory, NSAllDomainsMask, YES) objectEnumerator];
while (nil != (directory = [pathEnumerator nextObject]))
{
NSEnumerator *candidateEnumerator = [candidates objectEnumerator];
NSString *candidate;
while (nil != (candidate = [candidateEnumerator nextObject]))
{
NSString *path = [directory stringByAppendingPathComponent: candidate];
if ([manager isExecutableFileAtPath: path])
{
return path;
}
}
}
return nil;
}
@end
@implementation PCFileManager (UInterface)
// ===========================================================================
// ==== Panels
// ===========================================================================
- (id)_panelForOperation:(int)op
title:(NSString *)title
accView:(NSView *)accessoryView
{
id <PCPreferences> prefs = [projectManager prefController];
NSString *lastOpenDir;
id panel;
operation = op;
switch (op)
{
case PCOpenFileOperation:
panel = [NSOpenPanel openPanel];
[panel setCanChooseFiles:YES];
[panel setCanChooseDirectories:NO];
lastOpenDir = [prefs stringForKey:@"FileOpenLastDirectory"];
break;
case PCSaveFileOperation:
panel = [NSSavePanel savePanel];
lastOpenDir = [prefs stringForKey:@"FileSaveLastDirectory"];
break;
case PCOpenProjectOperation:
panel = [NSOpenPanel openPanel];
[panel setAllowsMultipleSelection:NO];
[panel setCanChooseFiles:YES];
[panel setCanChooseDirectories:YES];
lastOpenDir = [prefs stringForKey:@"ProjectOpenLastDirectory"];
break;
case PCOpenDirectoryOperation:
panel = [NSOpenPanel openPanel];
[panel setCanChooseFiles:NO];
[panel setCanChooseDirectories:YES];
lastOpenDir = [prefs stringForKey:@"FileOpenLastDirectory"];
break;
case PCAddFileOperation:
if (addFilesPanel == nil)
{
addFilesPanel = [PCAddFilesPanel addFilesPanel];
[addFilesPanel setTreatsFilePackagesAsDirectories: YES];
}
panel = addFilesPanel;
lastOpenDir = [prefs stringForKey:@"FileAddLastDirectory"];
if (lastOpenDir == nil)
{
PCProject *pr = [projectManager activeProject];
NSString *prPathRoot = [pr projectPath];
lastOpenDir = prPathRoot;
}
break;
default:
return nil;
break;
}
if (!lastOpenDir)
{
lastOpenDir = NSHomeDirectory();
}
[panel setDirectory:lastOpenDir];
[panel setDelegate:self];
if (title != nil)
{
[panel setTitle:title];
}
if (accessoryView != nil)
{
[panel setAccessoryView:accessoryView];
}
return panel;
}
- (void)_saveLastDirectoryForPanel:(id)panel
{
id <PCPreferences> prefs = [projectManager prefController];
NSString *key = nil;
switch (operation)
{
case PCOpenFileOperation:
key = @"FileOpenLastDirectory";
break;
case PCSaveFileOperation:
key = @"FileSaveLastDirectory";
break;
case PCOpenProjectOperation:
key = @"ProjectOpenLastDirectory";
break;
case PCAddFileOperation:
key = @"FileAddLastDirectory";
break;
default:
break;
}
if (key != nil)
{
[prefs setString:[panel directory] forKey:key notify:NO];
}
}
- (NSMutableArray *)filesOfTypes:(NSArray *)types
operation:(int)op
multiple:(BOOL)yn
title:(NSString *)title
accView:(NSView *)accessoryView
{
id panel;
NSMutableArray *fileList = [[NSMutableArray alloc] init];
int result = -10;
panel = [self _panelForOperation:op title:title accView:accessoryView];
if (types != nil)
{
[panel setAllowedFileTypes:types];
}
if ((op == PCOpenFileOperation) ||
(op == PCOpenProjectOperation) ||
(op == PCOpenDirectoryOperation))
{
if ((result = [panel runModalForTypes:types]) == NSOKButton)
{
[fileList addObjectsFromArray:[panel filenames]];
}
}
else if (op == PCSaveFileOperation)
{
if ((result = [panel runModal]) == NSOKButton)
{
[fileList addObject:[panel filename]];
}
}
else if (op == PCAddFileOperation)
{
PCProject *project = [projectManager activeProject];
NSString *selectedCategory = nil;
[panel setCategories:[project rootCategories]];
selectedCategory = [[project projectBrowser] nameOfSelectedCategory];
[panel selectCategory:selectedCategory];
if ((result = [panel runModalForTypes:types]) == NSOKButton)
{
[fileList addObjectsFromArray:[panel filenames]];
}
}
if (result == NSOKButton)
{
[self _saveLastDirectoryForPanel:panel];
return [fileList autorelease];
}
return nil;
}
// ============================================================================
// ==== PCAddFilesPanel delegate
// ============================================================================
- (void)categoryChangedTo:(NSString *)category
{
PCProject *project = [projectManager activeProject];
NSArray *fileTypes = nil;
PCProjectBrowser *browser = [project projectBrowser];
NSString *path = [browser path];
[addFilesPanel setTitle:[NSString stringWithFormat:@"Add %@",category]];
fileTypes = [project
fileTypesForCategoryKey:[project keyForCategory:category]];
[addFilesPanel setFileTypes:fileTypes];
// Set project browser path
path = [path stringByDeletingLastPathComponent];
path = [path stringByAppendingPathComponent:category];
[browser setPath:path];
}
// ============================================================================
// ==== NSOpenPanel and NSSavePanel delegate
// ============================================================================
// If file name already in project -- don't show it!
- (BOOL)panel:(id)sender shouldShowFilename:(NSString *)filename
{
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL isDir;
PCProject *project = nil;
NSArray *fileTypes = nil;
NSString *category = nil;
NSString *categoryKey = nil;
[fileManager fileExistsAtPath:filename isDirectory:&isDir];
if ([[filename pathExtension] isEqualToString:@"gorm"])
{
isDir = NO;
}
if (sender == addFilesPanel && !isDir)
{
project = [projectManager activeProject];
category = [addFilesPanel selectedCategory];
categoryKey = [project keyForCategory:category];
fileTypes = [project fileTypesForCategoryKey:categoryKey];
// Wrong file extension
if (fileTypes
&& ![fileTypes containsObject:[filename pathExtension]])
{
return NO;
}
// File is already in project
if (![project doesAcceptFile:filename forKey:categoryKey])
{
return NO;
}
}
return YES;
}
// Test if we should accept file name selected or entered
- (BOOL)panel:(id)sender isValidFilename:(NSString *)filename
{
NSFileManager *fm = [NSFileManager defaultManager];
BOOL isDir;
NSEnumerator *e = nil;
NSArray *tempList = nil;
NSString *tempExtension = nil;
if (operation == PCOpenProjectOperation)
{
if ([fm fileExistsAtPath:filename isDirectory:&isDir] && isDir)
{
e = [[sender allowedFileTypes] objectEnumerator];
while ((tempExtension = [e nextObject]) != nil)
{
tempList = [self filesWithExtension:tempExtension
atPath:filename
includeDirs:YES];
if ([tempList count] > 0)
{
return YES;
}
}
return NO;
}
}
return YES;
}
@end
@implementation PCFileManager (Misc)
/**
* Returns YES if the file identified by `filename' is a text file,
* otherwise returns NO.
*
* The test is one by reading the first 512 bytes of the file
* and checking whether at least 90% of the data are printable
* ASCII characters.
*
* Author Saso Kiselkov
*/
- (BOOL)isTextFile:(NSString *)filename
{
NSFileHandle *fh;
NSData *data;
NSUInteger i, printable = 0;
NSString *content;
NSCharacterSet *alpha = [NSCharacterSet alphanumericCharacterSet];
NSCharacterSet *spaces = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSCharacterSet *marks = [NSCharacterSet punctuationCharacterSet];
fh = [NSFileHandle fileHandleForReadingAtPath:filename];
if (fh == nil)
{
return NO;
}
data = [fh readDataOfLength:512];
if ([data length] == 0)
{
return YES;
}
content = [NSString stringWithContentsOfFile: filename];
for (i = 0; i < [content length]; i++)
{
if ([alpha characterIsMember: [content characterAtIndex: i]] ||
[spaces characterIsMember: [content characterAtIndex: i]] ||
[marks characterIsMember: [content characterAtIndex: i]])
{
printable++;
}
}
return (((double) printable / i) > 0.9);
}
- (NSArray *)filesWithExtension:(NSString *)extension
atPath:(NSString *)dirPath
includeDirs:(BOOL)incDirs
{
NSFileManager *fm = [NSFileManager defaultManager];
NSMutableArray *filesList = [[NSMutableArray alloc] init];
NSEnumerator *e = nil;
NSString *temp = nil;
BOOL isDir;
e = [[fm directoryContentsAtPath:dirPath] objectEnumerator];
while ((temp = [e nextObject]) != nil)
{
if ([fm fileExistsAtPath:temp isDirectory:&isDir] && isDir && !incDirs)
{
continue;
}
if ([[temp pathExtension] isEqual:extension])
{
[filesList addObject:[dirPath stringByAppendingPathComponent:temp]];
}
}
return [filesList autorelease];
}
@end

133
Framework/PCFileNameField.m Normal file
View file

@ -0,0 +1,133 @@
/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2000-2004 Free Software Foundation
Authors: Serg Stoyan
This file is part of GNUstep.
This application 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 application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
#import <AppKit/AppKit.h>
#import <ProjectCenter/PCFileNameField.h>
NSString *PCFileNameFieldNoFiles = @"No files selected";
@implementation PCFileNameField
- (void)setFont:(NSFont *)fontObject
{
NSLog(@"PCFNF: setFont");
}
- (void)setEditableField:(BOOL)yn
{
NSRect frame = [self frame];
NSRect fontFrame = [[self font] boundingRectForFont];
// NSLog (@"TF height: %f font height: %f",
// frame.size.height, fontFrame.size.height);
if ([self textShouldSetEditable:[self stringValue]] == NO)
{
return;
}
// Correct self size wrt font bounding rect
if (frame.size.height > fontFrame.size.height+3)
{
frame.origin.y += (frame.size.height - (fontFrame.size.height+3))/2;
frame.size.height = fontFrame.size.height+3;
}
if (yn == YES)
{
frame.size.width += 4;
if ([self alignment] != NSRightTextAlignment)
{
frame.origin.x -= 4;
}
[self setFrame:frame];
[self setBordered:YES];
[self setBackgroundColor:[NSColor whiteColor]];
[self setEditable:YES];
[self setNeedsDisplay:YES];
[[self superview] setNeedsDisplay:YES];
}
else
{
frame.size.width -= 4;
if ([self alignment] != NSRightTextAlignment)
{
frame.origin.x += 4;
}
[self setFrame:frame];
[self setBackgroundColor:[NSColor lightGrayColor]];
[self setBordered:NO];
[self setEditable:NO];
[self setNeedsDisplay:YES];
[[self superview] setNeedsDisplay:YES];
}
}
- (void)mouseDown:(NSEvent *)theEvent
{
[self setEditableField:YES];
[super mouseDown:theEvent];
}
- (void)setStringValue:(NSString *)aString
{
id delegate = [self delegate];
SEL action = @selector(controlStringValueDidChange:);
[super setStringValue:aString];
if ([delegate respondsToSelector:action])
{
[delegate performSelector:action withObject:aString];
}
}
- (BOOL)textShouldSetEditable:(NSString *)text
{
id delegate = [self delegate];
if ([text isEqualToString:PCFileNameFieldNoFiles])
{
return NO;
}
if ([delegate respondsToSelector:@selector(textShouldSetEditable:)])
{
return [delegate textShouldSetEditable:text];
}
return YES;
}
- (void)textDidEndEditing:(NSNotification *)aNotification
{
[self setEditableField:NO];
[super textDidEndEditing:aNotification];
}
@end

215
Framework/PCFileNameIcon.m Normal file
View file

@ -0,0 +1,215 @@
/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2005 Free Software Foundation
Authors: Serg Stoyan
This file is part of GNUstep.
This application 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 application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
#import <AppKit/AppKit.h>
#import <ProjectCenter/PCDefines.h>
#import <ProjectCenter/PCFileNameIcon.h>
#import <ProjectCenter/PCProjectBrowser.h>
@implementation PCFileNameIcon
- (void)awakeFromNib
{
filePath = nil;
[self setRefusesFirstResponder:YES];
// [self setEditable:NO]; // prevents dragging
// [self setImage:[NSImage imageNamed:@"ProjectCenter"]];
[self
registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
}
- (id)initWithFrame:(NSRect)frameRect
{
self = [super initWithFrame:frameRect];
filePath = nil;
[self setRefusesFirstResponder:YES];
// [self setEditable:NO]; // prevents dragging
// [self setImage:[NSImage imageNamed:@"ProjectCenter"]];
return self;
}
- (void)dealloc
{
#ifdef DEBUG
NSLog (@"PCFileNameIcon: dealloc");
#endif
[[NSNotificationCenter defaultCenter] removeObserver:self];
RELEASE(fileNameField);
RELEASE(delegate);
RELEASE(filePath);
[super dealloc];
}
- (void)setFileNameField:(NSTextField *)field
{
fileNameField = RETAIN(field);
}
- (void)setDelegate:(id)object
{
ASSIGN(delegate, object);
}
- (void)updateIcon
{
if (delegate)
{
if ([delegate respondsToSelector:@selector(fileNameIconImage)])
{
[self setImage:[delegate fileNameIconImage]];
}
if ((fileNameField != nil) &&
[delegate respondsToSelector:@selector(fileNameIconTitle)])
{
[fileNameField setStringValue:[delegate fileNameIconTitle]];
}
if ([delegate respondsToSelector:@selector(fileNameIconPath)])
{
ASSIGN(filePath, [delegate fileNameIconPath]);
}
}
}
// --- Drag and drop
- (void)mouseDown:(NSEvent *)theEvent
{
NSArray *fileList = [NSArray arrayWithObjects:filePath, nil];
NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];
NSPoint dragPosition;
[pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType]
owner:nil];
[pboard setPropertyList:fileList forType:NSFilenamesPboardType];
// Start the drag operation
dragPosition = [self convertPoint:[theEvent locationInWindow]
fromView:nil];
dragPosition.x -= 16;
dragPosition.y -= 16;
[self dragImage:[self image]
at:dragPosition
offset:NSZeroSize
event:theEvent
pasteboard:pboard
source:self
slideBack:YES];
}
// --- NSDraggingDestination protocol methods
// -- Before the image is released
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
{
NSPasteboard *pb = [sender draggingPasteboard];
NSArray *paths = [pb propertyListForType:NSFilenamesPboardType];
NSDragOperation draggingOp = NSDragOperationNone;
// NSLog(@"Dragging entered: %@", paths);
if (![paths isKindOfClass:[NSArray class]] || [paths count] == 0)
{
return draggingOp;
}
if (delegate &&
[delegate respondsToSelector:@selector(canPerformDraggingOf:)] &&
[delegate canPerformDraggingOf:paths] == YES)
{
draggingOp = NSDragOperationCopy;
}
if (draggingOp == NSDragOperationCopy)
{ // TODO: Change icon to icon that shows open state of destination
}
return draggingOp;
}
- (void)draggingExited:(id <NSDraggingInfo>)sender
{
NSLog(@"Dragging exited");
}
// -- After the image is released
- (BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender
{
NSPasteboard *pb = [sender draggingPasteboard];
NSArray *paths = [pb propertyListForType:NSFilenamesPboardType];
NSLog(@"Prepare for drag operation");
if (delegate &&
[delegate respondsToSelector:@selector(prepareForDraggingOf:)])
{
return [delegate prepareForDraggingOf:paths];
}
return YES;
}
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
{
NSPasteboard *pb = [sender draggingPasteboard];
NSArray *paths = [pb propertyListForType:NSFilenamesPboardType];
NSLog(@"performDragOperation: %@", paths);
if (delegate &&
[delegate respondsToSelector:@selector(performDraggingOf:)])
{
return [delegate performDraggingOf:paths];
}
return YES;
}
- (void)concludeDragOperation:(id <NSDraggingInfo>)sender
{
NSPasteboard *pb = [sender draggingPasteboard];
NSArray *paths = [pb propertyListForType:NSFilenamesPboardType];
NSLog(@"Conclude drag operation");
if (delegate &&
[delegate respondsToSelector:@selector(concludeDraggingOf:)])
{
[delegate concludeDraggingOf:paths];
}
}
// --- NSDraggingSource protocol methods
- (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal
{
return NSDragOperationCopy;
}
@end

188
Framework/PCLogController.m Normal file
View file

@ -0,0 +1,188 @@
/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2001 Free Software Foundation
This file is part of GNUstep.
This application 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 application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
#import <ProjectCenter/PCLogController.h>
void
PCLog(id sender, int tag, NSString* format, va_list args)
{
[[PCLogController sharedLogController]
logMessage:[NSString stringWithFormat:format arguments: args]
withTag:tag
sender:sender];
}
void
PCLogInfo(id sender, NSString* format, ...)
{
va_list ap;
va_start(ap, format);
PCLog(sender, INFO, format, ap);
va_end(ap);
}
void
PCLogStatus(id sender, NSString* format, ...)
{
va_list ap;
va_start(ap, format);
PCLog(sender, STATUS, format, ap);
va_end(ap);
}
void
PCLogWarning(id sender, NSString* format, ...)
{
va_list ap;
va_start(ap, format);
PCLog(sender, WARNING, format, ap);
va_end(ap);
}
void
PCLogError(id sender, NSString* format, ...)
{
va_list ap;
va_start(ap, format);
PCLog(sender, ERROR, format, ap);
va_end(ap);
}
@implementation PCLogController
// ===========================================================================
// ==== Class methods
// ===========================================================================
static PCLogController *_logCtrllr = nil;
+ (PCLogController *)sharedLogController
{
if (!_logCtrllr)
{
_logCtrllr = [[PCLogController alloc] init];
}
return _logCtrllr;
}
// ===========================================================================
// ==== Init and free
// ===========================================================================
- (id)init
{
NSFont *font = nil;
if (!(self = [super init]))
{
return nil;
}
if ([NSBundle loadNibNamed:@"LogPanel" owner:self] == NO)
{
NSLog(@"PCLogController[init]: error loading NIB file!");
return nil;
}
[panel setFrameAutosaveName:@"LogPanel"];
if (![panel setFrameUsingName: @"LogPanel"])
{
[panel center];
}
font = [NSFont userFixedPitchFontOfSize:[NSFont systemFontSize]];
textAttributes =
[NSMutableDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
[textAttributes retain];
return self;
}
- (void)dealloc
{
#ifdef DEVELOPMENT
NSLog(@"PCLogController: dealloc");
#endif
RELEASE(textAttributes);
[super dealloc];
}
- (void)showPanel
{
[panel makeKeyAndOrderFront:self];
}
- (void)logMessage:(NSString *)text withTag:(int)tag sender:(id)sender;
{
NSString *messageText = nil;
NSAttributedString *message = nil;
messageText =
[NSString stringWithFormat:@" %@: %@\n",[sender className],text];
switch (tag)
{
case INFO:
[textAttributes
setObject:[NSColor colorWithDeviceRed:.0 green:.0 blue:.0 alpha:1.0]
forKey:NSForegroundColorAttributeName];
break;
case STATUS:
[textAttributes
setObject:[NSColor colorWithDeviceRed:.0 green:.35 blue:.0 alpha:1.0]
forKey:NSForegroundColorAttributeName];
break;
case WARNING:
[textAttributes
setObject:[NSColor colorWithDeviceRed:.56 green:.45 blue:.0 alpha:1.0]
forKey:NSForegroundColorAttributeName];
break;
case ERROR:
[textAttributes
setObject:[NSColor colorWithDeviceRed:.63 green:.0 blue:.0 alpha:1.0]
forKey:NSForegroundColorAttributeName];
break;
default:
break;
}
message = [[NSAttributedString alloc] initWithString:messageText
attributes:textAttributes];
[self putMessageOnScreen:message];
}
- (void)putMessageOnScreen:(NSAttributedString *)message
{
[[textView textStorage] appendAttributedString:message];
[textView scrollRangeToVisible:NSMakeRange([[textView string] length], 0)];
}
@end

View file

@ -0,0 +1,604 @@
/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2002-2014 Free Software Foundation
Authors: Philippe C.D. Robert
Serg Stoyan
Riccardo Mottola
This file is part of GNUstep.
This application 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 application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
#import <ProjectCenter/PCDefines.h>
#import <ProjectCenter/PCProjectManager.h>
#import <ProjectCenter/PCProject.h>
#import <ProjectCenter/PCMakefileFactory.h>
#import <Protocols/Preferences.h>
#import "../Modules/Preferences/Build/PCBuildPrefs.h"
#define COMMENT_HEADERS @"\n\n#\n# Header files\n#\n"
#define COMMENT_RESOURCES @"\n\n#\n# Resource files\n#\n"
#define COMMENT_CLASSES @"\n\n#\n# Objective-C Class files\n#\n"
#define COMMENT_OCPPCLASSES @"\n\n#\n# Objective-C++ Class files\n#\n"
#define COMMENT_CFILES @"\n\n#\n# Other sources\n#\n"
#define COMMENT_SUBPROJECTS @"\n\n#\n# Subprojects\n#\n"
#define COMMENT_APP @"\n\n#\n# Main application\n#\n"
#define COMMENT_LIBRARIES @"\n\n#\n# Additional libraries\n#\n"
#define COMMENT_BUNDLE @"\n\n#\n# Bundle\n#\n"
#define COMMENT_LIBRARY @"\n\n#\n# Library\n#\n"
#define COMMENT_TOOL @"\n\n#\n# Tool\n#\n"
#define COMMENT_LOCALIZATION @"\n\n#\n# Localization\n#\n"
@implementation PCMakefileFactory
static PCMakefileFactory *_factory = nil;
+ (PCMakefileFactory *)sharedFactory
{
static BOOL isInitialised = NO;
if (isInitialised == NO)
{
_factory = [[PCMakefileFactory alloc] init];
isInitialised = YES;
}
return _factory;
}
- (void) createMakefileForProject: (PCProject *)project
{
id <PCPreferences> prefs = [[project projectManager] prefController];
NSString *buildDir = [prefs stringForKey:RootBuildDirectory];
NSString *prName = [project projectName];
NSString *buildName = [prName stringByAppendingPathExtension: @"build"];
NSString *instDomain = [[project projectDict] objectForKey:PCInstallDomain];
NSAssert(prName, @"No project name given!");
AUTORELEASE(mfile);
mfile = [[NSMutableString alloc] init];
AUTORELEASE(pnme);
pnme = [prName copy];
[mfile appendString: @"#\n"];
[mfile appendString: @"# GNUmakefile - Generated by ProjectCenter\n"];
[mfile appendString: @"#\n"];
[mfile appendString: @"ifeq ($(GNUSTEP_MAKEFILES),)\n"];
[mfile appendString: @" GNUSTEP_MAKEFILES := $(shell gnustep-config "];
[mfile appendString: @"--variable=GNUSTEP_MAKEFILES 2>/dev/null)\n"];
[mfile appendString: @" ifeq ($(GNUSTEP_MAKEFILES),)\n"];
[mfile appendString: @" $(warning )\n"];
[mfile appendString: @" $(warning Unable to obtain GNUSTEP_MAKEFILES"];
[mfile appendString: @" setting from gnustep-config!)\n"];
[mfile appendString: @" $(warning Perhaps gnustep-make is not properly"];
[mfile appendString: @" installed,)\n"];
[mfile appendString: @" $(warning so gnustep-config is not in your"];
[mfile appendString: @" PATH.)\n"];
[mfile appendString: @" $(warning )\n"];
[mfile appendString: @" $(warning Your PATH is currently $(PATH))\n"];
[mfile appendString: @" $(warning )\n"];
[mfile appendString: @" endif\n"];
[mfile appendString: @"endif\n"];
[mfile appendString: @"ifeq ($(GNUSTEP_MAKEFILES),)\n"];
[mfile appendString: @" $(error You need to set GNUSTEP_MAKEFILES"];
[mfile appendString: @" before compiling!)\n"];
[mfile appendString: @"endif\n"];
if ([instDomain isEqualToString: @"LOCAL"]
|| [instDomain isEqualToString: @"SYSTEM"]
|| [instDomain isEqualToString: @"USER"]
|| [instDomain isEqualToString: @"NETWORK"])
{
[mfile appendString:
[NSString stringWithFormat: @"\nGNUSTEP_INSTALLATION_DOMAIN = %@\n",
instDomain]];
}
/* If GNUSTEP_INSTALLATION_DOMAIN was not set explicitly by the
* user, it should not be specified; gnustep-make will use the
* default - normally, but not necessarily, LOCAL.
*/
[mfile appendString: @"\ninclude $(GNUSTEP_MAKEFILES)/common.make\n"];
if (![buildDir isEqualToString: @""] && buildDir != nil)
{
[mfile appendString:
[NSString stringWithFormat: @"\nGNUSTEP_BUILD_DIR = %@\n",
[buildDir stringByAppendingPathComponent:buildName]]];
}
}
- (BOOL)createPreambleForProject:(PCProject *)project
{
NSMutableString *mfp = [[NSMutableString alloc] init];
NSString *mfl = nil;
NSArray *array = nil;
NSDictionary *projectDict = [project projectDict];
NSString *projectPath = [project projectPath];
NSString *projectType = [project projectTypeName];
// Create the new file
[mfp appendString: @"#\n"];
[mfp appendString: @"# GNUmakefile.preamble - Generated by ProjectCenter\n"];
[mfp appendString: @"#\n\n"];
// Preprocessor flags
[mfp appendString: @"# Additional flags to pass to the preprocessor\n"];
[mfp appendString:
[NSString stringWithFormat: @"ADDITIONAL_CPPFLAGS += %@\n\n",
[projectDict objectForKey:PCPreprocessorOptions]]];
// Objective C compiler flags
[mfp appendString: @"# Additional flags to pass to Objective C compiler\n"];
[mfp appendString:
[NSString stringWithFormat: @"ADDITIONAL_OBJCFLAGS += %@\n\n",
[projectDict objectForKey:PCObjCCompilerOptions]]];
// C compiler flags
[mfp appendString: @"# Additional flags to pass to C compiler\n"];
[mfp appendString:
[NSString stringWithFormat: @"ADDITIONAL_CFLAGS += %@\n\n",
[projectDict objectForKey:PCCompilerOptions]]];
// Linker flags
[mfp appendString: @"# Additional flags to pass to the linker\n"];
[mfp appendString:
[NSString stringWithFormat: @"ADDITIONAL_LDFLAGS += %@ ",
[projectDict objectForKey:PCLinkerOptions]]];
[mfp appendString: @"\n\n"];
// Directories where to search headers
[mfp appendString:
@"# Additional include directories the compiler should search\n"];
[mfp appendString: @"ADDITIONAL_INCLUDE_DIRS += "];
array = [projectDict objectForKey:PCSearchHeaders];
if (array && [array count])
{
NSString *tmp;
NSEnumerator *enumerator = [array objectEnumerator];
while ((tmp = [enumerator nextObject]))
{
[mfp appendString: [NSString stringWithFormat: @"-I%@ ",tmp]];
}
}
[mfp appendString: @"\n\n"];
// Directories where to search libraries
[mfp appendString:
@"# Additional library directories the linker should search\n"];
[mfp appendString: @"ADDITIONAL_LIB_DIRS += "];
array = [projectDict objectForKey:PCSearchLibs];
if (array && [array count])
{
NSString *tmp;
NSEnumerator *enumerator = [array objectEnumerator];
while ((tmp = [enumerator nextObject]))
{
[mfp appendString: [NSString stringWithFormat: @"-L%@ ",tmp]];
}
}
[mfp appendString: @"\n\n"];
// [mfp appendString: [projectDict objectForKey:PCLibraries]];
if ([projectType isEqualToString: @"Tool"])
{
// Additional TOOL libraries
[mfp appendString: @"# Additional TOOL libraries to link\n"];
[mfp appendString: @"ADDITIONAL_TOOL_LIBS += "];
array = [projectDict objectForKey:PCLibraries];
if (array && [array count])
{
NSString *tmp;
NSEnumerator *enumerator = [array objectEnumerator];
while ((tmp = [enumerator nextObject]))
{
if (![tmp isEqualToString: @"gnustep-base"])
{
[mfp appendString: [NSString stringWithFormat: @"-l%@ ",tmp]];
}
}
}
}
else
{
// Additional GUI libraries
// TODO: Let the user select objc, base, gui libraries/frameworks
// on the gui - the following works well for GUI stuff only.
[mfp appendString: @"# Additional GUI libraries to link\n"];
[mfp appendString: @"ADDITIONAL_GUI_LIBS += "];
array = [projectDict objectForKey:PCLibraries];
if (array && [array count])
{
NSString *tmp;
NSEnumerator *enumerator = [array objectEnumerator];
while ((tmp = [enumerator nextObject]))
{
if (![tmp isEqualToString: @"gnustep-base"] &&
![tmp isEqualToString: @"gnustep-gui"])
{
[mfp appendString: [NSString stringWithFormat: @"-l%@ ",tmp]];
}
}
}
}
[mfp appendString: @"\n\n"];
// Write the new file to disc!
mfl = [projectPath stringByAppendingPathComponent: @"GNUmakefile.preamble"];
if (![mfp writeToFile:mfl atomically:YES])
{
NSRunAlertPanel(@"Create Makefile",
@"Couldn't create %@",
@"Ok",nil,nil, mfl);
return NO;
}
return YES;
}
- (BOOL)createPostambleForProject:(PCProject *)project
{
NSBundle *bundle = nil;
NSString *template = nil;
NSString *postamble = nil;
NSFileManager *fm = [NSFileManager defaultManager];
bundle = [NSBundle bundleForClass: [self class]];
template = [bundle pathForResource: @"postamble" ofType: @"template"];
postamble = [[project projectPath]
stringByAppendingPathComponent: @"GNUmakefile.postamble"];
if (![fm copyPath:template toPath:postamble handler:nil])
{
NSRunAlertPanel(@"Create Makefile",
@"Couldn't create %@",
@"Ok",nil,nil, postamble);
return NO;
}
return YES;
}
- (void)appendString:(NSString *)aString
{
NSAssert(mfile, @"No valid makefile available!");
NSAssert(aString, @"No valid string!");
[mfile appendString:aString];
}
- (void)appendLibraries:(NSArray *)array
{
NSMutableArray *libs = [NSMutableArray arrayWithArray:array];
NSString *lib = nil;
NSEnumerator *enumerator = nil;
[libs removeObject: @"gnustep-base"];
[libs removeObject: @"gnustep-gui"];
if (libs == nil || [libs count] == 0)
{
return;
}
[self appendString: @"\n\n#\n# Libraries\n#\n"];
[self appendString:
[NSString stringWithFormat: @"%@_LIBRARIES_DEPEND_UPON += ",pnme]];
enumerator = [libs objectEnumerator];
while ((lib = [enumerator nextObject]))
{
[self appendString: [NSString stringWithFormat: @"-l%@ ",lib]];
}
}
- (void)appendHeaders:(NSArray *)array
{
if (array == nil || [array count] == 0)
return;
[self appendHeaders:array forTarget:pnme];
}
- (void)appendHeaders:(NSArray *)array forTarget:(NSString *)target
{
if (array == nil || [array count] == 0)
return;
[self appendString:COMMENT_HEADERS];
[self appendString:
[NSString stringWithFormat: @"%@_HEADER_FILES = \\\n", target]];
[self appendString: [array componentsJoinedByString: @" \\\n"]];
}
- (void)appendClasses:(NSArray *)array
{
if (array == nil || [array count] == 0)
{
return;
}
[self appendClasses:array forTarget:pnme];
}
- (void)appendClasses:(NSArray *)array forTarget:(NSString *)target
{
NSEnumerator *oenum;
NSMutableArray *marray = nil;
NSMutableArray *mmarray = nil;
NSString *file;
if (array == nil || [array count] == 0)
{
return;
}
oenum = [array objectEnumerator];
while ((file = [oenum nextObject]))
{
if ([file hasSuffix: @".m"])
{
if (marray == nil)
{
marray = [NSMutableArray array];
}
[marray addObject: file];
}
else if ([file hasSuffix: @".mm"])
{
if (mmarray == nil)
{
mmarray = [NSMutableArray array];
}
[mmarray addObject: file];
}
}
if (marray)
{
[self appendString:COMMENT_CLASSES];
[self appendString: [NSString stringWithFormat: @"%@_OBJC_FILES = \\\n",target]];
[self appendString: [marray componentsJoinedByString: @" \\\n"]];
}
if (mmarray)
{
[self appendString:COMMENT_OCPPCLASSES];
[self appendString: [NSString stringWithFormat: @"%@_OBJCC_FILES = \\\n",target]];
[self appendString: [mmarray componentsJoinedByString: @" \\\n"]];
}
}
- (void)appendOtherSources:(NSArray *)array
{
if (array == nil || [array count] == 0)
{
return;
}
[self appendOtherSources: array forTarget: pnme];
}
- (void)appendOtherSources:(NSArray *)array forTarget: (NSString *)target
{
NSMutableArray *marray = nil;
NSMutableArray *mmarray = nil;
NSMutableArray *oarray = nil;
NSEnumerator *oenum;
NSString *file;
if (array == nil || [array count] == 0)
{
return;
}
// Other Sources can have both .m files and non .m files
oenum = [array objectEnumerator];
while ((file = [oenum nextObject]))
{
if ([file hasSuffix: @".m"])
{
if (marray == nil)
{
marray = [NSMutableArray array];
}
[marray addObject: file];
}
else if ([file hasSuffix: @".mm"])
{
if (mmarray == nil)
{
mmarray = [NSMutableArray array];
}
[mmarray addObject: file];
}
else // non .m file
{
if (oarray == nil)
{
oarray = [NSMutableArray array];
}
[oarray addObject: file];
}
}
[self appendString:COMMENT_CFILES];
// Add other sources if any
if (oarray && [oarray count] != 0)
{
oenum = [oarray objectEnumerator];
[self appendString: [NSString stringWithFormat: @"%@_C_FILES = ", target]];
while ((file = [oenum nextObject]))
{
[self appendString: [NSString stringWithFormat: @"\\\n%@ ",file]];
}
[self appendString: @"\n\n"];
}
// Add .m files if any
if (marray && [marray count] != 0)
{
oenum = [marray objectEnumerator];
[self appendString: [NSString stringWithFormat: @"%@_OBJC_FILES += ",pnme]];
while ((file = [oenum nextObject]))
{
[self appendString: [NSString stringWithFormat: @"\\\n%@ ", file]];
}
}
// Add .mm files if any
if (mmarray && [marray count] != 0)
{
oenum = [mmarray objectEnumerator];
[self appendString: [NSString stringWithFormat: @"%@_OBJCC_FILES += ",pnme]];
while ((file = [oenum nextObject]))
{
[self appendString: [NSString stringWithFormat: @"\\\n%@ ", file]];
}
}
}
- (void)appendResources:(NSArray *)array inDir:(NSString *)dir
{
int i = 0;
int count = [array count];
NSString *string = nil;
NSString *item = nil;
NSString *eol = @"\\\n";
if (array == nil || count <= 0)
{
return;
}
// Header
[self appendString:COMMENT_RESOURCES];
[self appendString:
[NSString stringWithFormat: @"%@_RESOURCE_FILES = \\\n",pnme]];
// Items
for (i = 0; i < count; i++)
{
item = [array objectAtIndex:i];
string = [NSString stringWithFormat: @"%@/%@ %@", dir, item, eol];
[self appendString:string];
if (i == (count-2))
{
eol = @"\n";
}
}
}
- (void)appendResourceItems:(NSArray *)array
{
if (array == nil || [array count] <= 0)
{
return;
}
[self appendString: @"\\\n"];
[self appendString: [array componentsJoinedByString: @" \\\n"]];
}
- (void)appendLocalizedResources:(NSArray *)resources
forLanguages:(NSArray *)languages
{
NSString *langs = [languages componentsJoinedByString: @" "];
NSString *string = nil;
NSString *item = nil;
NSString *eol = @"\\\n";
int i = 0;
int count = [resources count];
if (resources == nil || count <= 0)
{
return;
}
// Header
[self appendString:COMMENT_LOCALIZATION];
// Languages
string = [NSString stringWithFormat: @"%@_LANGUAGES = %@\n", pnme, langs];
[self appendString:string];
// Items
[self appendString:
[NSString stringWithFormat: @"%@_LOCALIZED_RESOURCE_FILES = \\\n",pnme]];
for (i = 0; i < count; i++)
{
if (i == (count-1))
{
eol = @"\n";
}
item = [resources objectAtIndex:i];
string = [NSString stringWithFormat: @"%@ %@", item, eol];
[self appendString:string];
}
}
- (void)appendSubprojects:(NSArray*)array
{
NSString *tmp = nil;
NSEnumerator *enumerator = nil;
if (array == nil || [array count] == 0)
{
return;
}
[self appendString:COMMENT_SUBPROJECTS];
[self appendString: @"SUBPROJECTS = "];
enumerator = [array objectEnumerator];
while ((tmp = [enumerator nextObject]))
{
tmp = [tmp stringByAppendingPathExtension: @"subproj"];
[self appendString: [NSString stringWithFormat: @"\\\n%@ ",tmp]];
}
}
- (NSData *)encodedMakefile
{
NSAssert(mfile, @"No valid makefile available!");
return [mfile dataUsingEncoding: [NSString defaultCStringEncoding]];
}
@end

1853
Framework/PCProject.m Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,778 @@
/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2000-2004 Free Software Foundation
Authors: Philippe C.D. Robert
Serg Stoyan
This file is part of GNUstep.
This application 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 application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
#import <ProjectCenter/PCDefines.h>
#import <ProjectCenter/PCFileManager.h>
#import <ProjectCenter/PCProjectManager.h>
#import <ProjectCenter/PCProject.h>
#import <ProjectCenter/PCProjectBrowser.h>
#import <ProjectCenter/PCProjectEditor.h>
#import <ProjectCenter/PCFileNameField.h>
#import <ProjectCenter/PCLogController.h>
#import "Modules/Preferences/Misc/PCMiscPrefs.h"
NSString *PCBrowserDidSetPathNotification = @"PCBrowserDidSetPathNotification";
@implementation PCProjectBrowser
// ============================================================================
// ==== Intialization & deallocation
// ============================================================================
- (id)initWithProject:(PCProject *)aProject
{
if ((self = [super init]))
{
project = aProject;
browser = [[NSBrowser alloc] initWithFrame:NSMakeRect(-10,-10,256,128)];
[browser setRefusesFirstResponder:YES];
// [browser setAutoresizingMask: NSViewWidthSizable | NSViewMinYMargin];
[browser setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable];
[browser setTitled:NO];
[browser setMaxVisibleColumns:4];
[browser setSeparatesColumns:NO];
[browser setAllowsMultipleSelection:YES];
[browser setDelegate:self];
[browser setTarget:self];
[browser setAction:@selector(click:)];
[browser setDoubleAction:@selector(doubleClick:)];
[browser setRefusesFirstResponder:YES];
[browser loadColumnZero];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(projectDictDidChange:)
name:PCProjectDictDidChangeNotification
object:nil];
}
return self;
}
- (void)dealloc
{
#ifdef DEVELOPMENT
NSLog (@"PCProjectBrowser: dealloc");
#endif
[[NSNotificationCenter defaultCenter] removeObserver:self];
RELEASE(browser);
[super dealloc];
}
// ============================================================================
// ==== Accessory methods
// ============================================================================
- (NSView *)view
{
return browser;
}
// Returns nil if multiple files or category selected
- (NSString *)nameOfSelectedFile
{
NSString *name = [[browser path] lastPathComponent];
NSString *category = [self nameOfSelectedCategory];
NSMutableArray *pathArray;
NSEnumerator *enumerator;
NSString *pathItem;
// NSLog(@"---> Selected: %@: category: %@", name, category);
if ([[browser selectedCells] count] != 1 ||
!category ||
[name isEqualToString:category])
{
return nil;
}
pathArray = [[[browser path] pathComponents] mutableCopy];
enumerator = [pathArray objectEnumerator];
while ((pathItem = [enumerator nextObject]))
{
if ([pathItem isEqualToString:category])
{
name = [enumerator nextObject];
break;
}
}
RELEASE(pathArray);
return name;
}
// Returns nil if multiple files selected
- (NSString *)pathToSelectedFile
{
NSString *name = [self nameOfSelectedFile];
NSString *path = [browser path];
if (!name)
{
path = nil;
}
return path;
}
// Returns 'nil' if selected:
// - root project (browser path is @"/")
// - multiple categories
// - name of subproject
// Should not call any of the nameOf... or pathTo... methods to prevent
// cyclic recursion.
- (NSString *)nameOfSelectedCategory
{
NSArray *pathArray = [[browser path] componentsSeparatedByString:@"/"];
NSString *lastPathElement = [[browser path] lastPathComponent];
PCProject *activeProject = [[project projectManager] activeProject];
NSArray *rootCategories = [activeProject rootCategories];
NSString *name = nil;
int i;
// Name of subproject selected: Change active project to superproject
// to check category against superproject's catgory list.
// But: path '/Subproject/Foo' and '/Subprojects/Foo/Subprojects' will
// return the same category 'Subprojects' and active project will be 'Foo'
// in both cases
// ![[self nameOfSelectedFile] isEqualToString:lastPathElement])
/* if ([lastPathElement isEqualToString:[activeProject projectName]])
{
activeProject = [activeProject superProject];
rootCategories = [activeProject rootCategories];
}*/
// Multiple categories selected
if (([rootCategories containsObject:lastPathElement]
&& [[browser selectedCells] count] > 1))
{
return nil;
}
for (i = [pathArray count] - 1; i >= 0; i--)
{
if ([rootCategories containsObject:[pathArray objectAtIndex:i]])
{
name = [pathArray objectAtIndex:i];
break;
}
}
// Subproject's name selected
if ([name isEqualToString:@"Subprojects"] &&
[lastPathElement isEqualToString:[activeProject projectName]])
{
return nil;
}
return name;
}
// Returns nil of multiple categories selected
- (NSString *)pathToSelectedCategory
{
NSString *path = nil;
NSString *selectedCategory = [self nameOfSelectedCategory];
NSMutableArray *bPathArray = nil;
int i;
if (selectedCategory)
{
bPathArray = [NSMutableArray arrayWithArray:[[browser path]
componentsSeparatedByString:@"/"]];
i = [bPathArray count] - 1;
while (![[bPathArray objectAtIndex:i] isEqualToString:selectedCategory])
{
[bPathArray removeObjectAtIndex:i];
i = [bPathArray count] - 1;
}
path = [bPathArray componentsJoinedByString:@"/"];
}
return path;
}
// Returns nil of multiple categories selected
- (NSString *)pathFromSelectedCategory
{
NSString *selectedCategory = [self nameOfSelectedCategory];
NSMutableArray *bPathArray;
NSString *path = nil;
if (selectedCategory)
{
bPathArray =
[[[browser path] componentsSeparatedByString:@"/"] mutableCopy];
while (![[bPathArray objectAtIndex:1] isEqualToString:selectedCategory])
{
[bPathArray removeObjectAtIndex:1];
}
path = [bPathArray componentsJoinedByString:@"/"];
RELEASE(bPathArray);
}
return path;
}
- (NSString *)nameOfSelectedRootCategory
{
NSString *categoryPath = [self pathToSelectedCategory];
NSArray *pathComponents;
if ([categoryPath isEqualToString:@"/"] || [categoryPath isEqualToString:@""])
{
return nil;
}
pathComponents = [categoryPath componentsSeparatedByString:@"/"];
return [pathComponents objectAtIndex:1];
}
- (NSArray *)selectedFiles
{
NSArray *cells = [browser selectedCells];
NSMutableArray *files = [[NSMutableArray alloc] initWithCapacity: 1];
int i;
int count = [cells count];
PCProject *activeProject = [[project projectManager] activeProject];
// Return nil if categories selected
if ([cells count] == 0
|| [[activeProject rootCategories]
containsObject:[[cells objectAtIndex:0] stringValue]])
{
return nil;
}
for (i = 0; i < count; i++)
{
[files addObject: [[cells objectAtIndex: i] stringValue]];
}
return AUTORELEASE((NSArray *)files);
}
- (NSString *)path
{
return [browser path];
}
- (BOOL)setPath:(NSString *)path
{
BOOL res;
if ([[browser path] isEqualToString: path])
{
return YES;
}
// PCLogInfo(self, @"[setPath]: %@", path);
res = [browser setPath:path];
[[NSNotificationCenter defaultCenter]
postNotificationName:PCBrowserDidSetPathNotification
object:self];
return res;
}
- (void)reloadLastColumnAndNotify:(BOOL)yn
{
NSInteger column = [browser lastColumn];
NSString *category = [self nameOfSelectedCategory];
NSInteger selectedColumn = [browser selectedColumn];
NSMatrix *colMatrix = [browser matrixInColumn:selectedColumn];
NSInteger rowCount = 0, colCount = 0, spCount = 0;
PCProject *activeProject = [[project projectManager] activeProject];
NSString *selCellTitle = [[browser selectedCell] stringValue];
if ([category isEqualToString:@"Subprojects"]
&& ![selCellTitle isEqualToString:@"Subprojects"])
{ // /Subprojects/Name selected
if ([selCellTitle isEqualToString:[activeProject projectName]])
{
activeProject = [activeProject superProject];
}
[colMatrix getNumberOfRows:&rowCount columns:&colCount];
spCount = [[[activeProject projectDict]
objectForKey:PCSubprojects] count];
}
if ([category isEqualToString:@"Subprojects"] && rowCount != spCount
&& ![[[browser selectedCell] stringValue] isEqualToString:@"Subprojects"])
{
column = selectedColumn;
}
[browser reloadColumn:column];
if (yn)
{
[[NSNotificationCenter defaultCenter]
postNotificationName:PCBrowserDidSetPathNotification
object:self];
}
}
- (void)reloadLastColumnAndSelectFile:(NSString *)file
{
PCProject *p = [[project projectManager] activeProject];
NSString *catKey = [p keyForCategory:[self nameOfSelectedCategory]];
NSArray *array = [[p projectDict] objectForKey:catKey];
NSString *path = [self path];
NSString *tmp;
// Determine last column with files (removing classes and methods from path)
tmp = [[path lastPathComponent] substringWithRange:NSMakeRange(0,1)];
while ([tmp isEqualToString:@"@"] // classes
|| [tmp isEqualToString:@"+"] // factory methods
|| [tmp isEqualToString:@"-"]) // instance methods
{
path = [path stringByDeletingLastPathComponent];
tmp = [[path lastPathComponent] substringWithRange:NSMakeRange(0,1)];
}
NSLog(@"PCBrowser set path: %@", path);
[self setPath:[path stringByDeletingLastPathComponent]];
[self reloadLastColumnAndNotify:NO];
[browser selectRow:[array indexOfObject:file] inColumn:[browser lastColumn]];
// Notify
[[NSNotificationCenter defaultCenter]
postNotificationName:PCBrowserDidSetPathNotification
object:self];
}
// ============================================================================
// ==== Actions
// ============================================================================
- (void)click:(id)sender
{
NSString *category;
PCProject *activeProject;
NSString *browserPath;
NSString *filePath;
NSString *fileName;
if (sender != browser)
{
return;
}
category = [self nameOfSelectedCategory];
activeProject = [[project projectManager] activeProject];
browserPath = [self path];
filePath = [self pathToSelectedFile];
fileName = [self nameOfSelectedFile];
NSLog(@"[click] category: %@ forProject: %@ fileName: %@",
category, [activeProject projectName], fileName);
// ![fileName isEqualToString:[activeProject projectName]] &&
if (filePath &&
[filePath isEqualToString:browserPath] &&
category &&
![category isEqualToString:@"Libraries"]
)
{
NSLog(@"[click] category: %@ filePath: %@", category, filePath);
[[activeProject projectEditor] openEditorForCategoryPath:browserPath
windowed:NO];
}
[[NSNotificationCenter defaultCenter]
postNotificationName:PCBrowserDidSetPathNotification
object:self];
}
- (void)doubleClick:(id)sender
{
NSString *category = [self nameOfSelectedCategory];
id selectedCell;
NSString *fileName;
PCProject *activeProject;
NSString *key;
NSString *filePath;
id <PCPreferences> prefs = [[project projectManager] prefController];
NSWorkspace *workspace;
NSString *appName, *type;
if ((sender != browser) || [category isEqualToString:@"Libraries"])
{
return;
}
selectedCell = [sender selectedCell];
fileName = [[sender selectedCell] stringValue];
activeProject = [[project projectManager] activeProject];
key = [activeProject keyForCategory:category];
filePath = [activeProject pathForFile:fileName forKey:key];
if ([self nameOfSelectedFile] != nil)
{
BOOL foundFile = NO;
BOOL foundApp = NO;
// PCLogInfo(self, @"{doubleClick} filePath: %@", filePath);*/
workspace = [NSWorkspace sharedWorkspace];
foundFile = [workspace getInfoForFile:filePath
application:&appName
type:&type];
foundApp = foundFile && appName;
// NSLog (@"Open file: %@ with app: %@", filePath, appName);
// If 'Editor' role was set in .GNUstepExtPrefs application
// name will be returned according that setting. Otherwise
// 'ProjectCenter.app' will be returned accoring to NSTypes
// from Info-gnustep.plist file of PC.
if(foundApp == NO || [appName isEqualToString:@"ProjectCenter.app"])
{
appName = [prefs stringForKey:Editor];
if (![appName isEqualToString:@"ProjectCenter"])
{
[workspace openFile:filePath
withApplication:appName];
}
else
{
[[activeProject projectEditor]
openEditorForCategoryPath:[self path]
windowed:YES];
}
}
else
{
[workspace openFile:filePath];
}
}
else
{
if ([[selectedCell title] isEqualToString:@"Subprojects"])
{
[[project projectManager] addSubproject];
}
else
{
[[project projectManager] addProjectFiles];
}
}
}
// ============================================================================
// ==== Notifications
// ============================================================================
- (void)projectDictDidChange:(NSNotification *)aNotif
{
NSDictionary *notifObject = [aNotif object];
PCProject *changedProject = [notifObject objectForKey:@"Project"];
NSString *changedAttribute = [notifObject objectForKey:@"Attribute"];
if (!browser)
{
return;
}
if (changedProject != project
&& changedProject != [project activeSubproject]
&& [changedProject superProject] != [project activeSubproject])
{
return;
}
// NSLog(@"PCPB: projectDictDidChange in %@ (%@)",
// [changedProject projectName], [project projectName]);
// If project dictionary changed after files adding/removal,
// refresh file list
if ([[changedProject rootKeys] containsObject:changedAttribute])
{
[self reloadLastColumnAndNotify:YES];
}
}
@end
@implementation PCProjectBrowser (ProjectBrowserDelegate)
- (void) browser:(NSBrowser *)sender
createRowsForColumn:(NSInteger)column
inMatrix:(NSMatrix *)matrix
{
NSString *pathToCol;
NSArray *files;
NSUInteger i = 0;
NSUInteger count = 0;
if (sender != browser || !matrix || ![matrix isKindOfClass:[NSMatrix class]])
{
return;
}
pathToCol = [sender pathToColumn:column];
files = [project contentAtCategoryPath:pathToCol];
if (files)
{
count = [files count];
}
for (i = 0; i < count; ++i)
{
NSMutableString *categoryPath = nil;
id cell;
categoryPath = [NSMutableString stringWithString:pathToCol];
[matrix insertRow:i];
cell = [matrix cellAtRow:i column:0];
[cell setStringValue:[files objectAtIndex:i]];
if (![categoryPath isEqualToString:@"/"])
{
[categoryPath appendString:@"/"];
}
[categoryPath appendString:[files objectAtIndex:i]];
[cell setLeaf:![project hasChildrenAtCategoryPath:categoryPath]];
[cell setRefusesFirstResponder:YES];
}
}
@end
@implementation PCProjectBrowser (FileNameIconDelegate)
// If file was opened in editor:
// 1. Determine editor
// 2. Ask editor for icon
- (NSImage *)_editorIconImageForFile:(NSString *)fileName
{
PCProjectEditor *projectEditor = [project projectEditor];
id<CodeEditor> editor = nil;
NSString *categoryName = [self nameOfSelectedCategory];
NSString *categoryKey = [project keyForCategory:categoryName];
NSString *filePath;
filePath = [project pathForFile:fileName forKey:categoryKey];
editor = [projectEditor editorForFile:filePath];
if (editor != nil)
{
return [editor fileIcon];
}
return nil;
}
- (NSImage *)fileNameIconImage
{
NSString *categoryName = nil;
NSString *fileName = nil;
NSString *iconName = nil;
NSImage *icon = nil;
PCProject *activeProject = [[project projectManager] activeProject];
fileName = [self nameOfSelectedFile];
if (fileName)
{
if ((icon = [self _editorIconImageForFile:fileName]))
{
return icon;
}
}
else
{
categoryName = [self nameOfSelectedCategory];
}
/* PCLogError(self,@"{setFileIcon} file %@ category %@",
fileName, categoryName);*/
if ([[self selectedFiles] count] > 1)
{
iconName = [[NSString alloc] initWithString:@"MultiFiles"];
}
// Nothing or subproject name selected
else if ((!categoryName && !fileName) ||
[fileName isEqualToString:[activeProject projectName]])
{
iconName = [[NSString alloc] initWithString:@"FileProject"];
}
else if ([categoryName isEqualToString: @"Classes"])
{
iconName = [[NSString alloc] initWithString:@"classSuitcase"];
}
else if ([categoryName isEqualToString: @"Headers"])
{
iconName = [[NSString alloc] initWithString:@"headerSuitcase"];
}
else if ([categoryName isEqualToString: @"Other Sources"])
{
iconName = [[NSString alloc] initWithString:@"genericSuitcase"];
}
else if ([categoryName isEqualToString: @"Interfaces"])
{
iconName = [[NSString alloc] initWithString:@"nibSuitcase"];
}
else if ([categoryName isEqualToString: @"Images"])
{
iconName = [[NSString alloc] initWithString:@"iconSuitcase"];
}
else if ([categoryName isEqualToString: @"Other Resources"])
{
iconName = [[NSString alloc] initWithString:@"otherSuitcase"];
}
else if ([categoryName isEqualToString: @"Subprojects"])
{
iconName = [[NSString alloc] initWithString:@"subprojectSuitcase"];
}
else if ([categoryName isEqualToString: @"Documentation"])
{
iconName = [[NSString alloc] initWithString:@"helpSuitcase"];
}
else if ([categoryName isEqualToString: @"Supporting Files"])
{
iconName = [[NSString alloc] initWithString:@"genericSuitcase"];
}
else if ([categoryName isEqualToString: @"Libraries"])
{
iconName = [[NSString alloc] initWithString:@"librarySuitcase"];
}
else if ([categoryName isEqualToString: @"Non Project Files"])
{
iconName = [[NSString alloc] initWithString:@"projectSuitcase"];
}
if (iconName != nil)
{
icon = IMAGE(iconName);
RELEASE(iconName);
}
else
{
icon = [[NSWorkspace sharedWorkspace] iconForFile:fileName];
}
return icon;
}
- (NSString *)fileNameIconTitle
{
NSString *categoryName = [self nameOfSelectedCategory];
NSString *fileName = [self nameOfSelectedFile];
int filesCount = [[self selectedFiles] count];
if (filesCount > 1)
{
return [NSString stringWithFormat:@"%i files", filesCount];
}
else if (fileName)
{
return fileName;
}
else if (categoryName)
{
return categoryName;
}
return PCFileNameFieldNoFiles;
}
- (NSString *)fileNameIconPath
{
NSString *fileName = [self nameOfSelectedFile];
NSString *category = [self nameOfSelectedCategory];
return [project pathForFile:fileName
forKey:[project keyForCategory:category]];
}
- (BOOL)canPerformDraggingOf:(NSArray *)paths
{
NSString *category = [self nameOfSelectedCategory];
NSString *categoryKey = [project keyForCategory:category];
NSArray *fileTypes = [project fileTypesForCategoryKey:categoryKey];
NSEnumerator *e = [paths objectEnumerator];
NSString *s;
NSLog(@"PCBrowser: canPerformDraggingOf -> %@", category);
if (!category || ([self nameOfSelectedFile] != nil))
{
return NO;
}
if (![project isEditableCategory:category])
{
return NO;
}
// Check if we can accept files of such types
while ((s = [e nextObject]))
{
if (![fileTypes containsObject:[s pathExtension]])
{
return NO;
}
}
return YES;
}
- (BOOL)prepareForDraggingOf:(NSArray *)paths
{
return YES;
}
- (BOOL)performDraggingOf:(NSArray *)paths
{
NSString *category = [self nameOfSelectedCategory];
NSString *categoryKey = [project keyForCategory:category];
NSEnumerator *pathsEnum = [paths objectEnumerator];
NSString *file = nil;
while ((file = [[pathsEnum nextObject] lastPathComponent]))
{
if (![project doesAcceptFile:file forKey:categoryKey])
{
return NO;
}
}
return [project addAndCopyFiles:paths forKey:categoryKey];
}
@end

1346
Framework/PCProjectBuilder.m Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,196 @@
/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2000-2007 Free Software Foundation
Authors: Philippe C.D. Robert
Sergii Stoian
This file is part of GNUstep.
This application 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 application 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
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.
*/
#import <ProjectCenter/PCProjectBuilderOptions.h>
#import <ProjectCenter/PCDefines.h>
#import <ProjectCenter/PCProject.h>
#import <ProjectCenter/PCLogController.h>
@implementation PCProjectBuilderOptions
- (void)_setStateForButton:(id)button
key:(NSString *)key
defaultState:(int)dState
{
NSString *value = [[project projectDict] objectForKey:key];
int state;
if (value == nil)
{
state = dState;
}
else
{
if ([value isEqualToString:@"YES"])
state = NSOnState;
else
state = NSOffState;
}
[button setState:state];
}
- (id)initWithProject:(PCProject *)aProject delegate:(id)aDelegate
{
if ((self = [super init]))
{
project = aProject;
delegate = aDelegate;
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(loadProjectProperties:)
name:PCProjectDictDidChangeNotification
object:nil];
}
return self;
}
- (void)dealloc
{
#ifdef DEBUG
NSLog (@"PCProjectBuilderOptions: dealloc");
#endif
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
- (void)awakeFromNib
{
[verboseButton setRefusesFirstResponder:YES];
[debugButton setRefusesFirstResponder:YES];
[stripButton setRefusesFirstResponder:YES];
[sharedLibsButton setRefusesFirstResponder:YES];
[self loadProjectProperties:nil];
}
- (void)show:(NSRect)builderRect
{
NSRect opRect;
if (!optionsPanel)
{
if ([NSBundle loadNibNamed:@"BuilderOptions" owner:self] == NO)
{
PCLogError(self, @"error loading BuilderOptions NIB file!");
return;
}
}
opRect = [optionsPanel frame];
opRect.origin.x = builderRect.origin.x +
(builderRect.size.width - opRect.size.width)/2;
opRect.origin.y = builderRect.origin.y +
(builderRect.size.height - opRect.size.height)/2;
[optionsPanel setFrame:opRect display:NO];
[optionsPanel makeKeyAndOrderFront:nil];
[optionsPanel makeFirstResponder:buildArgsField];
}
- (NSString *)buildTarget
{
if (targetPopup)
{
return [targetPopup titleOfSelectedItem];
}
return nil;
}
- (void)optionsPopupChanged:(id)sender
{
[delegate targetDidSet:[targetPopup titleOfSelectedItem]];
}
- (void)controlTextDidEndEditing:(NSNotification *)aNotif
{
id object = [aNotif object];
NSMutableArray *args;
if (object != buildArgsField)
return;
args = [[[buildArgsField stringValue] componentsSeparatedByString:@" "]
mutableCopy];
[args removeObject:@""];
[args removeObject:@" "];
[project setProjectDictObject:args forKey:PCBuilderArguments notify:NO];
[delegate targetDidSet:[targetPopup titleOfSelectedItem]];
}
- (void)optionsButtonClicked:(id)sender
{
NSString *value = [sender state] == NSOnState ? @"YES" : @"NO";
NSString *key;
if (sender == verboseButton)
key = PCBuilderVerbose;
if (sender == debugButton)
key = PCBuilderDebug;
if (sender == stripButton)
key = PCBuilderStrip;
if (sender == sharedLibsButton)
key = PCBuilderSharedLibs;
[project setProjectDictObject:value forKey:key notify:NO];
}
- (void)loadProjectProperties:(NSNotification *)aNotif
{
NSArray *args;
// Setup target popup
[targetPopup removeAllItems];
[targetPopup addItemsWithTitles:[project buildTargets]];
[targetPopup selectItemAtIndex:0];
// Setup build arguments field
args = [[project projectDict] objectForKey:PCBuilderArguments];
[buildArgsField setStringValue:[args componentsJoinedByString:@" "]];
// Setup option buttons
[self _setStateForButton:verboseButton
key:PCBuilderVerbose
defaultState:NSOffState];
[self _setStateForButton:debugButton
key:PCBuilderDebug
defaultState:NSOnState];
[self _setStateForButton:stripButton
key:PCBuilderStrip
defaultState:NSOffState];
[self _setStateForButton:sharedLibsButton
key:PCBuilderSharedLibs
defaultState:NSOnState];
}
@end

Some files were not shown because too many files have changed in this diff Show more