Merge pull request #10 from heracek/19095

Code Review for Job #19095
This commit is contained in:
Philip Rosedale 2013-03-04 16:59:53 -08:00
commit f3d086f6dd
4 changed files with 88 additions and 2 deletions

View file

@ -21,7 +21,7 @@ endif (APPLE)
configure_file(InterfaceConfig.h.in ${PROJECT_BINARY_DIR}/includes/InterfaceConfig.h)
# grab the implementation and header files from src dir
file(GLOB INTERFACE_SRCS src/*.cpp src/*.h)
file(GLOB INTERFACE_SRCS src/*.mm src/*.cpp src/*.h)
if (APPLE)
# set how the icon shows up in the Info.plist file

View file

@ -0,0 +1,8 @@
#ifndef __interface__InterfaceMacOSX
#define __interface__InterfaceMacOSX
class Oscilloscope;
void initMacOSXMenu(Oscilloscope *audioScope);
#endif

View file

@ -0,0 +1,68 @@
#include "Oscilloscope.h"
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
#import "InterfaceMacOSX.h"
@class InterfaceMainMenuTarget;
static InterfaceMainMenuTarget *sharedInterfaceMainMenuTarget = nil;
static Oscilloscope *sharedAudioScope;
@interface InterfaceMainMenuTarget : NSObject
@property (strong, nonatomic) NSMenuItem *scopeAudioMenuItem;
@property (strong, nonatomic) NSMenuItem *scopeNoneMenuItem;
@end
@implementation InterfaceMainMenuTarget
- (void)scopeAudioAction {
sharedAudioScope->setState(true);
[self.scopeAudioMenuItem setState:NSOnState];
[self.scopeNoneMenuItem setState:NSOffState];
}
- (void)scopeNoneAction {
sharedAudioScope->setState(false);
[self.scopeAudioMenuItem setState:NSOffState];
[self.scopeNoneMenuItem setState:NSOnState];
}
@end
void initMacOSXMenu(Oscilloscope *audioScope) {
@autoreleasepool {
if (NSApp) {
if (!sharedInterfaceMainMenuTarget) {
sharedInterfaceMainMenuTarget = [[InterfaceMainMenuTarget alloc] init];
}
sharedAudioScope = audioScope;
NSMenu *mainMenu = [NSApp mainMenu];
NSMenuItem *scopeMenuItem = [mainMenu insertItemWithTitle:@"Scope"
action:nil
keyEquivalent:@""
atIndex:3];
NSMenu *scopeMenu = [[[NSMenu alloc] init] initWithTitle:@"Scope"];
[scopeMenuItem setSubmenu:scopeMenu];
sharedInterfaceMainMenuTarget.scopeAudioMenuItem = [scopeMenu addItemWithTitle:@"Audio"
action:@selector(scopeAudioAction)
keyEquivalent:@""];
[sharedInterfaceMainMenuTarget.scopeAudioMenuItem setTarget:sharedInterfaceMainMenuTarget];
[sharedInterfaceMainMenuTarget.scopeAudioMenuItem setState:NSOnState];
sharedInterfaceMainMenuTarget.scopeNoneMenuItem = [scopeMenu addItemWithTitle:@"None"
action:@selector(scopeNoneAction)
keyEquivalent:@""];
[sharedInterfaceMainMenuTarget.scopeNoneMenuItem setTarget:sharedInterfaceMainMenuTarget];
}
}
}

View file

@ -44,6 +44,12 @@
#include "Oscilloscope.h"
#include "UDPSocket.h"
#ifdef __APPLE__
#include "InterfaceMacOSX.h"
#endif
using namespace std;
int audio_on = 1; // Whether to turn on the audio support
@ -956,7 +962,11 @@ int main(int argc, char** argv)
printf( "Init() complete.\n" );
glutTimerFunc(1000, Timer, 0);
#ifdef __APPLE__
initMacOSXMenu(&audioScope);
#endif
glutMainLoop();
::terminate();