mirror of
https://github.com/FULU-Foundation/OrcaSlicer-bambulab.git
synced 2026-06-07 06:12:59 -04:00
check for other instances during startup send message with command line arguments if found and terminate listen for those messages and load objects from paths in messages from them
69 lines
1.8 KiB
Plaintext
69 lines
1.8 KiB
Plaintext
#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
|
|
|
|
|