69 lines
1.8 KiB
Text
69 lines
1.8 KiB
Text
|
#import "InstanceCheck.hpp"
|
||
|
#import "InstanceCheckMac.h"
|
||
|
#import "GUI_App.hpp"
|
||
|
|
||
|
@implementation OtherInstanceMessageHandlerMac
|
||
|
|
||
|
-(instancetype) init
|
||
|
{
|
||
|
self = [super init];
|
||
|
return self;
|
||
|
}
|
||
|
-(void)add_observer
|
||
|
{
|
||
|
NSLog(@"adding observer");
|
||
|
[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(message_update:) name:@"OtherPrusaSlicerInstanceMessage" object:nil suspensionBehavior:NSNotificationSuspensionBehaviorDeliverImmediately];
|
||
|
}
|
||
|
|
||
|
-(void)message_update:(NSNotification *)msg
|
||
|
{
|
||
|
//NSLog(@"recieved msg %@", msg);
|
||
|
//demiaturize all windows
|
||
|
for(NSWindow* win in [NSApp windows])
|
||
|
{
|
||
|
if([win isMiniaturized])
|
||
|
{
|
||
|
[win deminiaturize:self];
|
||
|
}
|
||
|
}
|
||
|
//bring window to front
|
||
|
[[NSApplication sharedApplication] activateIgnoringOtherApps : YES];
|
||
|
//pass message
|
||
|
Slic3r::GUI::wxGetApp().other_instance_message_handler()->handle_message(std::string([msg.userInfo[@"data"] UTF8String]));
|
||
|
}
|
||
|
|
||
|
@end
|
||
|
|
||
|
namespace Slic3r {
|
||
|
|
||
|
void send_message_mac(const std::string msg)
|
||
|
{
|
||
|
NSString *nsmsg = [NSString stringWithCString:msg.c_str() encoding:[NSString defaultCStringEncoding]];
|
||
|
//NSLog(@"sending msg %@", nsmsg);
|
||
|
[[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"OtherPrusaSlicerInstanceMessage" object:nil userInfo:[NSDictionary dictionaryWithObject:nsmsg forKey:@"data"] deliverImmediately:YES];
|
||
|
}
|
||
|
|
||
|
namespace GUI {
|
||
|
void OtherInstanceMessageHandler::register_for_messages()
|
||
|
{
|
||
|
m_impl_osx = [[OtherInstanceMessageHandlerMac alloc] init];
|
||
|
if(m_impl_osx) {
|
||
|
[m_impl_osx add_observer];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void OtherInstanceMessageHandler::unregister_for_messages()
|
||
|
{
|
||
|
//NSLog(@"unreegistering other instance messages");
|
||
|
if (m_impl_osx) {
|
||
|
[m_impl_osx release];
|
||
|
m_impl_osx = nullptr;
|
||
|
} else {
|
||
|
NSLog(@"unreegister not required");
|
||
|
}
|
||
|
}
|
||
|
}//namespace GUI
|
||
|
}//namespace Slicer
|
||
|
|
||
|
|