December 6, 2008 | Filed Under Cocoa | No Comments
Today I’ve played a bit with WebKit . I Want do something like Cocoa VBox View and NSScrollView but with more flexibility. Below you can see the example result.
The interesting part of this example is How to manage WebKit content, and how to add something dynamically.
I use webView:decidePolicyForNavigationAction:request:frame:decisionListener: of WebPolicyDelegate Protocol to handle my custom requests, in this way…
- (void)webView:(WebView *)sender
decidePolicyForNavigationAction:(NSDictionary *)actionInformation
request:(NSURLRequest *)request frame:(WebFrame *)frame
decisionListener:(id)listener
{
if ([[[request URL] path] isEqualToString:@"PATH to Handle"]) {
[listener ignore];
// Handle Request
} else {
[listener use];
}
}
…Then with a little bit of JavaScript I’ll set my dynamic content loaded from Database or somewhere else.
NSArray *args = [NSArray arrayWithObjects:@"Item1Content",
@"Hi, I'm Test 1 Content", nil];
[[webKit windowScriptObject] callWebScriptMethod:@"fillElement"
withArguments:args];
The fillElement method is a simple JS function like this document.getElementById(elem).innerHTML = data;
Here you can find the Source Code .
December 2, 2008 | Filed Under Cocoa | 8 Comments
Yesterday, I’ve written a simple Sidebar controller that can saves you some time and trouble with Cocoa Source List. Nodes and Folders can be drag and dropped into other folders or near other items and you can easily set badges on nodes.
Cocoa Sidebar
You can find the example Source Code Here.
And below you can see hot to add folders, nodes and set badges.
- (void)populateOutlineContents:(id)inObject {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[sidebar addRootFolder:@"1" name:@"DEVICES"];
[sidebar addChild:@"1.1" name:@"Machintosh HD"
icon:[NSImage imageNamed:NSImageNameComputer]
action:@selector(buttonPres:) target:self];
[sidebar addRootFolder:@"2" name:@"PLACES"];
[sidebar addChild:@"2.1"
url:NSHomeDirectory()
action:@selector(buttonPres:) target:self];
[sidebar addRootFolder:@"3" name:@"OTHER."];
[sidebar addChild:@"3.1" name:@"Bonjour"
icon:[NSImage imageNamed:NSImageNameBonjour]
action:@selector(buttonPres:) target:self];
[sidebar addChild:@"3.2" name:@"Users"
icon:[NSImage imageNamed:NSImageNameUserGroup]
action:@selector(buttonPres:) target:self];
[sidebar clearSelection];
// Add Badge to Node with Key
[sidebar setBadge:@"2.1" count:5];
[sidebar setBadge:@"3.2" count:7];
[pool release];
}
- (void)buttonPres:(id)sender {
NSLog(@"Button Press %@", [sender nodeTitle]);
}
November 28, 2008 | Filed Under Mac OS X , iPhone | 8 Comments
I’ve written a simple SQLite Wrapper with two Examples one for Mac and one for the iPhone. The Wrapper class has the same source code for both platforms .
Here you can find the Mac Example Source Code and the iPhone Example Source Code .
This is a simple usage example:
Sqlite *sqlite = [[Sqlite alloc] init];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory
stringByAppendingPathComponent:@"SQLiteTest.db"];
if (![sqlite open:writableDBPath])
return;
[sqlite executeNonQuery:@"CREATE TABLE test (key TEXT NOT NULL, value TEXT);"];
[sqlite executeNonQuery:@"DELETE FROM test;"];
[sqlite executeNonQuery:@"INSERT INTO test VALUES (?, ?);",
[Sqlite createUuid], @"PROVA"];
[sqlite executeNonQuery:@"INSERT INTO test VALUES (?, ?);",
[Sqlite createUuid], @"PROVA 2"];
[sqlite executeNonQuery:@"INSERT INTO test VALUES (?, ?);",
[Sqlite createUuid], @"PROVA 3"];
NSArray *results = [sqlite executeQuery:@"SELECT * FROM test;"];
for (NSDictionary *dictionary in results) {
NSLog(@"Row");
for (NSString *key in [dictionary keyEnumerator])
NSLog(@" - %@ %@", key, [dictionary objectForKey:key]);
}
[results release];
[sqlite release];
November 16, 2008 | Filed Under Cocoa | 1 Comment
Following the post of yesterday, today I’ve implemented a simple VBoxView (Vertical Box Layout) that allow you to lines up NSViews vertically.
Cocoa Scrollable NSViews VBox
Here you can find the example
Source Code .
November 15, 2008 | Filed Under Cocoa | No Comments
Today I’m playing a bit with Quartz and Cocoa Drawing system (that is based on Quartz).
I’ve made a simple example that you can see below where I’ve used custom NSView that draws an Image and a Bezier Path with some text inside, and around the Bezier Path there’s a Shadow.
Cocoa Drawing Example
…And this is the drawRect method source code of the custom NSView.
- (void)drawRect:(NSRect)frameRect {
[NSGraphicsContext saveGraphicsState];
[[NSColor colorWithCalibratedRed:0.64 green:0.66 blue:0.71 alpha:1.0] set];
NSRectFill(frameRect);
/* Draw Shadow */
NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowColor:[[NSColor blackColor] colorWithAlphaComponent:0.5]];
[shadow setShadowOffset:NSMakeSize(4.0, -4.0)];
[shadow setShadowBlurRadius:3.0];
[shadow set];
/* Draw Control */
NSRect myRect = NSMakeRect(80, 50, frameRect.size.width - 120, 60);
NSBezierPath *path = [NSBezierPath bezierPath];
[path setLineJoinStyle:NSRoundLineJoinStyle];
[path appendBezierPathWithRoundedRect:myRect xRadius:8.0 yRadius:8.0];
[path moveToPoint:NSMakePoint(80, 75)];
[path lineToPoint:NSMakePoint(65, 85)];
[path lineToPoint:NSMakePoint(80, 95)];
NSColor *startingColor = [NSColor colorWithCalibratedRed:0.90
green:0.92 blue:0.85 alpha:1.0];
NSColor *endingColor = [NSColor colorWithCalibratedRed:0.81
green:0.83 blue:0.76 alpha:1.0];
NSGradient *gradient = [[[NSGradient alloc] initWithStartingColor:startingColor
endingColor:endingColor] autorelease];
[path fill];
[gradient drawInBezierPath:path angle:90];
[NSGraphicsContext restoreGraphicsState];
[shadow release];
NSImage *image = [NSImage imageNamed:NSImageNameUser];
[image drawInRect:NSMakeRect(15, 50, 50, 50) fromRect:NSZeroRect
operation:NSCompositeSourceOver fraction:1.0];
NSString *string = [NSString stringWithString:@"Text\nMore Text"];
[string drawInRect:NSMakeRect(90, 60, frameRect.size.width - 140, 45)
withAttributes:nil];
}
November 9, 2008 | Filed Under Cocoa | No Comments
This morning I’ve created this FilterBar (take a look at the picture below). You can add custom NSView and you can manage you groups with delegates.
Cocoa Filterbar Demo
Below, I’ve added a movie… but it doesn’t [sizeToFit] the page… so here is the link of Cocoa Filterbar Demo . And here you can find the Cocoa Filterbar Souce .
November 8, 2008 | Filed Under Cocoa | No Comments
It’s a couple of days that I’m searching for something like QHBoxLayout (Qt Horizonal Box Layout) in Cocoa. There’s NSMatrix that do something like this… but it uses NSCell and it sets the same size for all the cells, so this is not what I want. My solution is a simple NSView subclass …
Example: Cocoa Horizontal Box
Continue reading Cocoa: Horizontal Box…
November 2, 2008 | Filed Under Cocoa | No Comments
Quick Look is a technology introduced in Mac OS X version 10.5 that enables client applications, such as Spotlight and the Finder, to display thumbnail images and full-size previews of documents.
Quick Look Example
Here you can Find the source code example: TestQuickLook.zip
« Previous Page —
Next Page »