Add a new character picker panel. It's accessible

via a button in the font panel.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33470 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Eric Wasylishen 2011-07-06 18:39:49 +00:00
parent 7a47a5e929
commit 896c6d73a3
9 changed files with 654 additions and 0 deletions

View file

@ -1,3 +1,18 @@
2011-07-06 Eric Wasylishen <ewasylishen@gmail.com>
* configure:
* Source/NSFontPanel.m:
* Source/GNUmakefile:
* Source/GSCharacterPanel.m:
* configure.ac:
* Headers/Additions/GNUstepGUI/GSCharacterPanel.h:
* Headers/Additions/GNUstepGUI/config.h.in:
* ChangeLog:
* config:
* config/icu.m4:
Add a new character picker panel. It's accessible
via a button in the font panel.
2011-07-03 Eric Wasylishen <ewasylishen@gmail.com>
* Source/GSDisplayServer.m:

View file

@ -0,0 +1,53 @@
/*
GSCharacterPanel.h
Ghostscript image representation.
Copyright (C) 2011 Free Software Foundation, Inc.
Written by: Eric Wasylishen <ewasylishen@gmail.com>
Date: June 2011
This file is part of the GNUstep GUI Library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef _GNUstep_H_GSCharacterPanel
#define _GNUstep_H_GSCharacterPanel
#import <AppKit/NSPanel.h>
@class NSTableView;
@class NSSearchField;
@class NSIndexSet;
@interface GSCharacterPanel : NSPanel
{
NSTableView *table;
NSSearchField *searchfield;
NSIndexSet *assignedCodepoints;
NSIndexSet *visibleCodepoints;
}
+ (GSCharacterPanel *) sharedCharacterPanel;
@end
#endif // _GNUstep_H_GSCharacterPanel

View file

@ -99,6 +99,12 @@
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unicode/uchar.h> header file. */
#undef HAVE_UNICODE_UCHAR_H
/* Define to 1 if you have the <unicode/ustring.h> header file. */
#undef HAVE_UNICODE_USTRING_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H

View file

@ -201,6 +201,7 @@ GSServicesManager.m \
tiff.m \
externs.m \
linking.m \
GSCharacterPanel.m \
GSDragView.m \
GSFontInfo.m \
GSTable.m \

352
Source/GSCharacterPanel.m Normal file
View file

@ -0,0 +1,352 @@
/** <title>GSCharacterPanel</title>
<abstract>Character Panel.</abstract>
Copyright (C) 2011 Free Software Foundation, Inc.
Author: Eric Wasylishen <ewasylishen@gmail.com>
Date: July 2011
This file is part of the GNUstep Application Kit Library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#import "config.h"
#import <Foundation/NSIndexSet.h>
#import <Foundation/NSBundle.h>
#import <Foundation/NSAutoreleasePool.h>
#import "AppKit/NSStringDrawing.h"
#import "AppKit/NSPasteboard.h"
#import "AppKit/NSTableView.h"
#import "AppKit/NSTableColumn.h"
#import "AppKit/NSTextFieldCell.h"
#import "AppKit/NSScrollView.h"
#import "AppKit/NSSearchField.h"
#import "GNUstepGUI/GSCharacterPanel.h"
#if defined(HAVE_UNICODE_UCHAR_H) && defined(HAVE_UNICODE_USTRING_H)
#include <unicode/uchar.h>
#include <unicode/ustring.h>
@interface GSVerticallyCenteredTextFieldCell : NSTextFieldCell
{
}
@end
@implementation GSVerticallyCenteredTextFieldCell
- (NSRect) titleRectForBounds: (NSRect)aRect
{
NSRect titleRect = [super titleRectForBounds: aRect];
NSSize titleSize = [[self attributedStringValue] size];
titleRect.origin.y = aRect.origin.y + (aRect.size.height - titleSize.height) / 2.0;
titleRect.size.height = titleSize.height;
return titleRect;
}
@end
// Enumerating assigned codepoints
static UBool enumCharNamesFn(void *context, UChar32 code, UCharNameChoice nameChoice, const char *name, int32_t length)
{
[(NSMutableIndexSet*)context addIndex: (NSUInteger)code];
return TRUE;
}
static NSIndexSet *AssignedCodepoints()
{
UErrorCode err = U_ZERO_ERROR;
NSMutableIndexSet *set = [NSMutableIndexSet indexSet];
u_enumCharNames(UCHAR_MIN_VALUE, UCHAR_MAX_VALUE + 1, enumCharNamesFn, set, U_UNICODE_CHAR_NAME, &err);
return set;
}
// Searching for codepoints
struct searchContext {
const char *searchString;
NSMutableIndexSet *set;
};
static UBool searchCharNamesFn(void *context, UChar32 code, UCharNameChoice nameChoice, const char *name, int32_t length)
{
struct searchContext *ctx = (struct searchContext *)context;
if (strstr(name, ctx->searchString) != NULL)
{
[ctx->set addIndex: (NSUInteger)code];
}
return TRUE;
}
static NSIndexSet *CodepointsWithNameContainingSubstring(NSString *str)
{
UErrorCode err = U_ZERO_ERROR;
struct searchContext ctx;
ctx.set = [NSMutableIndexSet indexSet];
ctx.searchString = [[str uppercaseString] UTF8String];
u_enumCharNames(UCHAR_MIN_VALUE, UCHAR_MAX_VALUE + 1, searchCharNamesFn, &ctx, U_UNICODE_CHAR_NAME, &err);
return ctx.set;
}
@implementation GSCharacterPanel
- (void)setVisibleCodepoints: (NSIndexSet*)set
{
ASSIGN(visibleCodepoints, set);
}
+ (GSCharacterPanel *) sharedCharacterPanel
{
static GSCharacterPanel *shared = nil;
if (nil == shared)
{
shared = [[self alloc] init];
}
return shared;
}
- (id) init
{
const NSRect contentRect = NSMakeRect(100, 100, 276, 420);
self = [super initWithContentRect: contentRect
styleMask: NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask | NSUtilityWindowMask
backing: NSBackingStoreBuffered
defer: YES];
if (nil != self)
{
// Setup assignedCodepoints and visibleCodepointsArray
assignedCodepoints = [AssignedCodepoints() retain];
[self setVisibleCodepoints: assignedCodepoints];
[self setTitle: _(@"Character Panel")];
// Set up the table view
table = [[[NSTableView alloc] initWithFrame: NSMakeRect(0, 0, contentRect.size.width - 18, contentRect.size.height - 52)] autorelease];
// Set up table columns
{
NSTableColumn *col = [[[NSTableColumn alloc] initWithIdentifier: @"char"] autorelease];
[col setDataCell: [[[GSVerticallyCenteredTextFieldCell alloc] init] autorelease]];
[[col dataCell] setFont:[NSFont systemFontOfSize: 24]];
[[col dataCell] setAlignment: NSCenterTextAlignment];
[col setMinWidth: 40];
[col setWidth: 40];
[table addTableColumn: col];
}
{
NSTableColumn *col = [[[NSTableColumn alloc] initWithIdentifier: @"name"] autorelease];
[col setDataCell: [[[GSVerticallyCenteredTextFieldCell alloc] init] autorelease]];
[[col dataCell] setFont:[NSFont systemFontOfSize: 10]];
[[col headerCell] setStringValue: _(@"Name")];
[col setWidth: 195];
[table addTableColumn: col];
}
{
NSTableColumn *col = [[[NSTableColumn alloc] initWithIdentifier: @"code"] autorelease];
[col setDataCell: [[[GSVerticallyCenteredTextFieldCell alloc] init] autorelease]];
[[col dataCell] setFont:[NSFont systemFontOfSize: 10]];
[[col dataCell] setAlignment: NSCenterTextAlignment];
[[col headerCell] setStringValue: _(@"Code Point")];
[col setMinWidth: 80];
[col setWidth: 80];
[table addTableColumn: col];
}
{
NSTableColumn *col = [[[NSTableColumn alloc] initWithIdentifier: @"block"] autorelease];
[col setDataCell: [[[GSVerticallyCenteredTextFieldCell alloc] init] autorelease]];
[[col dataCell] setFont:[NSFont systemFontOfSize: 10]];
[[col headerCell] setStringValue: _(@"Unicode Block")];
[col setMinWidth: 140];
[table addTableColumn: col];
}
[table setRowHeight: 32];
[table setDataSource: self];
[table setDelegate: self];
// Allow dragging out of the application
[table setDraggingSourceOperationMask:NSDragOperationCopy forLocal:NO];
// Set up scroll view
{
NSScrollView *scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(9, 41, contentRect.size.width - 18, contentRect.size.height - 52)];
[scrollView setDocumentView: table];
[scrollView setHasHorizontalScroller: YES];
[scrollView setHasVerticalScroller: YES];
[scrollView setBorderType: NSBezelBorder];
[scrollView setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)];
[[self contentView] addSubview: scrollView];
[scrollView release];
}
// Set up search field
{
searchfield = [[NSSearchField alloc] initWithFrame: NSMakeRect(9,9,186,22)];
[searchfield setTarget: self];
[searchfield setAction: @selector(search:)];
[[self contentView] addSubview: searchfield];
[searchfield release];
}
}
return self;
}
- (void)dealloc
{
[assignedCodepoints release];
[visibleCodepoints release];
[super dealloc];
}
- (void)search: (id)sender
{
NSString *str = [searchfield stringValue];
if ([str length] == 0)
{
[self setVisibleCodepoints: assignedCodepoints];
}
else
{
NSIndexSet *set = CodepointsWithNameContainingSubstring(str);
[self setVisibleCodepoints: set];
}
[table reloadData];
}
- (NSUInteger) codepointAtVisibleRow:(NSUInteger)row
{
//FIXME: Use a binary search
NSUInteger curr = 0;
NSUInteger currValue = [visibleCodepoints firstIndex];
while (currValue != NSNotFound)
{
if (curr == row)
{
return currValue;
}
currValue = [visibleCodepoints indexGreaterThanIndex: currValue];
curr++;
}
return NSNotFound;
}
- (NSString *)characterForRow: (NSInteger)row
{
if (row > 0 && row < [visibleCodepoints count])
{
UChar32 utf32 = [self codepointAtVisibleRow: row];
UChar utf16buf[2];
int32_t utf16bufLength = 0;
UErrorCode error = U_ZERO_ERROR;
u_strFromUTF32(utf16buf, 2, &utf16bufLength, &utf32, 1, &error);
return [[[NSString alloc] initWithCharacters: utf16buf
length: utf16bufLength] autorelease];
}
return @"";
}
// NSTableViewDataSource protocol
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
{
return [visibleCodepoints count];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
UChar32 utf32 = [self codepointAtVisibleRow: row];
if ([[tableColumn identifier] isEqualToString: @"char"])
{
return [self characterForRow: row];
}
else if ([[tableColumn identifier] isEqualToString: @"name"])
{
UErrorCode error = U_ZERO_ERROR;
int32_t size = u_charName(utf32, U_UNICODE_CHAR_NAME, NULL, 0, &error);
if (size > 0)
{
char name[512];
error = U_ZERO_ERROR;
u_charName(utf32, U_UNICODE_CHAR_NAME, name, 512, &error);
NSString *nameObj = [[[NSString alloc] initWithBytes: name
length: size
encoding: NSASCIIStringEncoding] autorelease];
return [[nameObj lowercaseString] capitalizedString];
}
return @"";
}
else if ([[tableColumn identifier] isEqualToString: @"code"])
{
return [NSString stringWithFormat:@"U+%04X", (int)utf32];
}
else if ([[tableColumn identifier] isEqualToString: @"block"])
{
int32_t val = u_getIntPropertyValue(utf32, UCHAR_BLOCK);
const char *name = u_getPropertyValueName(UCHAR_BLOCK, val, U_LONG_PROPERTY_NAME);
if (name != NULL)
{
return [[[[NSString alloc] initWithBytes: name
length: strlen(name)
encoding: NSASCIIStringEncoding] autorelease] stringByReplacingOccurrencesOfString: @"_" withString: @" "];
}
}
return nil;
}
- (BOOL)tableView:(NSTableView *)aTableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard
{
NSString *str = [self characterForRow: [rowIndexes firstIndex]];
[pboard declareTypes: [NSArray arrayWithObject: NSStringPboardType]
owner: nil];
[pboard setString: str
forType: NSStringPboardType];
return YES;
}
@end
#else // !(defined(HAVE_UNICODE_UCHAR_H) && defined(HAVE_UNICODE_USTRING_H))
@implementation GSCharacterPanel
+ (GSCharacterPanel *) sharedCharacterPanel
{
return nil;
}
@end
#endif

View file

@ -47,6 +47,7 @@
#import "AppKit/NSPanel.h"
#import "AppKit/NSButton.h"
#import "AppKit/NSBox.h"
#import "GNUstepGUI/GSCharacterPanel.h"
#import "GSGuiPrivate.h"
@ -516,6 +517,7 @@ static float sizes[] = {4.0, 6.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0,
NSRect revertButtonRect = {{83, 8}, {71, 24}};
NSRect previewButtonRect = {{162, 8}, {71, 24}};
NSRect setButtonRect = {{241, 8}, {71, 24}};
NSRect characterPanelButtonRect = {{8, 8}, {24, 24}};
NSView *v;
NSView *topArea;
NSView *bottomArea;
@ -531,6 +533,7 @@ static float sizes[] = {4.0, 6.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0,
NSButton *revertButton;
NSButton *previewButton;
NSButton *setButton;
NSButton *characterPanelButton;
NSBox *slash;
unsigned int style = NSTitledWindowMask | NSClosableWindowMask
@ -718,6 +721,21 @@ static float sizes[] = {4.0, 6.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0,
[self setDefaultButtonCell: [setButton cell]];
RELEASE(setButton);
// Character Panel button
{
NSString *label;
unichar labelchars[2] = {0x03b1, 0x03b2}; // alpha, beta
label = [[[NSString alloc] initWithCharacters: labelchars
length: 2] autorelease];
characterPanelButton = [[NSButton alloc] initWithFrame: characterPanelButtonRect];
[characterPanelButton setTitle: label];
[characterPanelButton setAction: @selector(characterPanel:)];
[characterPanelButton setTarget: self];
[bottomArea addSubview: characterPanelButton];
RELEASE(characterPanelButton);
}
// set up the next key view chain
[familyBrowser setNextKeyView: faceBrowser];
[faceBrowser setNextKeyView: sizeField];
@ -822,6 +840,11 @@ static float sizes[] = {4.0, 6.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0,
isMultiple: _multiple];
}
- (void) characterPanel: (id)sender
{
[[GSCharacterPanel sharedCharacterPanel] orderFront: nil];
}
- (NSFont *) _fontForSelection: (NSFont *)fontObject
{
float size;

41
config/icu.m4 Normal file
View file

@ -0,0 +1,41 @@
AC_DEFUN([AC_CHECK_ICU], [
ok=no
if test -z "$ICU_CONFIG"; then
AC_PATH_PROG(ICU_CONFIG, icu-config, no)
fi
if test "$ICU_CONFIG" = "no" ; then
echo "Could not find the icu-config script."
echo "Please ensure that it is in your path."
echo "See http://site.icu-project.org/ for help."
else
ICU_VERSION=`$ICU_CONFIG --version`
AC_MSG_CHECKING(for ICU >= $1)
found=`expr $ICU_VERSION \>= $1`
if test "$found" = "1" ; then
AC_MSG_RESULT(yes)
ok=yes
AC_MSG_CHECKING(ICU_LIBS)
ICU_LIBS=`$ICU_CONFIG --ldflags-libsonly`
AC_MSG_RESULT($ICU_LIBS)
AC_MSG_CHECKING(ICU_LDFLAGS)
ICU_LDFLAGS=`$ICU_CONFIG --ldflags-searchpath`
AC_MSG_RESULT($ICU_LDFLAGS)
else
ICU_LIBS=""
ICU_LDFLAGS=""
## Either perform custom action or print error message
ifelse([$3], ,echo "can't find ICU >= $1 (got $ICU_VERSION)",)
fi
AC_SUBST(ICU_LIBS)
fi
if test $ok = yes; then
ifelse([$2], , :, [$2])
else
ifelse([$3], , AC_MSG_ERROR([Library requirements (ICU) not met.]), [$3])
fi
])

135
configure vendored
View file

@ -609,6 +609,9 @@ GSCUPS_CFLAGS
have_cups
BUILD_SPEECH
BUILD_SOUND
HAVE_ICU
ICU_LIBS
ICU_CONFIG
IMAGEMAGICK_LIBS
IMAGEMAGICK_CFLAGS
PKG_CONFIG_LIBDIR
@ -691,6 +694,7 @@ enable_png
enable_ungif
enable_libgif
enable_imagemagick
enable_icu
enable_aspell
enable_sound
enable_speech
@ -1334,6 +1338,7 @@ Optional Features:
--disable-ungif Disable libungif-based GIF support
--enable-libgif Enable libgif-based GIF support
--disable-imagemagick Disable ImageMagick support
--disable-icu Disable International Components for Unicode
--disable-aspell Disable aspell for spellchecker
--disable-sound Disable sound
--disable-speech Disable speech server
@ -5630,6 +5635,136 @@ fi
fi
#--------------------------------------------------------------------
# Check for International Components for Unicode
# See DEPENDENCIES POLICY at the start of thsi file.
#--------------------------------------------------------------------
HAVE_ICU=0
# Check whether --enable-icu was given.
if test "${enable_icu+set}" = set; then :
enableval=$enable_icu;
else
enable_icu=yes
fi
if test $enable_icu = yes; then
ok=no
if test -z "$ICU_CONFIG"; then
# Extract the first word of "icu-config", so it can be a program name with args.
set dummy icu-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_path_ICU_CONFIG+set}" = set; then :
$as_echo_n "(cached) " >&6
else
case $ICU_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_ICU_CONFIG="$ICU_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_ICU_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
test -z "$ac_cv_path_ICU_CONFIG" && ac_cv_path_ICU_CONFIG="no"
;;
esac
fi
ICU_CONFIG=$ac_cv_path_ICU_CONFIG
if test -n "$ICU_CONFIG"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICU_CONFIG" >&5
$as_echo "$ICU_CONFIG" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
fi
if test "$ICU_CONFIG" = "no" ; then
echo "Could not find the icu-config script."
echo "Please ensure that it is in your path."
echo "See http://site.icu-project.org/ for help."
else
ICU_VERSION=`$ICU_CONFIG --version`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ICU >= 4.0" >&5
$as_echo_n "checking for ICU >= 4.0... " >&6; }
found=`expr $ICU_VERSION \>= 4.0`
if test "$found" = "1" ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
ok=yes
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking ICU_LIBS" >&5
$as_echo_n "checking ICU_LIBS... " >&6; }
ICU_LIBS=`$ICU_CONFIG --ldflags-libsonly`
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICU_LIBS" >&5
$as_echo "$ICU_LIBS" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking ICU_LDFLAGS" >&5
$as_echo_n "checking ICU_LDFLAGS... " >&6; }
ICU_LDFLAGS=`$ICU_CONFIG --ldflags-searchpath`
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICU_LDFLAGS" >&5
$as_echo "$ICU_LDFLAGS" >&6; }
else
ICU_LIBS=""
ICU_LDFLAGS=""
## Either perform custom action or print error message
fi
fi
if test $ok = yes; then
have_icu=yes
else
have_icu=no
fi
if test "$have_icu" = "yes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
for ac_header in unicode/uchar.h unicode/ustring.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
fi
done
LIBS="$LIBS $ICU_LIBS"
LDFLAGS="$LDFLAGS $ICU_LDFLAGS"
LDIR_FLAGS="$LDIR_FLAGS $ICU_LDFLAGS"
HAVE_ICU=1
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The International Components for Unicode (ICU) development headers and libraries do not appear to be available on this system." >&5
$as_echo "$as_me: WARNING: The International Components for Unicode (ICU) development headers and libraries do not appear to be available on this system." >&2;}
fi
fi
#--------------------------------------------------------------------
# Check for the spelling lib, for the built-in spell checker...
# Note: you might want to disable aspell on MacOSX, as it linkes in

View file

@ -23,6 +23,9 @@
# Free Software Foundation, 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
builtin(include, config/icu.m4)dnl
AC_INIT
AC_CONFIG_SRCDIR([Source/NSApplication.m])
@ -368,6 +371,31 @@ AS_IF([test "$enable_imagemagick" = "yes"], [
[AC_DEFINE([HAVE_IMAGEMAGICK], [0], [Don't have ImageMagick])])
])
#--------------------------------------------------------------------
# Check for International Components for Unicode
# See DEPENDENCIES POLICY at the start of thsi file.
#--------------------------------------------------------------------
HAVE_ICU=0
AC_ARG_ENABLE(icu,
[ --disable-icu Disable International Components for Unicode],,
enable_icu=yes)
if test $enable_icu = yes; then
AC_CHECK_ICU(4.0, have_icu=yes, have_icu=no)
if test "$have_icu" = "yes"; then
AC_MSG_RESULT(yes)
AC_CHECK_HEADERS(unicode/uchar.h unicode/ustring.h)
LIBS="$LIBS $ICU_LIBS"
LDFLAGS="$LDFLAGS $ICU_LDFLAGS"
LDIR_FLAGS="$LDIR_FLAGS $ICU_LDFLAGS"
HAVE_ICU=1
else
AC_MSG_RESULT(no)
AC_MSG_WARN([The International Components for Unicode (ICU) development headers and libraries do not appear to be available on this system.])
fi
fi
AC_SUBST(HAVE_ICU)
#--------------------------------------------------------------------
# Check for the spelling lib, for the built-in spell checker...
# Note: you might want to disable aspell on MacOSX, as it linkes in