1
////////////////////////////////////////////////////////////////////////////////
3
// This file is part of Toolkit for Conceptual Modeling (TCM).
4
// (c) copyright 1997, Vrije Universiteit Amsterdam.
5
// Author: Frank Dehne (frank@cs.vu.nl).
7
// TCM is free software; you can redistribute it and/or modify
8
// it under the terms of the GNU General Public License as published by
9
// the Free Software Foundation; either version 2 of the License, or
10
// (at your option) any later version.
12
// TCM is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
// GNU General Public License for more details.
17
// You should have received a copy of the GNU General Public License
18
// along with TCM; if not, write to the Free Software
19
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
21
////////////////////////////////////////////////////////////////////////////////
22
#include "nodeshape.h"
23
#include "diagramviewer.h"
25
#include "updatecolorcmd.h"
27
UpdateColorCmd::UpdateColorCmd(ShapeView *v, const string *c,
28
UpdateColorCmd::Type t):
29
Command(v->GetViewer()->GetDiagram(), v->GetViewer()) {
33
shapes = new List<GShape *>;
34
oldColors = new List<string *>;
35
List<GShape *> *selection = view->GetSelection();
36
for (selection->first(); !selection->done(); selection->next()) {
37
GShape *shape = selection->cur();
38
if (type == FILL && ! shape->IsNodeShape())
39
continue; // edges have no filling.
42
scolor = shape->GetColor();
43
else if (type == TEXT)
44
scolor = shape->GetTextColor();
46
scolor = ((NodeShape *)shape)->GetFillColor();
47
if (*scolor != color) {
48
string *nc = new string(*scolor);
55
UpdateColorCmd::~UpdateColorCmd() {
61
void UpdateColorCmd::Execute() {
62
if (!shapes->first()) {
63
GetMainWindow()->SetStatus(
64
"aborted: no shapes need to be updated");
68
for (shapes->first(); !shapes->done(); shapes->next()) {
69
GShape *shape = shapes->cur();
71
shape->UpdateColor(&color);
72
else if (type == TEXT)
73
shape->UpdateTextColor(&color);
74
else if (shape->IsNodeShape())
75
((NodeShape *)shape)->UpdateFillColor(&color);
80
void UpdateColorCmd::UnExecute() {
81
for (unsigned i=0; i<shapes->count(); i++) {
82
string *s = (*oldColors)[i];
83
GShape *shape = (*shapes)[i];
85
shape->UpdateColor(s);
86
else if (type == TEXT)
87
shape->UpdateTextColor(s);
88
else if (shape->IsNodeShape())
89
((NodeShape *)shape)->UpdateFillColor(s);