1/* All Rights reserved */
2
3#include <AppKit/AppKit.h>
4#include "GormFontViewController.h"
5
6static GormFontViewController *gorm_font_cont = nil;
7
8@implementation GormFontViewController
9+ (GormFontViewController *) sharedGormFontViewController
10{
11  if (gorm_font_cont == nil)
12    {
13      gorm_font_cont = [[self alloc] init];
14    }
15  return gorm_font_cont;
16}
17- (id) init
18{
19  self = [super init];
20  if (self != nil)
21    {
22      // load the gui...
23      if (![NSBundle loadNibNamed: @"GormFontView"
24		     owner: self])
25	{
26	  NSLog(@"Could not open gorm GormFontView");
27	  return nil;
28	}
29      [[NSFontManager sharedFontManager] setDelegate: self];
30    }
31  return self;
32}
33- (NSFont *) convertFont: (NSFont *)aFont
34{
35  float size;
36  NSFont *font;
37
38  // If aFont isn't nil and the button is off then set the size
39  // to the size of the passed in font.
40
41  size = (aFont && [encodeButton state] == NSOffState)
42   ? [aFont pointSize] : 0.0;
43
44  switch([fontSelector indexOfSelectedItem])
45    {
46    default:
47    case 0: // selected font
48      font = (aFont) ? aFont :
49       [[NSFontManager sharedFontManager] selectedFont];
50      if (!font) font = [NSFont userFontOfSize: size];
51      break;
52    case 1: // bold system font
53      font = [NSFont boldSystemFontOfSize: size];
54      break;
55    case 2: // system font
56      font = [NSFont systemFontOfSize: size];
57      break;
58    case 3: // user fixed font
59      font = [NSFont userFixedPitchFontOfSize: size];
60      break;
61    case 4: // user font
62      font = [NSFont userFontOfSize: size];
63      break;
64    case 5: // title bar font
65      font = [NSFont titleBarFontOfSize: size];
66      break;
67    case 6: // menu font
68      font = [NSFont menuFontOfSize: size];
69      break;
70    case 7: // message font
71      font = [NSFont messageFontOfSize: size];
72      break;
73    case 8: // palette font
74      font = [NSFont paletteFontOfSize: size];
75      break;
76    case 9: // tooltops font
77      font = [NSFont toolTipsFontOfSize: size];
78      break;
79    case 10: // control content font
80      font = [NSFont controlContentFontOfSize: size];
81      break;
82    case 11:
83      font = [NSFont labelFontOfSize: size];
84      break;
85    }
86
87  return font;
88}
89- (void) selectFont: (id)sender
90{
91  NSFontManager *fontManager = [NSFontManager sharedFontManager];
92  NSFont *font;
93
94  font = [self convertFont: nil];
95
96  [fontManager setSelectedFont: font isMultiple: NO];
97
98  if ([fontSelector indexOfSelectedItem] == 0)
99    {
100      [encodeButton setEnabled: NO];
101      [encodeButton setState: NSOffState];
102    }
103  else
104    {
105      [encodeButton setEnabled: YES];
106      [encodeButton setState: NSOffState];
107    }
108}
109
110- (id) view
111{
112  return view;
113}
114
115- (void) mouseDragged: (NSEvent *)event
116{
117  // here to make certain we don't crash..
118}
119
120- (void) flagsChanged: (NSEvent *)event
121{
122  // here to make certain we don't crash..
123}
124
125@end
126