[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    koffice/kivio
From:       Peter Simonsson <psn () linux ! se>
Date:       2005-12-03 10:19:24
Message-ID: 1133605164.629011.14405.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 485186 by psn:

Make it posible to undo the target tool


 M  +18 -0     kiviopart/kivio_command.cc  
 M  +14 -0     kiviopart/kivio_command.h  
 M  +1 -0      kiviopart/kiviosdk/kivio_connector_target.h  
 M  +16 -0     kiviopart/kiviosdk/kivio_sml_stencil.cpp  
 M  +1 -0      kiviopart/kiviosdk/kivio_sml_stencil.h  
 M  +1 -0      kiviopart/kiviosdk/kivio_stencil.h  
 M  +4 -3      plugins/kiviotargettool/kiviotargettool.cpp  


--- trunk/koffice/kivio/kiviopart/kivio_command.cc #485185:485186
@@ -661,3 +661,21 @@
     m_page->doc()->updateProtectPanelCheckBox();
 }
 
+KivioAddConnectorTargetCommand::KivioAddConnectorTargetCommand(const QString& name, KivioPage* \
page, +    KivioStencil* stencil, const KoPoint& targetPoint) : KNamedCommand(name)
+{
+  m_page = page;
+  m_stencil = stencil;
+  m_targetPoint = targetPoint;
+}
+void KivioAddConnectorTargetCommand::execute()
+{
+  m_stencil->addConnectorTarget(m_targetPoint);
+  m_page->doc()->updateView(m_page);
+}
+
+void KivioAddConnectorTargetCommand::unexecute()
+{
+  m_stencil->removeConnectorTarget(m_targetPoint);
+  m_page->doc()->updateView(m_page);
+}
--- trunk/koffice/kivio/kiviopart/kivio_command.h #485185:485186
@@ -397,6 +397,20 @@
     bool m_bValue;
 };
 
+class KivioAddConnectorTargetCommand : public KNamedCommand
+{
+  public:
+    KivioAddConnectorTargetCommand(const QString& name, KivioPage* page,
+                                   KivioStencil* stencil, const KoPoint& targetPoint);
 
+    virtual void execute();
+    virtual void unexecute();
+
+  protected:
+    KivioPage* m_page;
+    KivioStencil* m_stencil;
+    KoPoint m_targetPoint;
+};
+
 #endif
 
--- trunk/koffice/kivio/kiviopart/kiviosdk/kivio_connector_target.h #485185:485186
@@ -50,6 +50,7 @@
 
     inline float x() { return m_position.x(); }
     inline float y() { return m_position.y(); }
+    inline KoPoint position() { return m_position; }
 
     void setId( int id );
     inline int id() { return m_id; }
--- trunk/koffice/kivio/kiviopart/kiviosdk/kivio_sml_stencil.cpp #485185:485186
@@ -2093,6 +2093,22 @@
   m_pConnectorTargets->append(target);
 }
 
+void KivioSMLStencil::removeConnectorTarget(const KoPoint& pos)
+{
+  KivioConnectorTarget* target = m_pConnectorTargets->first();
+
+  while(target)
+  {
+    if(target->position() == pos)
+    {
+      m_pConnectorTargets->remove(target);
+      return;
+    }
+
+    target = m_pConnectorTargets->next();
+  }
+}
+
 bool KivioSMLStencil::hasTextBox() const
 {
   KivioShape* pShape = m_pShapeList->first();
--- trunk/koffice/kivio/kiviopart/kiviosdk/kivio_sml_stencil.h #485185:485186
@@ -161,6 +161,7 @@
     virtual QString text(const QString& name);
 
     virtual void addConnectorTarget(const KoPoint&);
+    virtual void removeConnectorTarget(const KoPoint&);
 
     virtual bool hasTextBox() const;
 };
--- trunk/koffice/kivio/kiviopart/kiviosdk/kivio_stencil.h #485185:485186
@@ -273,6 +273,7 @@
     virtual KoPoint pinPoint() const { return m_pinPoint; }
     
     virtual void addConnectorTarget(const KoPoint&) {}
+    virtual void removeConnectorTarget(const KoPoint&) {}
     
     virtual bool isInRect(const KoRect& rect);
     
--- trunk/koffice/kivio/plugins/kiviotargettool/kiviotargettool.cpp #485185:485186
@@ -29,6 +29,7 @@
 #include "kivio_doc.h"
 #include "mousetoolaction.h"
 #include "kivio_pluginmanager.h"
+#include "kivio_command.h"
 
 namespace Kivio {
   TargetTool::TargetTool(KivioView* parent) : MouseTool(parent, "Add Target Mouse Tool")
@@ -71,9 +72,9 @@
   
   void TargetTool::applyToolAction(KivioStencil* stencil, const KoPoint& pos)
   {
-    //TODO Add undo support!
-    stencil->addConnectorTarget(pos);
-    view()->doc()->updateView(view()->activePage());
+    KivioAddConnectorTargetCommand* command = new KivioAddConnectorTargetCommand(i18n("Add \
Connector Target"), view()->activePage(), stencil, pos); +    command->execute();
+    view()->doc()->addCommand(command);
   }
 
   void TargetTool::mousePress(QMouseEvent* e)


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic