| Article: |
Movies and Menus | |
| Subject: | It doesn't play mp3's. | |
| Date: | 2002-01-31 19:52:14 | |
| From: | michele | |
|
Response to: It doesn't play mp3's.
|
||
|
It works perfectly for me using mp3s creating by iTunes2.
|
||
Showing messages 1 through 7 of 7.
-
Thanks, some observations
2002-02-01 09:58:56 psheldon [View]
-
some isolations
2002-02-01 11:16:34 psheldon [View]
I used the original nib file before I started messing with autoresizing.
I was able to comment out your file types and get some action.
Now, I've lost autoresizing code, for, when I try to use it, the movie window dissappears.
The best I can show you is the code with the resizing stuff commented out so the window doesn't dissappear. I don't know how to make a cleaner isolation or leaner question presentation than showing this.
- (IBAction)openMovie:(id)sender
{
NSArray *fileTypes = [NSArray arrayWithObjects:@"mov", @"mpg",
@"mp3",
//@"MP3",NSFileTypeForHFSTypeCode('MPG3'),//michele
@"jpg", nil];
NSOpenPanel *oPanel = [NSOpenPanel openPanel];
int result = [oPanel runModalForDirectory:NSHomeDirectory() file:nil types:fileTypes];
if (result == NSOKButton)
{
//the following were added
NSWindow *window = [NSApp mainWindow];
NSRect frameView = [movieView frame];
NSSize viewSize;
NSArray *movieToOpen = [oPanel URLs];
NSURL *movieURL = [movieToOpen objectAtIndex:0];
NSMovie *movie = [[NSMovie alloc] initWithURL:movieURL byReference:NO];
[movieView showController:YES adjustingSize:YES];//michele
//the following were added (dimamarkman "FileTypes and Resizing" unless otherwise commented)
[window setTitle:[[[oPanel filenames] objectAtIndex:0] lastPathComponent]];
[movieView setMovie:movie];
//the following were added (dimamarkman "FileTypes and Resizing" unless otherwise commented)
//[movieView showController:YES adjustingSize:YES];//michele
//viewSize = [movieView sizeForMagnification:1.0];
//[movieView resizeWithMagnification:1.0];
[window makeKeyAndOrderFront: self];//michele
//viewSize.width = 2*frameView.origin.x + viewSize.width;
//viewSize.height = 2*frameView.origin.y + viewSize.height;
//[window setContentSize:viewSize];
[window display];//michele
}
}
-
some isolations
2002-02-01 13:11:27 michele [View]
Post a Reply
Article:
Movies and Menus
Subject: some isolations
Date: 2002-02-01 11:16:34
From: psheldon
Response to: Thanks, some observations
------------------------------------------------------------------------
I used the original nib file before I started messing with autoresizing.
I was able to comment out your file types and get some action.
Now, I've lost autoresizing code, for, when I try to use it, the movie window dissappears.
The best I can show you is the code with the resizing stuff commented out so the window doesn't dissappear. I don't know how to make a cleaner isolation or leaner question presentation than showing this.
- (IBAction)openMovie:(id)sender
{
NSArray *fileTypes = [NSArray arrayWithObjects:@"mov", @"mpg",
@"mp3", @"jpg", nil];
NSOpenPanel *oPanel = [NSOpenPanel openPanel];
int result = [oPanel runModalForDirectory:NSHomeDirectory() file:nil types:fileTypes];
if (result == NSOKButton)
{
NSRect frameView = [movieView frame];
NSSize viewSize;
NSArray *movieToOpen = [oPanel URLs];
NSURL *movieURL = [movieToOpen objectAtIndex:0];
NSMovie *movie = [[NSMovie alloc] initWithURL:movieURL byReference:NO];
if you don't autorelease here, you'll have to do it later.
This line:
NSWindow *window = [NSApp mainWindow];
is strictly equivalent to this one:
NSWindow *movieWindow = [movieView window];
because there is only one window at a time, this is the main window and
there is an outlet defined in Controller.h: IBOutlet NSMovieView *movieView;
This outlet is connected from Controller to NSMovieView view.
[window setTitle:[[[oPanel filenames] objectAtIndex:0] lastPathComponent]];
You'll have to set the movie, before showing the controller, resizing the view, make it key and displaying it, otherwise, the controller could not show and the size could not be adjusted to your movie.
[movieView setMovie:movie];
[movieView showController:YES adjustingSize:YES];//michele
Here comes the code for resizing window
In the nib file, do not set any springs to the custom view, because it would be applied when you resize together with the code for resizing. Then it'll be bloody.
For example: I've made the view in nib file: 20, 20 for margins 292, 203 for width and height
the window: 21, 53 for the margins 339, 243 for width and height
minimum size: 221, 153 maximum size: 800, 600
// Draw the movie at magnification 1
viewSize = [movieView sizeForMagnification:1.0];
[movieView resizeWithMagnification:1.0];
viewSize.width = 2*frameView.origin.x + viewSize.width;
viewSize.height = 2*frameView.origin.y + viewSize.height;
[window setContentSize:viewSize];
[window makeKeyAndOrderFront: self];//michele
[window display];//michele
}
}
Hope this helps you
Michèle
-
tried your ordering and no springs
2002-02-02 10:27:24 psheldon [View]
Note I have done mnc, minimum necessary change (actually alleged necessary change). My point is to not merely get something that works, but to learn how to isolate why something doesn't work, a much harder task but hope doable and rewarding. I don't have confidence in isolating my own mistakes in cocoa and "fear the old days" of spending huge amounts of time in debugging and being beat up by old men who had "gone to the dark side of the force" to judge others who couldn't get "death stars" operational in time.
Coding should be better than that. When I saw Inside Mac with its "managers" I thought to obsoletize these bogeys.
So, here goes mnc (from Sci Fi, "The End of Eternity", where misguided folks debug history and Noise Lambent teaches them another way):
- (IBAction)openMovie:(id)sender
{
NSArray *fileTypes = [NSArray arrayWithObjects:@"mov", @"mpg",
@"mp3",
@"gif",//my addition (works)
//@"MP3",NSFileTypeForHFSTypeCode('MPG3'),//michele
@"jpg", nil];
NSOpenPanel *oPanel = [NSOpenPanel openPanel];
int result = [oPanel runModalForDirectory:NSHomeDirectory() file:nil types:fileTypes];
if (result == NSOKButton)
{
//the following were added
//NSWindow *window = [NSApp mainWindow];//(dimamarkman)
NSWindow *window = [movieView window];//michele
NSRect frameView = [movieView frame];
NSSize viewSize;
NSArray *movieToOpen = [oPanel URLs];
NSURL *movieURL = [movieToOpen objectAtIndex:0];
NSMovie *movie = [[[NSMovie alloc] initWithURL:movieURL byReference:NO] autorelease];
//must come first --- michele
[movieView setMovie:movie];
//no springs in nib file --- michele (I cleaned target just to be safe)
//the following were added (dimamarkman unless otherwise commented)
[movieView showController:YES adjustingSize:YES];//michele
[window setTitle:[[[oPanel filenames] objectAtIndex:0] lastPathComponent]];
//the following were added (dimamarkman unless otherwise commented)
viewSize = [movieView sizeForMagnification:1.0];
[movieView resizeWithMagnification:1.0];
viewSize.width = 2*frameView.origin.x + viewSize.width;
viewSize.height = 2*frameView.origin.y + viewSize.height;
[window setContentSize:viewSize];
[window makeKeyAndOrderFront: self];//michele
[window display];//michele
}
}
- (IBAction)playMovie:(id)sender
{
[movieView start:self];
}
- (IBAction)pauseMovie:(id)sender
{
[movieView stop:self];
}
- (IBAction)toggleLoopMode:(id)sender
{
if ( [ContextualMenuToggleLoopItem state] == NSOnState ) {
[ContextualMenuToggleLoopItem setState:NSOffState];
[movieView setLoopMode:NSQTMovieNormalPlayback];
} else {
[ContextualMenuToggleLoopItem setState:NSOnState];
[movieView setLoopMode:NSQTMovieLoopingPlayback];
}
}
-
forgot to tell fact
2002-02-02 10:32:53 psheldon [View]
Window only disappears when I try to play an mp3! Sorry. Caught my omission immediately!
-
thanks michele
2002-02-03 21:56:46 psheldon [View]
Had to get a clear idea of what was going on to eliminate to the dumb fix. If folks had just left my question out there, I might have not gotten up enough pizzaz to go look for the obvious.
Gotta remember to thank and not merely congratulate myself when I get the fix, so that other folks keep their pizzaz. -
added if before size adjustment to avoid mp3's
2002-02-02 18:50:56 psheldon [View]
if (viewSize.width != 0 && viewSize.height != 0)
{
[movieView showcontroller:YES adjustingSize:YES];
...
}
else
[movieView showcontroller:YES adjustingSize:NO];
and it worked. So, my last second inclusion in above note on leaving the problem awhile proved the answer! I debugged myself in cocoa.



I went back to the original project from the column without resizing and which I had set at a huge window in the IB. Both contextual menus worked and made the controller appear.
Now, I have your code to make isolations on.
I also did some fooling in IB with allowing a minimimum window size beyond default. That's my priority now. But, I seem to be getting lost so I may bounce between your code isolations too and this.
Definitely food for thought.
Thanks.