Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2018
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. class Sorter
  2. {
  3. public:
  4.     static int compareElements(const juce::ValueTree& a, const juce::ValueTree& b)
  5.     {
  6.         int apos = static_cast<int>(a.getProperty("position"));
  7.         int bpos = static_cast<int>(b.getProperty("position"));
  8.         return (apos < bpos) ? -1 : ((bpos < apos) ? 1 : 0);       
  9.     }
  10. };
  11.  
  12.  
  13. struct Parent : public ValueTree::Listener
  14. {
  15.     Parent(UndoManager* u)
  16.     : tree(ValueTree("parent")),
  17.       undo(u)
  18.     {
  19.         tree.addListener(this);
  20.     }
  21.  
  22.   void valueTreePropertyChanged(juce::ValueTree& s, const juce::Identifier& p) override {}
  23.   void valueTreeChildRemoved(juce::ValueTree& t, juce::ValueTree& t1, int i) override {}
  24.   void valueTreeChildOrderChanged(juce::ValueTree& t, int i, int i1) override {}
  25.   void valueTreeParentChanged(juce::ValueTree& t) override {}
  26.   void valueTreeChildAdded(juce::ValueTree& p, juce::ValueTree& c) override
  27.   {
  28.     Sorter s;
  29.     tree.sort(s, undo, false);
  30.   }
  31.  
  32.   void add(ValueTree c)
  33.   {
  34.     tree.addChild(c, -1, undo);
  35.   }
  36.  
  37.   ValueTree tree;
  38.   UndoManager* undo;
  39. };
  40.  
  41.  
  42. int main(int argc, char** argv)
  43. {
  44.     UndoManager undoManager;
  45.  
  46.     Parent parent(&undoManager);
  47.  
  48.     parent.add(ValueTree{"child1", {{ "position", 0}}});
  49.     parent.add(ValueTree{"child2", {{ "position", 1000}}});
  50.  
  51.     undoManager.beginNewTransaction();
  52.  
  53.     parent.add(ValueTree{"child3", {{ "position", 500}}});
  54.  
  55.     std::cout << parent.tree.toXmlString() << "\n";
  56.  
  57.     undoManager.undo();
  58.  
  59.     std::cout << parent.tree.toXmlString() << "\n";
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement