diff options
Diffstat (limited to 'src/osd/modules/debugger/osx')
18 files changed, 231 insertions, 1 deletions
diff --git a/src/osd/modules/debugger/osx/debugconsole.h b/src/osd/modules/debugger/osx/debugconsole.h index f8e52c9c76b..8c5d87f8526 100644 --- a/src/osd/modules/debugger/osx/debugconsole.h +++ b/src/osd/modules/debugger/osx/debugconsole.h @@ -50,6 +50,10 @@ - (void)showDebugger:(NSNotification *)notification; - (void)auxiliaryWindowWillClose:(NSNotification *)notification; +- (void)loadConfiguration:(util::xml::data_node const *)parentnode; + +- (void)saveConfigurationToNode:(util::xml::data_node *)node; + - (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor; - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command; diff --git a/src/osd/modules/debugger/osx/debugconsole.mm b/src/osd/modules/debugger/osx/debugconsole.mm index 3510417f62a..aa93745dec6 100644 --- a/src/osd/modules/debugger/osx/debugconsole.mm +++ b/src/osd/modules/debugger/osx/debugconsole.mm @@ -25,6 +25,8 @@ #include "debug/debugcon.h" #include "debug/debugcpu.h" +#include "util/xmlfile.h" + @implementation MAMEDebugConsole @@ -378,6 +380,55 @@ } +- (void)loadConfiguration:(util::xml::data_node const *)parentnode { + util::xml::data_node const *node = nullptr; + for (node = parentnode->get_child("window"); node; node = node->get_next_sibling("window")) + { + MAMEDebugWindowHandler *win = nil; + switch (node->get_attribute_int("type", -1)) + { + case MAME_DEBUGGER_WINDOW_TYPE_CONSOLE: + [self restoreConfigurationFromNode:node]; + break; + case MAME_DEBUGGER_WINDOW_TYPE_MEMORY_VIEWER: + win = [[MAMEMemoryViewer alloc] initWithMachine:*machine console:self]; + break; + case MAME_DEBUGGER_WINDOW_TYPE_DISASSEMBLY_VIEWER: + win = [[MAMEDisassemblyViewer alloc] initWithMachine:*machine console:self]; + break; + case MAME_DEBUGGER_WINDOW_TYPE_ERROR_LOG_VIEWER: + win = [[MAMEErrorLogViewer alloc] initWithMachine:*machine console:self]; + break; + case MAME_DEBUGGER_WINDOW_TYPE_POINTS_VIEWER: + win = [[MAMEPointsViewer alloc] initWithMachine:*machine console:self]; + break; + case MAME_DEBUGGER_WINDOW_TYPE_DEVICES_VIEWER: + win = [[MAMEDevicesViewer alloc] initWithMachine:*machine console:self]; + break; + case MAME_DEBUGGER_WINDOW_TYPE_DEVICE_INFO_VIEWER: + // FIXME: needs device info on init, make another variant + //win = [[MAMEDeviceInfoViewer alloc] initWithMachine:*machine console:self]; + break; + default: + break; + } + if (win) + { + [auxiliaryWindows addObject:win]; + [win restoreConfigurationFromNode:node]; + [win release]; + [win activate]; + } + } +} + + +- (void)saveConfigurationToNode:(util::xml::data_node *)node { + [super saveConfigurationToNode:node]; + node->set_attribute_int("type", MAME_DEBUGGER_WINDOW_TYPE_CONSOLE); +} + + - (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor { if (control == commandField) [history edit]; diff --git a/src/osd/modules/debugger/osx/debugwindowhandler.h b/src/osd/modules/debugger/osx/debugwindowhandler.h index e36721b2738..4feeff267c9 100644 --- a/src/osd/modules/debugger/osx/debugwindowhandler.h +++ b/src/osd/modules/debugger/osx/debugwindowhandler.h @@ -20,6 +20,20 @@ extern NSString *const MAMEHideDebuggerNotification; extern NSString *const MAMEShowDebuggerNotification; extern NSString *const MAMEAuxiliaryDebugWindowWillCloseNotification; +extern NSString *const MAMESaveDebuggerConfigurationNotification; + + +// for compatibility with the Qt debugger +enum +{ + MAME_DEBUGGER_WINDOW_TYPE_CONSOLE = 1, + MAME_DEBUGGER_WINDOW_TYPE_MEMORY_VIEWER, + MAME_DEBUGGER_WINDOW_TYPE_DISASSEMBLY_VIEWER, + MAME_DEBUGGER_WINDOW_TYPE_ERROR_LOG_VIEWER, + MAME_DEBUGGER_WINDOW_TYPE_POINTS_VIEWER, + MAME_DEBUGGER_WINDOW_TYPE_DEVICES_VIEWER, + MAME_DEBUGGER_WINDOW_TYPE_DEVICE_INFO_VIEWER +}; @interface MAMEDebugWindowHandler : NSObject <NSWindowDelegate> @@ -55,6 +69,10 @@ extern NSString *const MAMEAuxiliaryDebugWindowWillCloseNotification; - (void)showDebugger:(NSNotification *)notification; - (void)hideDebugger:(NSNotification *)notification; +- (void)saveConfig:(NSNotification *)notification; + +- (void)saveConfigurationToNode:(util::xml::data_node *)node; +- (void)restoreConfigurationFromNode:(util::xml::data_node const *)node; @end @@ -99,4 +117,7 @@ extern NSString *const MAMEAuxiliaryDebugWindowWillCloseNotification; - (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor; - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command; +- (void)saveConfigurationToNode:(util::xml::data_node *)node; +- (void)restoreConfigurationFromNode:(util::xml::data_node const *)node; + @end diff --git a/src/osd/modules/debugger/osx/debugwindowhandler.mm b/src/osd/modules/debugger/osx/debugwindowhandler.mm index 7bee4ec8ce0..9c79e496f5d 100644 --- a/src/osd/modules/debugger/osx/debugwindowhandler.mm +++ b/src/osd/modules/debugger/osx/debugwindowhandler.mm @@ -15,6 +15,9 @@ #include "debugger.h" +#include "util/xmlfile.h" + + //============================================================ // NOTIFICATIONS //============================================================ @@ -22,6 +25,7 @@ NSString *const MAMEHideDebuggerNotification = @"MAMEHideDebuggerNotification"; NSString *const MAMEShowDebuggerNotification = @"MAMEShowDebuggerNotification"; NSString *const MAMEAuxiliaryDebugWindowWillCloseNotification = @"MAMEAuxiliaryDebugWindowWillCloseNotification"; +NSString *const MAMESaveDebuggerConfigurationNotification = @"MAMESaveDebuggerConfigurationNotification"; //============================================================ @@ -155,6 +159,10 @@ NSString *const MAMEAuxiliaryDebugWindowWillCloseNotification = @"MAMEAuxiliaryD [window setContentMinSize:NSMakeSize(320, 240)]; [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(saveConfig:) + name:MAMESaveDebuggerConfigurationNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showDebugger:) name:MAMEShowDebuggerNotification object:nil]; @@ -269,6 +277,46 @@ NSString *const MAMEAuxiliaryDebugWindowWillCloseNotification = @"MAMEAuxiliaryD [window orderOut:self]; } + +- (void)saveConfig:(NSNotification *)notification { + running_machine *m = (running_machine *)[[[notification userInfo] objectForKey:@"MAMEDebugMachine"] pointerValue]; + if (m == machine) + { + util::xml::data_node *parentnode = (util::xml::data_node *)[[[notification userInfo] objectForKey:@"MAMEDebugParentNode"] pointerValue]; + util::xml::data_node *node = parentnode->add_child("window", nullptr); + if (node) + [self saveConfigurationToNode:node]; + } +} + + +- (void)saveConfigurationToNode:(util::xml::data_node *)node { + NSRect frame = [window frame]; + node->set_attribute_float("position_x", frame.origin.x); + node->set_attribute_float("position_y", frame.origin.y); + node->set_attribute_float("size_x", frame.size.width); + node->set_attribute_float("size_y", frame.size.height); +} + + +- (void)restoreConfigurationFromNode:(util::xml::data_node const *)node { + NSRect frame = [window frame]; + frame.origin.x = node->get_attribute_float("position_x", frame.origin.x); + frame.origin.y = node->get_attribute_float("position_y", frame.origin.y); + frame.size.width = node->get_attribute_float("size_x", frame.size.width); + frame.size.height = node->get_attribute_float("size_y", frame.size.height); + + NSSize min = [window minSize]; + frame.size.width = std::max(frame.size.width, min.width); + frame.size.height = std::max(frame.size.height, min.height); + + NSSize max = [window maxSize]; + frame.size.width = std::min(frame.size.width, max.width); + frame.size.height = std::min(frame.size.height, max.height); + + [window setFrame:frame display:YES]; +} + @end @@ -449,4 +497,18 @@ NSString *const MAMEAuxiliaryDebugWindowWillCloseNotification = @"MAMEAuxiliaryD return NO; } + +- (void)saveConfigurationToNode:(util::xml::data_node *)node { + [super saveConfigurationToNode:node]; + node->add_child("expression", [[self expression] UTF8String]); +} + + +- (void)restoreConfigurationFromNode:(util::xml::data_node const *)node { + [super restoreConfigurationFromNode:node]; + util::xml::data_node const *const expr = node->get_child("expression"); + if (expr && expr->get_value()) + [self setExpression:[NSString stringWithUTF8String:expr->get_value()]]; +} + @end diff --git a/src/osd/modules/debugger/osx/deviceinfoviewer.h b/src/osd/modules/debugger/osx/deviceinfoviewer.h index d5755b9ebcc..d92c3a30f18 100644 --- a/src/osd/modules/debugger/osx/deviceinfoviewer.h +++ b/src/osd/modules/debugger/osx/deviceinfoviewer.h @@ -23,4 +23,6 @@ - (id)initWithDevice:(device_t &)d machine:(running_machine &)m console:(MAMEDebugConsole *)c; +- (void)saveConfigurationToNode:(util::xml::data_node *)node; + @end diff --git a/src/osd/modules/debugger/osx/deviceinfoviewer.mm b/src/osd/modules/debugger/osx/deviceinfoviewer.mm index 18b5835944b..61fdd8c8613 100644 --- a/src/osd/modules/debugger/osx/deviceinfoviewer.mm +++ b/src/osd/modules/debugger/osx/deviceinfoviewer.mm @@ -9,6 +9,8 @@ #include "emu.h" #import "deviceinfoviewer.h" +#include "util/xmlfile.h" + @interface MAMEDeviceInfoView : NSView { @@ -232,4 +234,10 @@ return self; } + +- (void)saveConfigurationToNode:(util::xml::data_node *)node { + [super saveConfigurationToNode:node]; + node->set_attribute_int("type", MAME_DEBUGGER_WINDOW_TYPE_DEVICE_INFO_VIEWER); +} + @end diff --git a/src/osd/modules/debugger/osx/devicesviewer.h b/src/osd/modules/debugger/osx/devicesviewer.h index e56aa813cba..ae88d561fde 100644 --- a/src/osd/modules/debugger/osx/devicesviewer.h +++ b/src/osd/modules/debugger/osx/devicesviewer.h @@ -26,4 +26,6 @@ - (IBAction)showDeviceDetail:(id)sender; +- (void)saveConfigurationToNode:(util::xml::data_node *)node; + @end diff --git a/src/osd/modules/debugger/osx/devicesviewer.mm b/src/osd/modules/debugger/osx/devicesviewer.mm index 6a415ec5dbb..23dba724b9d 100644 --- a/src/osd/modules/debugger/osx/devicesviewer.mm +++ b/src/osd/modules/debugger/osx/devicesviewer.mm @@ -11,6 +11,8 @@ #import "debugconsole.h" +#include "util/xmlfile.h" + @interface MAMEDeviceWrapper : NSObject { @@ -181,6 +183,12 @@ } +- (void)saveConfigurationToNode:(util::xml::data_node *)node { + [super saveConfigurationToNode:node]; + node->set_attribute_int("type", MAME_DEBUGGER_WINDOW_TYPE_DEVICES_VIEWER); +} + + - (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item { return [(MAMEDeviceWrapper *)item children] > 0; } diff --git a/src/osd/modules/debugger/osx/disassemblyviewer.h b/src/osd/modules/debugger/osx/disassemblyviewer.h index 6e7ea1c6dda..ce8682d3ce6 100644 --- a/src/osd/modules/debugger/osx/disassemblyviewer.h +++ b/src/osd/modules/debugger/osx/disassemblyviewer.h @@ -33,4 +33,6 @@ - (IBAction)changeSubview:(id)sender; +- (void)saveConfigurationToNode:(util::xml::data_node *)node; + @end diff --git a/src/osd/modules/debugger/osx/disassemblyviewer.mm b/src/osd/modules/debugger/osx/disassemblyviewer.mm index e9198845ee9..11c947e66d1 100644 --- a/src/osd/modules/debugger/osx/disassemblyviewer.mm +++ b/src/osd/modules/debugger/osx/disassemblyviewer.mm @@ -17,6 +17,8 @@ #include "debug/debugcon.h" #include "debug/debugcpu.h" +#include "util/xmlfile.h" + @implementation MAMEDisassemblyViewer @@ -227,6 +229,12 @@ } +- (void)saveConfigurationToNode:(util::xml::data_node *)node { + [super saveConfigurationToNode:node]; + node->set_attribute_int("type", MAME_DEBUGGER_WINDOW_TYPE_DISASSEMBLY_VIEWER); +} + + - (BOOL)validateMenuItem:(NSMenuItem *)item { SEL const action = [item action]; BOOL const inContextMenu = ([item menu] == [dasmView menu]); diff --git a/src/osd/modules/debugger/osx/errorlogviewer.h b/src/osd/modules/debugger/osx/errorlogviewer.h index 47f7ad80dd2..c753cc0c139 100644 --- a/src/osd/modules/debugger/osx/errorlogviewer.h +++ b/src/osd/modules/debugger/osx/errorlogviewer.h @@ -23,4 +23,6 @@ - (id)initWithMachine:(running_machine &)m console:(MAMEDebugConsole *)c; +- (void)saveConfigurationToNode:(util::xml::data_node *)node; + @end diff --git a/src/osd/modules/debugger/osx/errorlogviewer.mm b/src/osd/modules/debugger/osx/errorlogviewer.mm index 98ea30fc98a..1fd12c9c9c1 100644 --- a/src/osd/modules/debugger/osx/errorlogviewer.mm +++ b/src/osd/modules/debugger/osx/errorlogviewer.mm @@ -11,6 +11,8 @@ #import "errorlogview.h" +#include "util/xmlfile.h" + @implementation MAMEErrorLogViewer @@ -59,4 +61,10 @@ [super dealloc]; } + +- (void)saveConfigurationToNode:(util::xml::data_node *)node { + [super saveConfigurationToNode:node]; + node->set_attribute_int("type", MAME_DEBUGGER_WINDOW_TYPE_ERROR_LOG_VIEWER); +} + @end diff --git a/src/osd/modules/debugger/osx/memoryview.h b/src/osd/modules/debugger/osx/memoryview.h index 0e04d3e09c9..31415c7481c 100644 --- a/src/osd/modules/debugger/osx/memoryview.h +++ b/src/osd/modules/debugger/osx/memoryview.h @@ -40,6 +40,9 @@ - (IBAction)showReverseViewToggle:(id)sender; - (IBAction)changeBytesPerLine:(id)sender; +- (void)saveConfigurationToNode:(util::xml::data_node *)node; +- (void)restoreConfigurationFromNode:(util::xml::data_node const *)node; + - (void)insertActionItemsInMenu:(NSMenu *)menu atIndex:(NSInteger)index; - (void)insertSubviewItemsInMenu:(NSMenu *)menu atIndex:(NSInteger)index; diff --git a/src/osd/modules/debugger/osx/memoryview.mm b/src/osd/modules/debugger/osx/memoryview.mm index 3c0baf41f63..0f99f2ad7fa 100644 --- a/src/osd/modules/debugger/osx/memoryview.mm +++ b/src/osd/modules/debugger/osx/memoryview.mm @@ -12,6 +12,8 @@ #include "debug/debugcpu.h" #include "debug/debugvw.h" +#include "util/xmlfile.h" + @implementation MAMEMemoryView @@ -107,7 +109,8 @@ - (void)selectSubviewAtIndex:(int)index { int const selected = view->source_list().indexof(*view->source()); - if (selected != index) { + if (selected != index) + { view->set_source(*view->source_list().find(index)); if ([[self window] firstResponder] != self) view->set_cursor_visible(false); @@ -197,6 +200,24 @@ } +- (void)saveConfigurationToNode:(util::xml::data_node *)node { + debug_view_memory *const memView = downcast<debug_view_memory *>(view); + node->set_attribute_int("memoryregion", [self selectedSubviewIndex]); + node->set_attribute_int("reverse", memView->reverse() ? 1 : 0); + node->set_attribute_int("addressmode", memView->physical() ? 1 : 0); + node->set_attribute_int("dataformat", memView->get_data_format()); +} + + +- (void)restoreConfigurationFromNode:(util::xml::data_node const *)node { + debug_view_memory *const memView = downcast<debug_view_memory *>(view); + [self selectSubviewAtIndex:node->get_attribute_int("memoryregion", [self selectedSubviewIndex])]; + memView->set_reverse(0 != node->get_attribute_int("reverse", memView->reverse() ? 1 : 0)); + memView->set_physical(0 != node->get_attribute_int("addressmode", memView->physical() ? 1 : 0)); + memView->set_data_format(node->get_attribute_int("dataformat", memView->get_data_format())); +} + + - (void)insertActionItemsInMenu:(NSMenu *)menu atIndex:(NSInteger)index { NSInteger tag; for (tag = 1; tag <= 8; tag <<= 1) { diff --git a/src/osd/modules/debugger/osx/memoryviewer.h b/src/osd/modules/debugger/osx/memoryviewer.h index 015560fca1c..de0ce57b46f 100644 --- a/src/osd/modules/debugger/osx/memoryviewer.h +++ b/src/osd/modules/debugger/osx/memoryviewer.h @@ -29,4 +29,7 @@ - (IBAction)changeSubview:(id)sender; +- (void)saveConfigurationToNode:(util::xml::data_node *)node; +- (void)restoreConfigurationFromNode:(util::xml::data_node const *)node; + @end diff --git a/src/osd/modules/debugger/osx/memoryviewer.mm b/src/osd/modules/debugger/osx/memoryviewer.mm index 6e86ba43ede..ec498bc59cd 100644 --- a/src/osd/modules/debugger/osx/memoryviewer.mm +++ b/src/osd/modules/debugger/osx/memoryviewer.mm @@ -17,6 +17,8 @@ #include "debug/debugcpu.h" #include "debug/dvmemory.h" +#include "util/xmlfile.h" + @implementation MAMEMemoryViewer @@ -173,4 +175,17 @@ [window setTitle:[NSString stringWithFormat:@"Memory: %@", [memoryView selectedSubviewName]]]; } + +- (void)saveConfigurationToNode:(util::xml::data_node *)node { + [super saveConfigurationToNode:node]; + node->set_attribute_int("type", MAME_DEBUGGER_WINDOW_TYPE_MEMORY_VIEWER); + [memoryView saveConfigurationToNode:node]; +} + + +- (void)restoreConfigurationFromNode:(util::xml::data_node const *)node { + [super restoreConfigurationFromNode:node]; + [memoryView restoreConfigurationFromNode:node]; +} + @end diff --git a/src/osd/modules/debugger/osx/pointsviewer.h b/src/osd/modules/debugger/osx/pointsviewer.h index b5a6d750361..fab1872d1ac 100644 --- a/src/osd/modules/debugger/osx/pointsviewer.h +++ b/src/osd/modules/debugger/osx/pointsviewer.h @@ -25,4 +25,6 @@ - (IBAction)changeSubview:(id)sender; +- (void)saveConfigurationToNode:(util::xml::data_node *)node; + @end diff --git a/src/osd/modules/debugger/osx/pointsviewer.mm b/src/osd/modules/debugger/osx/pointsviewer.mm index 06c619fd81d..d6333514d95 100644 --- a/src/osd/modules/debugger/osx/pointsviewer.mm +++ b/src/osd/modules/debugger/osx/pointsviewer.mm @@ -12,6 +12,8 @@ #import "breakpointsview.h" #import "watchpointsview.h" +#include "util/xmlfile.h" + @implementation MAMEPointsViewer @@ -141,4 +143,10 @@ [window setTitle:[[sender selectedItem] title]]; } + +- (void)saveConfigurationToNode:(util::xml::data_node *)node { + [super saveConfigurationToNode:node]; + node->set_attribute_int("type", MAME_DEBUGGER_WINDOW_TYPE_POINTS_VIEWER); +} + @end |