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

List:       kde-commits
Subject:    KDE/kdeedu/step/step
From:       Sebastian Voecking <kde () voecking ! net>
Date:       2011-02-05 18:30:11
Message-ID: 20110205183011.C77F53E1F9 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1219022 by voecking:

Cleaned up action handling, use only actions from application's actionCollection in \
the context menu, disable delete action while creating new objects

BUG: 165600


 M  +2 -2      gasgraphics.cc  
 M  +2 -1      gasgraphics.h  
 M  +11 -5     mainwindow.cc  
 M  +1 -1      mainwindow.h  
 M  +2 -2      softbodygraphics.cc  
 M  +1 -1      softbodygraphics.h  
 M  +8 -8      toolgraphics.cc  
 M  +4 -4      toolgraphics.h  
 M  +4 -2      worldgraphics.cc  
 M  +2 -1      worldgraphics.h  
 M  +2 -2      worldmodel.cc  
 M  +4 -0      worldmodel.h  
 M  +5 -9      worldscene.cc  
 M  +3 -1      worldscene.h  


--- trunk/KDE/kdeedu/step/step/gasgraphics.cc #1219021:1219022
@@ -303,7 +303,7 @@
     GasMenuHandler* _handler;
 };
 
-void GasMenuHandler::populateMenu(QMenu* menu)
+void GasMenuHandler::populateMenu(QMenu* menu, KActionCollection* actions)
 {
     _createGasParticlesUi = 0;
     _createGasParticlesDialog = 0;
@@ -312,7 +312,7 @@
     menu->addAction(KIcon("step_object_GasParticle"), i18n("Create particles..."), \
                this, SLOT(createGasParticles()));
     //menu->addAction(KIcon("edit-clear"), i18n("Clear gas"), this, \
SLOT(clearGas()));  menu->addSeparator();
-    ItemMenuHandler::populateMenu(menu);
+    ItemMenuHandler::populateMenu(menu, actions);
 }
 
 inline StepCore::Gas* GasMenuHandler::gas() const
--- trunk/KDE/kdeedu/step/step/gasgraphics.h #1219021:1219022
@@ -20,6 +20,7 @@
 #define STEP_GASGRAPHICS_H
 
 #include "worldgraphics.h"
+#include <kaction.h>
 
 namespace StepCore {
     class Gas;
@@ -88,7 +89,7 @@
     GasMenuHandler(StepCore::Object* object, WorldModel* worldModel, QObject* \
parent)  : ItemMenuHandler(object, worldModel, parent) {}
 
-    void populateMenu(QMenu* menu);
+    void populateMenu(QMenu* menu, KActionCollection* actions);
 
 public slots:
     void createGasParticles();
--- trunk/KDE/kdeedu/step/step/mainwindow.cc #1219021:1219022
@@ -77,6 +77,7 @@
     setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
 
     worldModel = new WorldModel(this);
+    worldModel->setActions(actionCollection());
 
     itemPalette = new ItemPalette(worldModel, this);
     itemPalette->setObjectName("itemPalette");
@@ -104,13 +105,15 @@
 
     connect(worldModel, SIGNAL(simulationStopped(int)), this, \
                SLOT(simulationStopped(int)));
     connect(worldModel->selectionModel(), SIGNAL(selectionChanged(const \
                QItemSelection&, const QItemSelection&)),
-                                 this, SLOT(worldSelectionChanged(const \
QItemSelection&, const QItemSelection&))); +                                 this, \
SLOT(worldSelectionChanged()));  connect(itemPalette, SIGNAL(beginAddItem(const \
                QString&)),
                                  worldScene, SLOT(beginAddItem(const QString&)));
     connect(worldScene, SIGNAL(endAddItem(const QString&, bool)),
                                  itemPalette, SLOT(endAddItem(const QString&, \
bool)));  connect(worldScene, SIGNAL(linkActivated(const KUrl&)),
                                  infoBrowser, SLOT(openUrl(const KUrl&)));
+    connect(worldScene, SIGNAL(endAddItem(QString, bool)),
+            this, SLOT(worldSelectionChanged()));
     
 
     setupActions();
@@ -182,7 +185,7 @@
     actionDelete = actionCollection()->add<KAction>("edit_delete", worldModel, \
SLOT(deleteSelectedItems()));  actionDelete->setText(i18n("&Delete"));
     actionDelete->setIcon(KIcon("edit-delete"));
-    actionDelete->setShortcut(KShortcut(Qt::CTRL+Qt::Key_Delete));
+    actionDelete->setShortcut(KShortcut(Qt::Key_Delete));
     actionDelete->setEnabled(false);
 
     /* Simulation menu */
@@ -546,14 +549,17 @@
     else actionRedo->setText(i18n("Re&do: %1", redoText));
 }
 
-void MainWindow::worldSelectionChanged(const QItemSelection&, const QItemSelection&)
+void MainWindow::worldSelectionChanged()
 {
-    foreach(const QModelIndex &index, \
                worldModel->selectionModel()->selection().indexes()) {
-        if(worldModel->item(index)) {
+    if (!worldScene->hasItemCreator()) {
+        foreach (const QModelIndex &index,
+                 worldModel->selectionModel()->selection().indexes()) {
+            if (index != worldModel->worldIndex() && worldModel->item(index)) {
             actionDelete->setEnabled(true);
             return;
         }
     }
+    }
     actionDelete->setEnabled(false);
 }
 
--- trunk/KDE/kdeedu/step/step/mainwindow.h #1219021:1219022
@@ -79,7 +79,7 @@
     void updateCaption();
     void undoTextChanged(const QString& undoText);
     void redoTextChanged(const QString& redoText);
-    void worldSelectionChanged(const QItemSelection&, const QItemSelection&);
+    void worldSelectionChanged();
 
     /*
 protected slots:
--- trunk/KDE/kdeedu/step/step/softbodygraphics.cc #1219021:1219022
@@ -87,7 +87,7 @@
     return false;
 }
 
-void SoftBodyMenuHandler::populateMenu(QMenu* menu)
+void SoftBodyMenuHandler::populateMenu(QMenu* menu, KActionCollection* actions)
 {
     _createSoftBodyItemsUi = 0;
     _createSoftBodyItemsDialog = 0;
@@ -97,7 +97,7 @@
     menu->addAction(KIcon("step_object_GasParticle"), i18n("Create items..."), this, \
                SLOT(createSoftBodyItems()));
     //menu->addAction(KIcon("edit-clear"), i18n("Clear gas"), this, \
SLOT(clearGas()));  menu->addSeparator();
-    ItemMenuHandler::populateMenu(menu);
+    ItemMenuHandler::populateMenu(menu, actions);
 }
 
 inline StepCore::SoftBody* SoftBodyMenuHandler::softBody() const
--- trunk/KDE/kdeedu/step/step/softbodygraphics.h #1219021:1219022
@@ -53,7 +53,7 @@
     SoftBodyMenuHandler(StepCore::Object* object, WorldModel* worldModel, QObject* \
parent)  : ItemMenuHandler(object, worldModel, parent), _applied(false) {}
 
-    void populateMenu(QMenu* menu);
+    void populateMenu(QMenu* menu, KActionCollection* actions);
 
     bool applied() const { return _applied; }
 
--- trunk/KDE/kdeedu/step/step/toolgraphics.cc #1219021:1219022
@@ -1074,7 +1074,7 @@
 #endif
 }
 
-void GraphMenuHandler::populateMenu(QMenu* menu)
+void GraphMenuHandler::populateMenu(QMenu* menu, KActionCollection* actions)
 {
     _confUi = 0;
     _confDialog = 0;
@@ -1083,7 +1083,7 @@
     menu->addAction(KIcon("edit-clear"), i18n("Clear graph"), this, \
                SLOT(clearGraph()));
     menu->addAction(KIcon("configure"), i18n("Configure graph..."), this, \
SLOT(configureGraph()));  menu->addSeparator();
-    ItemMenuHandler::populateMenu(menu);
+    ItemMenuHandler::populateMenu(menu, actions);
 }
 
 inline StepCore::Graph* GraphMenuHandler::graph() const
@@ -1285,7 +1285,7 @@
     _lcdNumber->display(value);
 }
 
-void MeterMenuHandler::populateMenu(QMenu* menu)
+void MeterMenuHandler::populateMenu(QMenu* menu, KActionCollection* actions)
 {
     _confUi = 0;
     _confDialog = 0;
@@ -1293,7 +1293,7 @@
 
     menu->addAction(KIcon("configure"), i18n("Configure meter..."), this, \
SLOT(configureMeter()));  menu->addSeparator();
-    ItemMenuHandler::populateMenu(menu);
+    ItemMenuHandler::populateMenu(menu, actions);
 }
 
 inline StepCore::Meter* MeterMenuHandler::meter() const
@@ -1580,7 +1580,7 @@
     }
 }
 
-void ControllerMenuHandler::populateMenu(QMenu* menu)
+void ControllerMenuHandler::populateMenu(QMenu* menu, KActionCollection* actions)
 {
     _confUi = 0;
     _confDialog = 0;
@@ -1591,7 +1591,7 @@
     menu->addSeparator();
     menu->addAction(KIcon("configure"), i18n("Configure controller..."), this, \
SLOT(configureController()));  menu->addSeparator();
-    ItemMenuHandler::populateMenu(menu);
+    ItemMenuHandler::populateMenu(menu, actions);
 }
 
 inline StepCore::Controller* ControllerMenuHandler::controller() const
@@ -1849,11 +1849,11 @@
                 WorldScene::SnapSetLocalPosition, 0, movingState, _item);
 }
 
-void TracerMenuHandler::populateMenu(QMenu* menu)
+void TracerMenuHandler::populateMenu(QMenu* menu, KActionCollection* actions)
 {
     menu->addAction(KIcon("edit-clear"), i18n("Clear trace"), this, \
SLOT(clearTracer()));  menu->addSeparator();
-    ItemMenuHandler::populateMenu(menu);
+    ItemMenuHandler::populateMenu(menu, actions);
 }
 
 void TracerMenuHandler::clearTracer()
--- trunk/KDE/kdeedu/step/step/toolgraphics.h #1219021:1219022
@@ -240,7 +240,7 @@
     GraphMenuHandler(StepCore::Object* object, WorldModel* worldModel, QObject* \
parent)  : ItemMenuHandler(object, worldModel, parent) {}
 
-    void populateMenu(QMenu* menu);
+    void populateMenu(QMenu* menu, KActionCollection* actions);
 
 protected slots:
     void clearGraph();
@@ -287,7 +287,7 @@
     MeterMenuHandler(StepCore::Object* object, WorldModel* worldModel, QObject* \
parent)  : ItemMenuHandler(object, worldModel, parent) {}
 
-    void populateMenu(QMenu* menu);
+    void populateMenu(QMenu* menu, KActionCollection* actions);
 
 protected slots:
     void configureMeter();
@@ -347,7 +347,7 @@
     ControllerMenuHandler(StepCore::Object* object, WorldModel* worldModel, QObject* \
parent)  : ItemMenuHandler(object, worldModel, parent) {}
 
-    void populateMenu(QMenu* menu);
+    void populateMenu(QMenu* menu, KActionCollection* actions);
 
 protected slots:
     void incTriggered();
@@ -404,7 +404,7 @@
     TracerMenuHandler(StepCore::Object* object, WorldModel* worldModel, QObject* \
parent)  : ItemMenuHandler(object, worldModel, parent) {}
 
-    void populateMenu(QMenu* menu);
+    void populateMenu(QMenu* menu, KActionCollection* actions);
 
 protected slots:
     void clearTracer();
--- trunk/KDE/kdeedu/step/step/worldgraphics.cc #1219021:1219022
@@ -30,6 +30,7 @@
 #include <QPainter>
 #include <QTimer>
 #include <QMenu>
+#include <KActionCollection>
 #include <KIcon>
 #include <KLocale>
 
@@ -740,11 +741,12 @@
 {
 }
 
-void ItemMenuHandler::populateMenu(QMenu* menu)
+void ItemMenuHandler::populateMenu(QMenu* menu, KActionCollection* actions)
 {
     StepCore::Item* item = dynamic_cast<StepCore::Item*>(_object);
     if(item && item->world() != item) {
-        menu->addAction(KIcon("edit-delete"), i18n("&Delete"), this, \
SLOT(deleteItem())); +        menu->addAction(actions->action("edit_delete"));
+        //menu->addAction(KIcon("edit-delete"), i18n("&Delete"), this, \
SLOT(deleteItem()));  }
 }
 
--- trunk/KDE/kdeedu/step/step/worldgraphics.h #1219021:1219022
@@ -39,6 +39,7 @@
 class WorldScene;
 class QEvent;
 class QTimer;
+class KActionCollection;
 
 /** \brief Base class for item creators.
  *
@@ -430,7 +431,7 @@
 
     /** Populate context menu by item-specific entries.
      *  Default implementation adds delete action. */
-    virtual void populateMenu(QMenu* menu);
+    virtual void populateMenu(QMenu* menu, KActionCollection* actions);
 
 protected slots:
     void deleteItem();
--- trunk/KDE/kdeedu/step/step/worldmodel.cc #1219021:1219022
@@ -305,7 +305,7 @@
 }
 
 WorldModel::WorldModel(QObject* parent)
-    : QAbstractItemModel(parent)
+    : QAbstractItemModel(parent), _actions(0)
 {
     _selectionModel = new QItemSelectionModel(this, this);
     _undoStack = new KUndoStack(this);
@@ -807,7 +807,7 @@
     KMenu* menu = new KMenu();
     menu->addTitle(index.data(Qt::DisplayRole).toString());
     ItemMenuHandler* handler = _worldFactory->newItemMenuHandler(object(index), \
                this, menu);
-    handler->populateMenu(menu);
+    handler->populateMenu(menu, _actions);
     return menu;
 }
 
--- trunk/KDE/kdeedu/step/step/worldmodel.h #1219021:1219022
@@ -203,6 +203,8 @@
     /** Pauses the simulation until control returns to event loop */
     void simulationPause();
 
+    void setActions(KActionCollection* actions) { _actions = actions; }
+
 public slots:
     void simulationStart(); ///< Start simulation
     void simulationStop();  ///< Stop simulation
@@ -260,6 +262,8 @@
     bool _simulationStopping;
     bool _simulationPaused;
 
+    KActionCollection* _actions;
+
     friend class CommandEditProperty;
     friend class CommandNewItem;
     friend class CommandSetSolver;
--- trunk/KDE/kdeedu/step/step/worldscene.cc #1219021:1219022
@@ -233,15 +233,6 @@
     QGraphicsScene::mousePressEvent(mouseEvent);
 }
 
-void WorldScene::keyPressEvent(QKeyEvent* keyEvent)
-{
-    if(keyEvent->matches(QKeySequence::Delete)) {
-        _worldModel->simulationPause();
-        _worldModel->deleteSelectedItems();
-        keyEvent->accept();
-    } else QGraphicsScene::keyPressEvent(keyEvent);
-}
-
 void WorldScene::helpEvent(QGraphicsSceneHelpEvent *helpEvent)
 {
     helpEvent->accept();
@@ -557,6 +548,11 @@
     }
 }
 
+bool WorldScene::hasItemCreator() const
+{
+    return _itemCreator && !_itemCreator->finished();
+}
+
 WorldGraphicsView::WorldGraphicsView(WorldScene* worldScene, QWidget* parent)
     : QGraphicsView(worldScene, parent)
 {
--- trunk/KDE/kdeedu/step/step/worldscene.h #1219021:1219022
@@ -113,6 +113,9 @@
     /** Get associated WorldModel */
     WorldModel* worldModel() const { return _worldModel; }
 
+    /** Check if scene has an active item creator */
+    bool hasItemCreator() const;
+
 public slots:
     /** Begin adding new item. Creates appropriate ItemCreator */
     void beginAddItem(const QString& name);
@@ -163,7 +166,6 @@
 protected:
     bool event(QEvent* event);
     void mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent);
-    void keyPressEvent(QKeyEvent* keyEvent);
     void helpEvent(QGraphicsSceneHelpEvent *helpEvent);
     //void contextMenuEvent(QGraphicsSceneContextMenuEvent* contextMenuEvent);
 


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

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