199 QDialog *dialog =
new QDialog;
201 dialog->setWindowFlags(Qt::FramelessWindowHint|Qt::NoDropShadowWindowHint);
207 NSView *d = (NSView *)dialog->winId();
210 [d addSubview:textEditView];
211 [[d window] makeFirstResponder:textEditView];
216 NSFontManager *fm = [NSFontManager sharedFontManager];
217 NSFontPanel *fp = [fm fontPanel:YES];
219 [[NSColorPanel sharedColorPanel] setShowsAlpha:YES];
226 [[NSColorPanel sharedColorPanel] setAlphaValue:0];
228 dialog.setOption(QColorDialog::NoButtons,
true);
231 [[NSColorPanel sharedColorPanel] setAlphaValue:1];
236 [fp setDelegate:delegate];
241 [currentFontName release];
244 currentFontName = [[NSString stringWithUTF8String:originalVuoFont.fontName] retain];
249 NSFont *originalFont = [NSFont userFontOfSize:12];
254 currentColor = [[NSColor colorWithCalibratedRed:originalVuoFont.color.r green:originalVuoFont.color.g blue:originalVuoFont.color.b alpha:originalVuoFont.color.a] retain];
267 NSSize panelSize = [fp frame].size;
268 NSSize screenSize = [[fp screen] frame].size;
269 [fp setFrameTopLeftPoint:NSMakePoint(portLeftCenter.x() - panelSize.width, screenSize.height - portLeftCenter.y() + panelSize.height/2)];
273 const unsigned int buttonWidth = 80;
274 const unsigned int buttonHeight = 24;
275 const unsigned int buttonSep = 12;
276 NSView *accessoryView = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 4*buttonWidth+3*buttonSep, 2*buttonHeight+3*buttonSep)];
277 [fp setAccessoryView:accessoryView];
278 [accessoryView autorelease];
279 [fp setMinSize:NSMakeSize([accessoryView frame].size.width, [fp minSize].height)];
282 [accessoryDelegate autorelease];
286 NSSegmentedControl *alignmentControl = [[NSSegmentedControl alloc] initWithFrame:NSMakeRect(0, 0, buttonWidth+buttonSep+buttonWidth, buttonHeight)];
287 [alignmentControl setSegmentCount:3];
288 [alignmentControl setSelectedSegment:currentAlignment];
290 [alignmentControl setImage:[NSImage imageNamed:@"align-left"] forSegment:0];
291 [alignmentControl setImage:[NSImage imageNamed:@"align-center"] forSegment:1];
292 [alignmentControl setImage:[NSImage imageNamed:@"align-right"] forSegment:2];
294 [alignmentControl setTarget:accessoryDelegate];
295 [alignmentControl setAction:@selector(alignmentChanged:)];
297 [accessoryView addSubview:alignmentControl];
298 [alignmentControl autorelease];
301 int secondBaseline = buttonHeight+buttonSep;
302 int sliderWidth = buttonWidth+buttonSep+buttonWidth;
306 NSTextField *charSpacingLabel = [[NSTextField alloc] initWithFrame:NSMakeRect(0, secondBaseline+buttonSep, sliderWidth, buttonHeight)];
307 [charSpacingLabel setEditable:NO];
308 [charSpacingLabel setBordered:NO];
309 [charSpacingLabel setDrawsBackground:NO];
310 [charSpacingLabel setStringValue:@"Character Spacing"];
311 [charSpacingLabel setFont:[NSFont systemFontOfSize:[NSFont smallSystemFontSize]]];
312 [accessoryView addSubview:charSpacingLabel];
313 [charSpacingLabel autorelease];
315 NSSlider *charSpacingControl = [[NSSlider alloc] initWithFrame:NSMakeRect(0, secondBaseline, sliderWidth, buttonHeight)];
316 [charSpacingControl setNumberOfTickMarks:1];
317 [charSpacingControl setMinValue:0];
318 [charSpacingControl setMaxValue:2];
319 [charSpacingControl setDoubleValue:currentCharacterSpacing];
320 [[charSpacingControl cell] setControlSize:NSControlSizeSmall];
322 [charSpacingControl setTarget:accessoryDelegate];
323 [charSpacingControl setAction:@selector(charSpacingChanged:)];
325 [accessoryView addSubview:charSpacingControl];
326 [charSpacingControl autorelease];
331 NSTextField *lineSpacingLabel = [[NSTextField alloc] initWithFrame:NSMakeRect(2*buttonWidth+2*buttonSep, secondBaseline+buttonSep, sliderWidth, buttonHeight)];
332 [lineSpacingLabel setEditable:NO];
333 [lineSpacingLabel setBordered:NO];
334 [lineSpacingLabel setDrawsBackground:NO];
335 [lineSpacingLabel setStringValue:@"Line Spacing"];
336 [lineSpacingLabel setFont:[NSFont systemFontOfSize:[NSFont smallSystemFontSize]]];
337 [accessoryView addSubview:lineSpacingLabel];
338 [lineSpacingLabel autorelease];
340 NSSlider *lineSpacingControl = [[NSSlider alloc] initWithFrame:NSMakeRect(2*buttonWidth+2*buttonSep, secondBaseline, sliderWidth, buttonHeight)];
341 [lineSpacingControl setNumberOfTickMarks:1];
342 [lineSpacingControl setMinValue:0];
343 [lineSpacingControl setMaxValue:2];
344 [lineSpacingControl setDoubleValue:currentLineSpacing];
345 [[lineSpacingControl cell] setControlSize:NSControlSizeSmall];
347 [lineSpacingControl setTarget:accessoryDelegate];
348 [lineSpacingControl setAction:@selector(lineSpacingChanged:)];
350 [accessoryView addSubview:lineSpacingControl];
351 [lineSpacingControl autorelease];
358 NSButton *okButton = [[NSButton alloc] initWithFrame:NSMakeRect(3*buttonWidth+3*buttonSep,0,buttonWidth,buttonHeight)];
359 [okButton setKeyEquivalent:@"\r"];
360 [okButton setTitle:@"OK"];
361 [okButton setButtonType:NSButtonTypeMomentaryLight];
362 [okButton setBezelStyle:NSBezelStyleRounded];
363 [okButton setTarget:delegate];
364 [okButton setAction:@selector(okButtonPressed)];
365 [accessoryView addSubview:okButton];
366 [okButton autorelease];
369 NSButton *cancelButton = [[NSButton alloc] initWithFrame:NSMakeRect(2*buttonWidth+3*buttonSep,0,buttonWidth,buttonHeight)];
370 [cancelButton setKeyEquivalent:@"\E"];
371 [cancelButton setTitle:@"Cancel"];
372 [cancelButton setButtonType:NSButtonTypeMomentaryLight];
373 [cancelButton setBezelStyle:NSBezelStyleRounded];
374 [cancelButton setTarget:delegate];
375 [cancelButton setAction:@selector(cancelButtonPressed)];
376 [accessoryView addSubview:cancelButton];
377 [cancelButton autorelease];
382 int result = dialog->exec();
385 [[NSColorPanel sharedColorPanel] orderOut:nil];
396 if (result == QDialog::Accepted)
399 return json_object_get(originalValue);