[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice-devel
Subject: playground/office/flake/lib
From: Thorsten Zachmann <t.zachmann () zagge ! de>
Date: 2006-03-28 3:28:03
Message-ID: 1143516483.945172.3818.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 523411 by zachmann:
o Started to add tools. This is still very very basic.
What we still need:
- A way to change the tool when e.g. we release the mouse at the end of
a move or resize, so that we are in the default tool again.
- A good way for repainting.
- A good interface for the tools. At the moment it is still very basic.
- And all that have I forgot ...
I think we can learn from krita's KisTools.
CCMAIL: koffice-devel@kde.org
M +25 -10 KoObjectManager.cpp
M +5 -0 KoObjectManager.h
M +1 -40 KoSelection.cpp
M +0 -2 KoSelection.h
A KoTool.h [License: no copyright]
A KoToolMove.cpp [License: no copyright]
A KoToolMove.h [License: no copyright]
M +2 -2 lib.pro
--- trunk/playground/office/flake/lib/KoObjectManager.cpp #523410:523411
@@ -31,6 +31,8 @@
KoObjectManager::KoObjectManager( QLinkedList<KoGraphicBase *> &objects )
: m_objects( objects )
, m_selection( new KoSelection() )
+, m_tool( 0 )
+, m_moveTool( m_selection )
{
}
@@ -55,12 +57,8 @@
KoGraphicBase * object( getObjectAt( event->m_point ) );
if ( object )
{
- if ( object == m_selection )
+ if ( object != m_selection )
{
- m_selection->mousePressEvent( event );
- }
- else
- {
if ( event->m_event.modifiers() & Qt::ControlModifier )
{
if ( object->selected() )
@@ -71,7 +69,7 @@
else
{
m_selection->select( object );
- m_selection->mousePressEvent( event );
+ //m_selection->mousePressEvent( event );
}
}
else if ( !object->selected() )
@@ -79,18 +77,29 @@
m_selection->deselectAll();
m_selection->select( object );
- m_selection->mousePressEvent( event );
+ //m_selection->mousePressEvent( event );
}
else
{
- m_selection->mousePressEvent( event );
+ //m_selection->mousePressEvent( event );
}
}
+ if ( m_selection->count() > 0 )
+ {
+ m_tool = &m_moveTool;
+ }
}
else
{
m_selection->deselectAll();
+ m_tool = 0;
}
+
+ if ( m_tool )
+ {
+ m_tool->mousePressEvent( event );
+ }
+
//TODO
return true;
}
@@ -99,9 +108,9 @@
bool KoObjectManager::mouseMoveEvent( KoGfxEvent *event )
{
bool retval = false;
- if ( m_selection->count() > 0 )
+ if ( m_tool )
{
- retval = m_selection->mouseMoveEvent( event );
+ retval = m_tool->mouseMoveEvent( event );
}
return retval;
}
@@ -109,6 +118,12 @@
bool KoObjectManager::mouseReleaseEvent( KoGfxEvent *event )
{
+
+ if ( m_tool )
+ {
+ m_tool->mouseReleaseEvent( event );
+ m_tool = 0;
+ }
//TODO
return true;
}
--- trunk/playground/office/flake/lib/KoObjectManager.h #523410:523411
@@ -23,6 +23,8 @@
#include <QLinkedList>
+#include "KoToolMove.h"
+
class KoEnvContext;
class KoGfxEvent;
class KoGraphicBase;
@@ -36,6 +38,7 @@
{
public:
KoObjectManager( QLinkedList<KoGraphicBase *> &objects );
+ virtual ~KoObjectManager() {}
void setObjects( QLinkedList<KoGraphicBase *> &objects );
@@ -50,6 +53,8 @@
private:
QLinkedList<KoGraphicBase *> & m_objects;
KoSelection * m_selection;
+ KoTool * m_tool;
+ KoToolMove m_moveTool;
};
#endif /* KOOBJECTMANAGER_H */
--- trunk/playground/office/flake/lib/KoSelection.cpp #523410:523411
@@ -39,7 +39,7 @@
painter.save();
QRectF bb( boundingBox() );
- QPen pen (Qt::red );
+ QPen pen( Qt::red );
painter.setPen( pen );
painter.drawRect( bb );
@@ -94,57 +94,18 @@
bool KoSelection::mousePressEvent( KoGfxEvent *event )
{
bool retval = true;
- qDebug() << "KoSelection::mousePressEvent:" << this << " " << event->m_point;
- if ( count() > 0 )
- {
- m_movePos = event->m_point;
- }
- else if ( count() == 1 )
- {
- retval = m_selectedObjects.first()->mousePressEvent( event );
- }
- else
- {
- retval = false;
- }
-
return retval;
}
bool KoSelection::mouseMoveEvent( KoGfxEvent *event )
{
bool retval = true;
- qDebug() << "KoSelection::mouseMoveEvent:" << this << " " << event->m_point;
- if ( count() > 0 )
- {
- QPointF diff( event->m_point - m_movePos );
-
- foreach ( KoGraphicBase * base, m_selectedObjects )
- {
- base->setPos( base->pos() + diff );
- }
- m_movePos = event->m_point;
- }
- else
- {
- retval = false;
- }
-
return retval;
}
bool KoSelection::mouseReleaseEvent( KoGfxEvent *event )
{
bool retval = true;
- qDebug() << "KoSelection::mouseReleaseEvent:" << this << " " << event->m_point;
- if ( count() > 0 )
- {
- }
- else
- {
- retval = false;
- }
-
return retval;
}
--- trunk/playground/office/flake/lib/KoSelection.h #523410:523411
@@ -48,8 +48,6 @@
private:
QList<KoGraphicBase*> m_selectedObjects;
-
- QPointF m_movePos;
};
#endif
--- trunk/playground/office/flake/lib/lib.pro #523410:523411
@@ -8,5 +8,5 @@
INCLUDEPATH += .
# Input
-HEADERS += KoEnvContext.h KoGraphicBase.h KoSelection.h KoGfxStyle.h \
KoObjectManager.h
-SOURCES += KoGraphicBase.cpp KoPathGfxObj.cpp KoSelection.cpp KoGfxStyle.cpp \
KoObjectManager.cpp +HEADERS += KoEnvContext.h KoGraphicBase.h KoSelection.h \
KoGfxStyle.h KoObjectManager.h KoTool.h KoToolMove.h +SOURCES += KoGraphicBase.cpp \
KoPathGfxObj.cpp KoSelection.cpp KoGfxStyle.cpp KoObjectManager.cpp KoToolMove.cpp \
_______________________________________________ koffice-devel mailing list
koffice-devel@kde.org
https://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic