diff options
| author | Simon Tatham <anakin@pobox.com> | 2005-01-24 12:05:21 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2005-01-24 12:05:21 +0000 |
| commit | 2040ff96317be6b93ca459c44bfea5d775a18692 (patch) | |
| tree | 7f8d186b326a0dc6ec06d0f47fce1db8da49c8fc | |
| parent | d8eb0de7c2210070adcf085e968658cbd00958d6 (diff) | |
| download | puzzles-2040ff96317be6b93ca459c44bfea5d775a18692.zip puzzles-2040ff96317be6b93ca459c44bfea5d775a18692.tar.gz puzzles-2040ff96317be6b93ca459c44bfea5d775a18692.tar.bz2 puzzles-2040ff96317be6b93ca459c44bfea5d775a18692.tar.xz | |
First cut at online help under OS X. I just built the HTML version
of the manual using Halibut (with one additional magic tag in the
<HEAD> section), stuck it in the right part of the application
bundle, referenced it in Info.plist, and added a Help menu.
Everything else was automatic. Not bad!
[originally from svn r5190]
| -rw-r--r-- | Recipe | 10 | ||||
| -rwxr-xr-x | mkfiles.pl | 7 | ||||
| -rw-r--r-- | osx-info.plist | 4 | ||||
| -rw-r--r-- | osx.m | 23 | ||||
| -rw-r--r-- | puzzles.but | 15 |
5 files changed, 43 insertions, 16 deletions
@@ -40,6 +40,16 @@ pattern : [G] WINDOWS COMMON pattern # Mac OS X unified application containing all the puzzles. Puzzles : [MX] osx osx.icns osx-info.plist COMMON ALL +# For OS X, we must create the online help and include it in the +# application bundle.) +!begin osx +Puzzles_extra = Puzzles.app/Contents/Resources/Help/index.html +Puzzles.app/Contents/Resources/Help/index.html: \ + Puzzles.app/Contents/Resources/Help puzzles.but + halibut --html=$@ puzzles.but +Puzzles.app/Contents/Resources/Help: Puzzles.app/Contents/Resources + mkdir -p Puzzles.app/Contents/Resources/Help +!end # The `nullgame' source file is a largely blank one, which contains # all the correct function definitions to compile and link, but @@ -1131,6 +1131,9 @@ if (defined $makefiles{'osx'}) { &splitline("CFLAGS = -O2 -Wall -Werror -g -DMAC_OS_X " . (join " ", map {"-I$dirpfx$_"} @srcdirs))."\n". "LDFLAGS = -framework Cocoa\n". + &splitline("all:" . join "", map { " $_" } &progrealnames("MX")) . + "\n" . + $makefile_extra{'osx'} . "\n". ".SUFFIXES: .o .c .m\n". "\n". @@ -1139,7 +1142,6 @@ if (defined $makefiles{'osx'}) { ".m.o:\n". "\t\$(CC) -x objective-c \$(COMPAT) \$(FWHACK) \$(XFLAGS) \$(CFLAGS) -c \$<\n". "\n"; - print &splitline("all:" . join "", map { " $_" } &progrealnames("MX")); print "\n\n"; foreach $p (&prognames("MX")) { ($prog, $type) = split ",", $p; @@ -1159,6 +1161,7 @@ if (defined $makefiles{'osx'}) { print "${prog}.app/Contents/Info.plist: ${prog}.app/Contents/Resources $infoplist\n\tcp $infoplist \$\@\n"; $targets .= " ${prog}.app/Contents/Info.plist"; } + $targets .= " \$(${prog}_extra)"; print &splitline("${prog}: $targets", 69) . "\n\n"; print &splitline("${prog}.app/Contents/MacOS/$prog: ". "${prog}.app/Contents/MacOS " . $objstr), "\n"; @@ -1170,8 +1173,6 @@ if (defined $makefiles{'osx'}) { print &splitline(sprintf("%s: %s", $d->{obj}, join " ", @{$d->{deps}})), "\n"; } - print "\n"; - print $makefile_extra{'osx'}; print "\nclean:\n". "\trm -f *.o\n". "\trm -rf *.app\n"; diff --git a/osx-info.plist b/osx-info.plist index 54e8af3..afe6f58 100644 --- a/osx-info.plist +++ b/osx-info.plist @@ -4,5 +4,9 @@ <dict> <key>CFBundleIconFile</key> <string>Puzzles.icns</string> + <key>CFBundleHelpBookFolder</key> + <string>Help</string> + <key>CFBundleHelpBookName</key> + <string>Puzzles Help</string> </dict> </plist> @@ -1,12 +1,15 @@ /* * Mac OS X / Cocoa front end to puzzles. * - * Actually unfinished things left to do: - * - * - Find out how to do help, and do some. We have a help file; at - * _worst_ this should involve a new Halibut back end, but I - * think help is HTML round here anyway so perhaps we can work - * with what we already have. + * Still to do: + * + * - Improve the help. For a start I probably ought to split it + * into pieces (which means Halibut needs to acquire a mechanism + * of putting something in the head section of _only one_ HTML + * file); then I'd also like to be able to call up context help + * for a specific game at a time. Also I just idly wonder + * whether changing font might be nice, to match up to Apple + * norms. * * Mac interface issues that possibly could be done better: * @@ -1113,12 +1116,12 @@ void status_bar(frontend *fe, char *text) @interface AppController : NSObject { } -- (IBAction)newGame:(id)sender; +- (void)newGame:(id)sender; @end @implementation AppController -- (IBAction)newGame:(id)sender +- (void)newGame:(id)sender { const game *g = [sender getPayload]; id win; @@ -1209,6 +1212,10 @@ int main(int argc, char **argv) [NSApp setWindowsMenu: menu]; item = newitem(menu, "Minimise Window", "m", NULL, @selector(performMiniaturize:)); + menu = newsubmenu([NSApp mainMenu], "Help"); + typemenu = menu; + item = newitem(menu, "Puzzles Help", "", NSApp, @selector(showHelp:)); + [NSApp run]; [pool release]; } diff --git a/puzzles.but b/puzzles.but index de0bac3..305340a 100644 --- a/puzzles.but +++ b/puzzles.but @@ -5,11 +5,16 @@ \cfg{text-filename}{puzzles.txt} -\cfg{xhtml-contents-filename}{index.html} -\cfg{xhtml-leaf-level}{1} -\cfg{xhtml-contents-depth-0}{1} -\cfg{xhtml-contents-depth-1}{2} -\cfg{xhtml-leaf-contains-contents}{true} +\# +\cfg{html-contents-filename}{index.html} +\cfg{html-leaf-level}{1} +\cfg{html-contents-depth-0}{1} +\cfg{html-contents-depth-1}{2} +\cfg{html-leaf-contains-contents}{true} + +\cfg{html-single-filename}{index.html} +\cfg{html-head-end}{<meta name="AppleTitle" content="Puzzles Help">} +\cfg{html-leaf-level}{0} \cfg{info-filename}{puzzles.info} |