xref: /haiku/src/apps/icon-o-matic/shape/commands/UnassignPathCommand.cpp (revision 106388ddbfdd00f4409c86bd3fe8d581bae532ec)
1 /*
2  * Copyright 2006, Haiku.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Stephan Aßmus <superstippi@gmx.de>
7  */
8 
9 #include "UnassignPathCommand.h"
10 
11 #include <Catalog.h>
12 #include <Locale.h>
13 
14 #include "PathSourceShape.h"
15 #include "VectorPath.h"
16 
17 
18 #undef B_TRANSLATION_CONTEXT
19 #define B_TRANSLATION_CONTEXT "Icon-O-Matic-UnassignPathCmd"
20 
21 
22 // constructor
23 UnassignPathCommand::UnassignPathCommand(PathSourceShape* shape,
24 										 VectorPath* path)
25 	: Command(),
26 	  fShape(shape),
27 	  fPath(path),
28 	  fPathRemoved(false)
29 {
30 }
31 
32 // destructor
33 UnassignPathCommand::~UnassignPathCommand()
34 {
35 	if (fPathRemoved && fPath)
36 		fPath->ReleaseReference();
37 }
38 
39 // InitCheck
40 status_t
41 UnassignPathCommand::InitCheck()
42 {
43 	return fShape && fPath ? B_OK : B_NO_INIT;
44 }
45 
46 // Perform
47 status_t
48 UnassignPathCommand::Perform()
49 {
50 	// remove path from shape
51 	fShape->Paths()->RemoveItem(fPath);
52 	fPathRemoved = true;
53 
54 	return B_OK;
55 }
56 
57 // Undo
58 status_t
59 UnassignPathCommand::Undo()
60 {
61 	// add path to shape
62 	fShape->Paths()->AddItem(fPath);
63 	fPathRemoved = false;
64 
65 	return B_OK;
66 }
67 
68 // GetName
69 void
70 UnassignPathCommand::GetName(BString& name)
71 {
72 	name << B_TRANSLATE("Unassign path");
73 }
74