Hi,

I am sure I am just missing a single line of code, but I can't understand the following behavior:
This code is where the issue occours:
- (void)refreshButtonsEnabledState
{
NSLog(@"%d", [[[tabView selectedTabViewItem] label] isEqualToString:@"Current/Custom"] && [movieFile.movieMetaData isCreated]); [toggleWriteCheckMarksButton setEnabled:[[[tabView selectedTabViewItem] label] isEqualToString:@"Current/Custom"] && [movieFile.movieMetaData isCreated]];
        [resetMetaDataButton setEnabled:[movieFile.movieMetaData isCreated]];
}

Now I am sure some of you might think this looks horrible, and it probably is. This is my first cocoa project, and I started out with the best intentions, but it has now unfortunately degraded to 'lets just get it to work' rather then following good design principles :(

Anyway, to help show what the problem is, I have made a screen recording showing the interface, the button in question and the console where you can observe the NSLog statement above being executed.
Screen recording: http://xrl.us/be9c6a

The button in question is the one labeled "Toggle" (the middle of the middle three), and really the one to the right of it labeled "Reset". The desired behavior is for these to be disabled as long as there is no files selected or loaded (entry in the right hand NSTableView), when a file is selected the movieFile variable is set to the file, and it's movieMetaData is created. When no file is selected, movieFile is set to nil. When the second tab is selected, "Toggle" should disable while "Reset" stays enabled. Once the file is removed (ie no files in the NSTableView) both buttons should disable, and it is this that fails. From the console, I can see that the method "refreshButtonsEnabledState" gets called and detects the right set of states (ie disable buttons; at least we know for sure that the "Toggle" one should disable) but this does not happen until I (I am guessing) force the window/view to refresh by selecting the other tab.

I have tried adding both:
[[[self window] view] setNeedsDisplay:YES];
or
[toggleWriteCheckMarksButton setNeedsDisplay:YES];

to the end of the "refreshButtonsEnabledState" method, but no dice.
I am sure I am doing all of this WAY too manual, and that there are all kinds of bindings I could use to accomplish this, but after struggling with bindings for a while now, I have opted to do more stuff manually. As this is a small bug, and I will probably be the only one to ever use this app, it's a small issue, but an annoyance even so. I would love for someone to explain either what I am doing wrong, or what to add to fix the issue.

Thanks for your time,
Chris
_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

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

Reply via email to