Vuo  2.0.3
VuoCommandRemove.hh
Go to the documentation of this file.
1 
10 #pragma once
11 
12 class VuoEditorWindow;
14 class VuoRendererCable;
15 class VuoRendererComment;
16 class VuoRendererNode;
18 
23 {
24 public:
25  VuoCommandRemove(QList<QGraphicsItem *> removedComponents,
26  VuoEditorWindow *window,
27  VuoInputEditorManager *inputEditorManager,
28  string commandDescription="Delete",
29  bool disableAttachmentInsertion=false);
30 
31  int id() const;
32  void undo();
33  void redo();
34 
35 private:
36  static const int commandID;
37  VuoEditorWindow *window;
38  string revertedSnapshot;
39  string updatedSnapshot;
40  set<string> removedSubcompositionNodeIdentifiers;
41 
42  // Used only for live-coding updates:
43  set<string> updatedPortIDs;
44 
45  // The following are not and must not be used outside of the constructor and its helper functions:
46  // (@todo: Eliminate as member variables?)
47  set<VuoRendererNode *> removedNodes;
48  set<VuoRendererComment *> removedComments;
49  set<VuoRendererCable *> removedCables;
50  set<VuoRendererCable *> reroutedCables;
51  set<VuoRendererCable *> removedPublishedCables;
52  VuoRendererCable *cableInProgress;
53  map<VuoPort *, string> revertedConstantForPort;
54  map<VuoPort *, string> updatedConstantForPort;
55  vector<pair<VuoPort *, VuoPublishedPort *> > unpublishedInternalExternalPortCombinations;
56  map<pair<VuoPort *, VuoPublishedPort *>, bool> publishedConnectionCarriedData;
57  set<VuoRendererNode *> addedNodes;
58  set<VuoRendererCable *> addedCables;
59  map<VuoRendererCable *, VuoPort *> revertedFromPortForCable;
60  map<VuoRendererCable *, VuoPort *> revertedToPortForCable;
61  map<VuoRendererCable *, VuoPort *> updatedFromPortForCable;
62  map<VuoRendererCable *, VuoPort *> updatedToPortForCable;
63  vector<VuoRendererNode *> typecastsUncollapsedDuringInventory;
64  vector<VuoRendererNode *> typecastsCollapsedFollowingComponentRemoval;
65  vector<VuoRendererNode *> typecastsCollapsedUponUndo;
66  bool operationInvolvesGenericPort;
67  bool operationRequiresRunningCompositionUpdate;
68  //
69 
70  set<QGraphicsItem *> getAttachmentsDependentOnNode(VuoRendererNode *rn);
71  void inventoryCableAndDependentTypecasts(VuoRendererCable *rc);
72  void inventoryTypecastAndDependentCables(VuoRendererTypecastPort *tp, bool triggeredByIncomingCableDeletion);
73  void inventoryNodeAndDependentCables(VuoRendererNode *rn, bool inputCablesPreprocessed=false);
74  void prepareMakeListToReplaceDeletedCable(VuoRendererCable *rc);
75  bool modifiedComponentsIncludeGenericPorts();
76 
77 };