views:

53

answers:

1

hi..

i want to run my view based window application with ticker.i have code for ticker but it is in cocoa.. so how can i integrate cocoa application in my project.?

this is TickerView.h file

#import <Cocoa/Cocoa.h>


@interface TickerView : NSTextView {
 @private
  NSTimer     *mTimer;
  double      mOffset;
}
- (NSString *)stringValue;
- (void)setStringValue:(NSString *)stringValue;

- (void)appendString:(NSString *)s;

- (IBAction)startAnimation:(id)sender;
- (IBAction)stopAnimation:(id)sender;

@end

This is TickerView.m file

#import "TickerView.h"


@implementation TickerView

- (id)initWithFrame:(NSRect)frame {
  self = [super initWithFrame:frame];
  if (self) {
    [self setEditable:NO];
    NSTextContainer *container = [self textContainer];
    [container setWidthTracksTextView:NO];
    [container setContainerSize:NSMakeSize(99999., frame.size.height)];
  }
  return self;
}

- (void)dealloc {
  [self stopAnimation:self];
  [super dealloc];
}

- (void)drawRect:(NSRect)rect {
  [super drawRect:rect];
}

- (NSString *)stringValue {
  return [[self textStorage] string];
}

- (NSDictionary *)standardAttributes {
  return [NSDictionary dictionaryWithObjectsAndKeys: 
    [NSFont fontWithName:@"Helvetica" size:([self frame].size.height * 0.8)], NSFontAttributeName,
    [NSColor redColor], NSForegroundColorAttributeName,
    nil];
}

- (void)setStringValue:(NSString *)s {
  NSRange fullRange = NSMakeRange(0, [[self textStorage] length]);
  NSAttributedString *sa = [[[NSAttributedString alloc]initWithString:s attributes:[self standardAttributes]] autorelease];
  [[self textStorage] replaceCharactersInRange:fullRange withAttributedString:sa];
}

- (void)appendString:(NSString *)s {
  NSRange endRange = NSMakeRange([[self textStorage] length], 0);
  NSAttributedString *sa = [[[NSAttributedString alloc]initWithString:s attributes:[self standardAttributes]] autorelease];
  [[self textStorage] replaceCharactersInRange:endRange withAttributedString:sa];
}


- (IBAction)startAnimation:(id)sender {
  if (nil == mTimer) {
    mTimer = [NSTimer scheduledTimerWithTimeInterval:1./60. target:self selector:@selector(step:) userInfo:nil repeats:YES];
  }
}


- (IBAction)stopAnimation:(id)sender {
  if (mTimer) {
    [mTimer invalidate];
    [mTimer release];
    mTimer = nil;
  }
}

- (void)step:(NSTimer *)timer {
  mOffset -= 2; // pixels per tick
  [self setTextContainerInset:NSMakeSize(mOffset, 0)];
  [self setNeedsDisplay:YES];
}


@end
A: 

You can't just drop it in (as far as I know).

I'd do it by changing your inheritance from NSTextView to UILabel and reading the docs for that. then just work through the code bit by bit until it works ;)

deanWombourne
thanks for your suggetion..but it still not working.
Pradeep
Going to need more information than 'not working' ;) - if you edit you question you can add more details.
deanWombourne
i made changes in my code as per u said..but it still gives me following error..i am new to iphone application programming..'NSTextContainer' undeclared (first use in this function)'container' undeclared (first use in this function)'font' undeclared (first use in this function) 'NSFontAttributeName' undeclared (first use in this function)/ 'textColor' undeclared (first use in this function)'NSForegroundColorAttributeName' undeclared (first use in this function)please guide me
Pradeep