From f75835e188c1bf8010fb7cc18c7526934ff19eba Mon Sep 17 00:00:00 2001 From: Alex Merry Date: Mon, 17 Dec 2012 16:15:08 +0000 Subject: Use central models for node and edge styles --- tikzit/src/gtk/Application.m | 8 ++++++-- tikzit/src/gtk/CreateEdgeTool.h | 5 +++-- tikzit/src/gtk/CreateEdgeTool.m | 20 +++++++++++++++----- tikzit/src/gtk/CreateNodeTool.h | 5 +++-- tikzit/src/gtk/CreateNodeTool.m | 20 +++++++++++++++----- 5 files changed, 42 insertions(+), 16 deletions(-) diff --git a/tikzit/src/gtk/Application.m b/tikzit/src/gtk/Application.m index 88293a6..1459355 100644 --- a/tikzit/src/gtk/Application.m +++ b/tikzit/src/gtk/Application.m @@ -18,6 +18,8 @@ #import "Application.h" #import "Configuration.h" +#import "EdgeStylesModel.h" +#import "NodeStylesModel.h" #import "PreambleEditor.h" #import "PropertiesWindow.h" #import "Shape.h" @@ -83,6 +85,8 @@ Application* app = nil; styleManager = [[StyleManager alloc] init]; [styleManager loadStylesUsingConfigurationName:@"styles"]; // FIXME: error message? + NodeStylesModel *nsm = [NodeStylesModel modelWithStyleManager:styleManager]; + EdgeStylesModel *esm = [EdgeStylesModel modelWithStyleManager:styleManager]; #ifdef HAVE_POPPLER NSString *preamblesDir = [[SupportDir userSupportDir] stringByAppendingPathComponent:@"preambles"]; @@ -105,8 +109,8 @@ Application* app = nil; tools = [[NSArray alloc] initWithObjects: [SelectTool tool], - [CreateNodeTool toolWithStyleManager:styleManager], - [CreateEdgeTool toolWithStyleManager:styleManager], + [CreateNodeTool toolWithNodeStylesModel:nsm], + [CreateEdgeTool toolWithEdgeStylesModel:esm], [BoundingBoxTool tool], [HandTool tool], nil]; diff --git a/tikzit/src/gtk/CreateEdgeTool.h b/tikzit/src/gtk/CreateEdgeTool.h index cb6c73d..d33efce 100644 --- a/tikzit/src/gtk/CreateEdgeTool.h +++ b/tikzit/src/gtk/CreateEdgeTool.h @@ -19,13 +19,13 @@ #import "Tool.h" @class EdgeStyle; +@class EdgeStylesModel; @class EdgeStyleSelector; @class Node; @class StyleManager; @interface CreateEdgeTool : NSObject { GraphRenderer *renderer; - StyleManager *styleManager; EdgeStyleSelector *stylePicker; GtkWidget *configWidget; Node *sourceNode; @@ -33,11 +33,12 @@ NSPoint halfEdgeEnd; } -@property (retain) StyleManager *styleManager; @property (retain) EdgeStyle *activeStyle; + (id) toolWithStyleManager:(StyleManager*)sm; - (id) initWithStyleManager:(StyleManager*)sm; ++ (id) toolWithEdgeStylesModel:(EdgeStylesModel*)esm; +- (id) initWithEdgeStylesModel:(EdgeStylesModel*)esm; @end diff --git a/tikzit/src/gtk/CreateEdgeTool.m b/tikzit/src/gtk/CreateEdgeTool.m index d8ca4b1..e34e627 100644 --- a/tikzit/src/gtk/CreateEdgeTool.m +++ b/tikzit/src/gtk/CreateEdgeTool.m @@ -19,6 +19,7 @@ #import "Configuration.h" #import "EdgeStyleSelector.h" +#import "EdgeStylesModel.h" #import "GraphRenderer.h" #import "TikzDocument.h" #import "tzstockitems.h" @@ -29,24 +30,30 @@ - (NSString*) helpText { return @"Create new edges"; } - (NSString*) shortcut { return @"e"; } @synthesize activeRenderer=renderer; -@synthesize styleManager; @synthesize configurationWidget=configWidget; + (id) toolWithStyleManager:(StyleManager*)sm { return [[[self alloc] initWithStyleManager:sm] autorelease]; } ++ (id) toolWithEdgeStylesModel:(EdgeStylesModel*)esm { + return [[[self alloc] initWithEdgeStylesModel:esm] autorelease]; +} + - (id) init { [self release]; return nil; } - (id) initWithStyleManager:(StyleManager*)sm { + return [self initWithEdgeStylesModel:[EdgeStylesModel modelWithStyleManager:sm]]; +} + +- (id) initWithEdgeStylesModel:(EdgeStylesModel*)esm { self = [super init]; if (self) { - styleManager = [sm retain]; - stylePicker = [[EdgeStyleSelector alloc] initWithStyleManager:sm]; + stylePicker = [[EdgeStyleSelector alloc] initWithModel:esm]; configWidget = gtk_vbox_new (FALSE, 0); g_object_ref_sink (configWidget); @@ -87,7 +94,6 @@ [[NSNotificationCenter defaultCenter] removeObserver:self]; [renderer release]; - [styleManager release]; [stylePicker release]; [sourceNode release]; @@ -176,11 +182,15 @@ [context restoreState]; } +- (StyleManager*) styleManager { + return [[stylePicker model] styleManager]; +} + - (void) loadConfiguration:(Configuration*)config { NSString *styleName = [config stringEntry:@"ActiveStyle" inGroup:@"CreateEdgeTool" withDefault:nil]; - [self setActiveStyle:[styleManager edgeStyleForName:styleName]]; + [self setActiveStyle:[[self styleManager] edgeStyleForName:styleName]]; } - (void) saveConfiguration:(Configuration*)config { diff --git a/tikzit/src/gtk/CreateNodeTool.h b/tikzit/src/gtk/CreateNodeTool.h index b340a70..94d6b31 100644 --- a/tikzit/src/gtk/CreateNodeTool.h +++ b/tikzit/src/gtk/CreateNodeTool.h @@ -21,20 +21,21 @@ @class NodeStyle; @class NodeStyleSelector; +@class NodeStylesModel; @class StyleManager; @interface CreateNodeTool : NSObject { GraphRenderer *renderer; - StyleManager *styleManager; NodeStyleSelector *stylePicker; GtkWidget *configWidget; } -@property (retain) StyleManager *styleManager; @property (retain) NodeStyle *activeStyle; + (id) toolWithStyleManager:(StyleManager*)sm; - (id) initWithStyleManager:(StyleManager*)sm; ++ (id) toolWithNodeStylesModel:(NodeStylesModel*)nsm; +- (id) initWithNodeStylesModel:(NodeStylesModel*)nsm; @end diff --git a/tikzit/src/gtk/CreateNodeTool.m b/tikzit/src/gtk/CreateNodeTool.m index a8402f0..b6b8d1b 100644 --- a/tikzit/src/gtk/CreateNodeTool.m +++ b/tikzit/src/gtk/CreateNodeTool.m @@ -20,6 +20,7 @@ #import "Configuration.h" #import "GraphRenderer.h" #import "NodeStyleSelector.h" +#import "NodeStylesModel.h" #import "TikzDocument.h" #import "tzstockitems.h" @@ -29,24 +30,30 @@ - (NSString*) helpText { return @"Create new nodes"; } - (NSString*) shortcut { return @"n"; } @synthesize activeRenderer=renderer; -@synthesize styleManager; @synthesize configurationWidget=configWidget; + (id) toolWithStyleManager:(StyleManager*)sm { return [[[self alloc] initWithStyleManager:sm] autorelease]; } ++ (id) toolWithNodeStylesModel:(NodeStylesModel*)nsm { + return [[[self alloc] initWithNodeStylesModel:nsm] autorelease]; +} + - (id) init { [self release]; return nil; } - (id) initWithStyleManager:(StyleManager*)sm { + return [self initWithNodeStylesModel:[NodeStylesModel modelWithStyleManager:sm]]; +} + +- (id) initWithNodeStylesModel:(NodeStylesModel*)nsm { self = [super init]; if (self) { - styleManager = [sm retain]; - stylePicker = [[NodeStyleSelector alloc] initWithStyleManager:sm]; + stylePicker = [[NodeStyleSelector alloc] initWithModel:nsm]; configWidget = gtk_vbox_new (FALSE, 0); g_object_ref_sink (configWidget); @@ -87,7 +94,6 @@ [[NSNotificationCenter defaultCenter] removeObserver:self]; [renderer release]; - [styleManager release]; [stylePicker release]; g_object_unref (G_OBJECT (configWidget)); @@ -119,11 +125,15 @@ - (void) renderWithContext:(id)context onSurface:(id)surface {} +- (StyleManager*) styleManager { + return [[stylePicker model] styleManager]; +} + - (void) loadConfiguration:(Configuration*)config { NSString *styleName = [config stringEntry:@"ActiveStyle" inGroup:@"CreateNodeTool" withDefault:nil]; - [self setActiveStyle:[styleManager nodeStyleForName:styleName]]; + [self setActiveStyle:[[self styleManager] nodeStyleForName:styleName]]; } - (void) saveConfiguration:(Configuration*)config { -- cgit v1.2.3