Re: Running AppleScripts from an App using NSAppleScript

2015-04-28 Thread has

Dave wrote:

 I have a number of AppleScripts I’d want to run from my App. Each 
Script has a couple of parameters [...]


Example code here:

http://appscript.sourceforge.net/nsapplescript.html

The downside (one of them anyway) is that you have to do all of the 
Cocoa-AE packing and unpacking yourself. If you're passing complex 
data, I suggest pinching and adapting the AEMCodecs class from here:


https://bitbucket.org/hhas/appleeventbridge/src

If the scripts are part of your .app bundle, another option is to use 
the AppleScript-ObjC bridge, which allows you to call AS handlers 
directly from ObjC:


http://appscript.sourceforge.net/asoc.html

It's not perfect - there's no way to declare non-id signatures (you have 
to wrap and unwrap C primitives yourself) and some of the AE type 
bridging is problematic (NSDate/typeLongDateTime isn't automatically 
bridged, and the typeObjectSpecifier mapping is defective), but for most 
tasks it's the least painful option.


HTH

has
___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Bindings across view controllers in OS X storyboards

2015-04-28 Thread Rick Mann
I have a window made up of a couple of NSSplitViewControllers and custom view 
controllers. It's mostly a master-detail type of thing, where the selected item 
in the first split sets up the second, and a selected item there sets up the 
third.

Thing is, I don't see a good way to bind from one view controller to the other. 
I could subclass NSSplitViewController, override -prepareForSegue:, and inject 
references to the NSArrayControllers that way, but that means subclassing 
NSSplitViewController, which seems rather lame.

IMO, IB has never adequately address connecting across view controllers, and 
it's so frequently required, I'm surprised.

Or, am I missing some glaringly obvious way of doing this? The WWDC 2014 s212 
talk on this glossed over this problem.

-- 
Rick Mann
rm...@latencyzero.com



___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Cocoa window stops responding

2015-04-28 Thread Nisar Ahmed
I think I have found the culprit, I have subclassed NSOpenGLView where in
drawRect, I am rendering a IOSurface based texture using CVDisplayLink,
although I don't know why it is causing the screen to freeze but when I
moved the rendering code from CVDisplayLink to dispatch timer the problem
seems to have disappeared. Inside CVDisplay callback I was calling [view
setNeedsDisplay:YES] which I think is a correct way of calling drawRect
from background thread? while inside timer I am directly calling [view
drawRect:NSZeroRect].

I still need to know why...

On Mon, Apr 27, 2015 at 3:22 PM, Uli Kusterer witness.of.teacht...@gmx.net
wrote:

 On 27 Apr 2015, at 10:53, Nisar Ahmed nisar@gmail.com wrote:
  My application has a UI having a main window which contains many views
 such
  as NSTableView, NSOutlineView, NSOpenGLView, many NSTextFields etc...
 
  The applications works normally but after some time the UI stops
 responding
  to the mouse clicks, the application does not hang but it seems that all
  the views stop redrawing itself. I have tried many things but fails to
  prevent or reproduce the behaviour. Need some advice on how to fix or
  atleast find out what is causing such behaviour.
 
  I am updating all UI controls on the main thread and using Cocoa bindings
  heavily.. apparently there is no memory leaks, I am using Xcode 6.1 on
  Mavericks

  My first suspects if a window stops drawing are always:

 1) Drawing attributes that bleed out (e.g. setting the color to white at
 some point but never back to black, so the next iteration starts out with
 white instead of the default black) and aren’t wrapped in saveGState

 2) Calls to setNeedsDisplay: or display or the like while a drawRect: is
 running (e.g. setNeedsDisplay: causes drawRect: which sets a property that
 calls setNeedsDisplay: again which causes a drawRect: on the next run loop
 iteration, making your Mac constantly redraw stuff until that’s all it
 does, or even worse manipulating the view hierarchy while the OS is
 iterating views to draw them).

 3) Threaded code that manipulates the UI from another thread than the main
 thread. There are very few, very specific circumstances under which you may
 manipulate and draw views and view hierarchies on a non-main thread (or
 call setNeedsDisplay: or display), so if you do not for a fact know that
 this is documented as being OK, you probably shouldn’t do it. This case in
 particular has often screwed up drawing in such a way that the entire
 window just became a white sheet.

 I presume you’ve done the usual, i.e. ran Analyze and fixed all it
 complained about, as well as Instruments.

 Cheers,
 -- Uli Kusterer
 “The Witnesses of TeachText are everywhere...”
 http://zathras.de


___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

New information. Was: Re: Weird UITableView problem

2015-04-28 Thread William Squires
Thinking this was a Swift problem, I recreated the project, but with ObjC as 
the language. I set up the UI the same as with the Swift project. It too, only 
shows a subset of the array, only this one shows 15 rows, not 13. Here's the 
ViewController.m

//
//  ViewController.m
//  SimpleObjCTable
//
//  Created by William Squires on 4/28/15.
//  Copyright (c) 2015 William Squires. All rights reserved.
//

#import ViewController.h

@interface ViewController ()

@property NSArray *dwarves;

@end

@implementation ViewController

- (void)viewDidLoad
{
[super viewDidLoad];
self.dwarves = [NSArray arrayWithObjects:@Sleepy,
@Sneezy,
@Bashful,
@Happy,
@Doc,
@Grumpy,
@Dopey,
@Thorin,
@Dorin,
@Nori,
@Ori,
@Balin,
@Dwalin,
@Fili,
@Kili,
@Oin, // These are not shown.
@Gloin,
@Bifur,
@Bofur,
@Bombur,
nil];
  
// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.
}

#pragma mark UITableView Methods

-(NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section
{
NSInteger theCount = [self.dwarves count];

NSLog(@theCount = %ld, theCount);
return theCount;
}

-(UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@indexPath.row = %ld, indexPath.row);
UITableViewCell *cell = [tableView 
dequeueReusableCellWithIdentifier:@SimpleTableIdentifier];
if (cell == nil)
  {
  cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
reuseIdentifier:@SimpleTableIdentifier];
  }
cell.textLabel.text = [self.dwarves objectAtIndex:indexPath.row];
return cell;
}

@end

running it gives me (in the debug console) 4 instances of theCount = 20, 
followed by 15 lines of indexPath.row = 0 up to indexPath.row = 14 (15 
total, which corresponds to the comment in the initialization line for dwarves 
= NSArray... line above.) In both cases (the Swift project, and the ObjC 
project) I use the default view (with the size class w:any, h:any) and pin the 
UITableView to the edges of the parent view.
  Now I'm totally lost as to why only a limited subset of the rows are being 
shown, especially given that tableView:numberOfRowsInSection: consistently 
returns 20 (the number of items initializing the array). HELP!!

On Apr 26, 2015, at 11:29 AM, William Squires wsqui...@satx.rr.com wrote:

 I made a fairly simple iOS app (Single View template, iPhone, Swift) that has 
 a UITableView. I've got it all hooked up, and running the project (in the 
 simulator) shows the table view, but only 13 (out of 20) rows are ever shown.
 
 here's the deal:
 
 ViewController.swift
 
 class ViewController: UIViewController, UITableViewDelegate, UITableViewSource
 {
 private let dwarves = [Sleepy,
   Sneezy,
   Bashful,
   Happy,
   Doc,
   Grumpy,
   Dopey,
   Thorin,
   Dorin,
   Nori,
   Ori,
   Balin,
   Dwalin,
   Fili,  // From here on, these might as well not exist 
 (index = 13)
   Kili,
   Oin,
   Gloin,
   Bifur,
   Bofur,
   Bombur
   ]
 let simpleTableIdentifier = SimpleTableIdentifier
 
 ...
 
 // MARK: UITableViewDataSource/UITableViewDelegate methods
  func tableView(tableView: UITableView, numberOfRowsInSection section: Int) 
 - Int
  {
  return dwarves.count
  }
 
  func tableView(tableView:UITableView, cellForRowAtIndexPath indexPath: 
 NSIndexPath) - UITableViewCell
  {
  var cell = 
 tableView.dequeueReusableCellWithIdentifier(simpleTableIdentifier) as? 
 UITableViewCell
  if (cell == nil)
{
cell = UITableViewCell(style: UITableViewCellStyle.Default, 
 reuseIdentifier: simpleTableIdentifier)
{
  cell!.textLabel?.text = dwarves[indexPath.row]
  return cell
  }
 }
 
 When run, only the first 13 names are shown in the table view; everything 
 from Fili on does not show up. I would expect 

Re: New information. Was: Re: Weird UITableView problem

2015-04-28 Thread Aaron Montgomery
Works for me. Not saying it doesn't work for you, but the problem isn't the 
code.

Created a fresh Single View Application iOS project.
Replaced ViewController.m source with the code below.
Added a UITableView to the View Controller's View and hooked up the DataSource 
to the View Controller.
Ran it in the Simulator.
Scrolled the table and could see all the dwarves.

Aaron

 On Apr 28, 2015, at 9:45 AM, William Squires wsqui...@satx.rr.com wrote:
 
 Thinking this was a Swift problem, I recreated the project, but with ObjC as 
 the language. I set up the UI the same as with the Swift project. It too, 
 only shows a subset of the array, only this one shows 15 rows, not 13. Here's 
 the ViewController.m
 
 //
 //  ViewController.m
 //  SimpleObjCTable
 //
 //  Created by William Squires on 4/28/15.
 //  Copyright (c) 2015 William Squires. All rights reserved.
 //
 
 #import ViewController.h
 
 @interface ViewController ()
 
 @property NSArray *dwarves;
 
 @end
 
 @implementation ViewController
 
 - (void)viewDidLoad
 {
 [super viewDidLoad];
 self.dwarves = [NSArray arrayWithObjects:@Sleepy,
@Sneezy,
@Bashful,
@Happy,
@Doc,
@Grumpy,
@Dopey,
@Thorin,
@Dorin,
@Nori,
@Ori,
@Balin,
@Dwalin,
@Fili,
@Kili,
@Oin, // These are not shown.
@Gloin,
@Bifur,
@Bofur,
@Bombur,
nil];
 
 // Do any additional setup after loading the view, typically from a nib.
 }
 
 - (void)didReceiveMemoryWarning
 {
 [super didReceiveMemoryWarning];
 
 // Dispose of any resources that can be recreated.
 }
 
 #pragma mark UITableView Methods
 
 -(NSInteger)tableView:(UITableView *)tableView 
 numberOfRowsInSection:(NSInteger)section
 {
 NSInteger theCount = [self.dwarves count];
 
 NSLog(@theCount = %ld, theCount);
 return theCount;
 }
 
 -(UITableViewCell *)tableView:(UITableView *)tableView 
 cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
 NSLog(@indexPath.row = %ld, indexPath.row);
 UITableViewCell *cell = [tableView 
 dequeueReusableCellWithIdentifier:@SimpleTableIdentifier];
 if (cell == nil)
  {
  cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
 reuseIdentifier:@SimpleTableIdentifier];
  }
 cell.textLabel.text = [self.dwarves objectAtIndex:indexPath.row];
 return cell;
 }
 
 @end
 
 running it gives me (in the debug console) 4 instances of theCount = 20, 
 followed by 15 lines of indexPath.row = 0 up to indexPath.row = 14 (15 
 total, which corresponds to the comment in the initialization line for 
 dwarves = NSArray... line above.) In both cases (the Swift project, and the 
 ObjC project) I use the default view (with the size class w:any, h:any) and 
 pin the UITableView to the edges of the parent view.
  Now I'm totally lost as to why only a limited subset of the rows are being 
 shown, especially given that tableView:numberOfRowsInSection: consistently 
 returns 20 (the number of items initializing the array). HELP!!
 
 On Apr 26, 2015, at 11:29 AM, William Squires wsqui...@satx.rr.com wrote:
 
 I made a fairly simple iOS app (Single View template, iPhone, Swift) that 
 has a UITableView. I've got it all hooked up, and running the project (in 
 the simulator) shows the table view, but only 13 (out of 20) rows are ever 
 shown.
 
 here's the deal:
 
 ViewController.swift
 
 class ViewController: UIViewController, UITableViewDelegate, 
 UITableViewSource
 {
 private let dwarves = [Sleepy,
  Sneezy,
  Bashful,
  Happy,
  Doc,
  Grumpy,
  Dopey,
  Thorin,
  Dorin,
  Nori,
  Ori,
  Balin,
  Dwalin,
  Fili,  // From here on, these might as well not exist 
 (index = 13)
  Kili,
  Oin,
  Gloin,
  Bifur,
  Bofur,
  Bombur
  ]
 let simpleTableIdentifier = SimpleTableIdentifier
 
 ...
 
 // MARK: UITableViewDataSource/UITableViewDelegate methods
 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) 
 - Int
 {
 return dwarves.count
 }
 
 func tableView(tableView:UITableView, 

Re: New information. Was: Re: Weird UITableView problem

2015-04-28 Thread William Squires

On Apr 28, 2015, at 12:15 PM, Quincey Morris 
quinceymor...@rivergatesoftware.com wrote:

 On Apr 28, 2015, at 09:45 , William Squires wsqui...@satx.rr.com wrote:
 
 shows 15 rows
 
 You keep saying “shows”, but you don’t say what this means. A table view can 
 only “show” as many rows as can fit between its top and bottom bounds. The 
 rest are “shown” by scrolling the view.
 
 So, how many rows can fit on the screen? Assuming that’s less than 20, does 
 every visible row “show” content, or are some of the visible rows blank? If 
 you try to scroll the view, is there no scroll bar and no scrollability? If 
 you can scroll it, do blank rows appear at the end?
 
 TBH, it sounds like you’ve forgotten that UITableView doesn’t instantiate 
 cell views for every row in the table, only for the visible rows plus enough 
 nearby rows to make scrolling work smoothly. The rest are instantiated lazily 
 as you scroll.
 
 
  In this case, it means all the rows that can be viewed; not only those that 
show up at the beginning, but those you can scroll to. Only 13 (or 15, for the 
ObjC project) are ever available. All the rows show content (namely, the 
strings in the initialized array, 'dwarves')
  Interestingly enough, if I recreate this project on Xcode 5 on 10.8.5, all 
the rows (20) are shown, plus a few blank ones at the end, if I select iPad 
as the simulator target. This may be because this earlier version doesn't 
support retina, and so the entire screen of the simulator is shown. In the 
original versions, (running on Xcode 6.something on 10.10.?) the whole 
simulator screen is taller than my iMac's screen can display, even for iPhone 
5s as the simulator target, thus I have to scroll the table view to see the 
remaining UITableViewCell instances.
  If I select iPhone Retina (4-inch) (again in the Xcode 5 project), I no 
longer get all 20 cells, and - in fact - the last cell visible, Dwalin, is 
cut off so you can't see all of the cell, even with the (table) view scrolled 
down all the way. This problem appears to have something to do with Retina 
support/simulation.


___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: New information. Was: Re: Weird UITableView problem

2015-04-28 Thread Quincey Morris
On Apr 28, 2015, at 10:57 , William Squires wsqui...@satx.rr.com wrote:
 
 the whole simulator screen is taller than my iMac's screen can display, even 
 for iPhone 5s as the simulator target, …

So change the display scale to 50% from the simulator’s Window menu.

 … thus I have to scroll the table view to see the remaining UITableViewCell 
 instances

No, you wouldn’t have to scroll the table view, you’d have to scroll the 
simulator’s window (but I don’t recall whether it does scroll).

Do you have a small sample project you can post to GitHub or DropBox or even 
email? It’d be interesting to see if others can see the same behavior.

___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: New information. Was: Re: Weird UITableView problem

2015-04-28 Thread Quincey Morris
On Apr 28, 2015, at 09:45 , William Squires wsqui...@satx.rr.com wrote:
 
 shows 15 rows

You keep saying “shows”, but you don’t say what this means. A table view can 
only “show” as many rows as can fit between its top and bottom bounds. The rest 
are “shown” by scrolling the view.

So, how many rows can fit on the screen? Assuming that’s less than 20, does 
every visible row “show” content, or are some of the visible rows blank? If you 
try to scroll the view, is there no scroll bar and no scrollability? If you can 
scroll it, do blank rows appear at the end?

TBH, it sounds like you’ve forgotten that UITableView doesn’t instantiate cell 
views for every row in the table, only for the visible rows plus enough nearby 
rows to make scrolling work smoothly. The rest are instantiated lazily as you 
scroll.




___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com