]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Activation of signal "moduleActivated()" performs via custom event in ModuleAction... V6_1_BR
authorstv <stv@opencascade.com>
Fri, 18 Nov 2011 10:08:51 +0000 (10:08 +0000)
committerstv <stv@opencascade.com>
Fri, 18 Nov 2011 10:08:51 +0000 (10:08 +0000)
src/LightApp/LightApp_ModuleAction.cxx
src/LightApp/LightApp_ModuleAction.h

index 584496a58dfe0ab8667f2ed0ec8a4c8992884b5d..14b633dcc815d2c161da5ca62fbf4eea77ce0c95 100755 (executable)
 
 #include <QtxComboBox.h>
 #include <QtxActionSet.h>
-#include <QVBoxLayout>
+
+#include <QtGui/QLayout>
+#include <QtGui/QApplication>
+
+#include <QtCore/QEvent>
 
 /*!
   \class LightApp_ModuleAction::ActionSet
@@ -181,6 +185,23 @@ QWidget* LightApp_ModuleAction::ComboAction::createWidget( QWidget* parent )
   \param item identifier
 */
 
+/*!
+  \class LightApp_ModuleAction::ActivateEvent
+  \brief Internal class to represent custom event for transfer the activation item id.
+  \internal
+*/
+class LightApp_ModuleAction::ActivateEvent : public QEvent
+{
+public:
+  ActivateEvent( QEvent::Type type, int id ) : QEvent( type ), myId( id ) {};
+  ~ActivateEvent() {};
+
+  int     id() const { return myId; }
+
+private:
+  int     myId;
+};
+
 /*!
   \class LightApp_ModuleAction
   \brief An action, representing the list of modules to be inserted to the
@@ -413,6 +434,19 @@ void LightApp_ModuleAction::removedFrom( QWidget* w )
   w->removeAction( mySet );
 }
 
+/*!
+  \brief Perform delayed activation with specified id.
+  \param e custom event
+  \return \c true if the event was processed successfully and \c false otherwise.
+*/
+bool LightApp_ModuleAction::event( QEvent* e )
+{
+  if ( e->type() == QEvent::MaxUser )
+    activate( ((ActivateEvent*)e)->id(), false );
+  else
+    return QtxAction::event( e );
+}
+
 /*!
   \fn void LightApp_ModuleAction::moduleActivated( const QString& name );
   \brief Emitted when the module is activated
@@ -568,5 +602,5 @@ void LightApp_ModuleAction::onChanged()
 */
 void LightApp_ModuleAction::onComboActivated( int id )
 {
-  activate( id, false );
+  QApplication::postEvent( this, new ActivateEvent( QEvent::MaxUser, id ) );
 } 
index 47c4a85ae0406da90e9b046be5354f33c3d81416..56f2efa977bb44c98b3feb7cde89c09e9351531b 100755 (executable)
@@ -40,6 +40,7 @@ class LIGHTAPP_EXPORT LightApp_ModuleAction : public QtxAction
 private:
   class ActionSet;
   class ComboAction;
+  class ActivateEvent;
 
 public:
   enum { None = 0x00, Buttons = 0x01, ComboItem = 0x02, All = Buttons | ComboItem };
@@ -67,7 +68,9 @@ protected:
   virtual void     addedTo( QWidget* );
   virtual void     removedFrom( QWidget* );
 
-signals:
+  virtual bool     event( QEvent* );
+
+Q_SIGNALS:
   void             moduleActivated( const QString& );
 
 private:
@@ -99,11 +102,11 @@ public:
 
   QList<QtxComboBox*> widgets() const;
 
+Q_SIGNALS:
+  void                activatedId( int );
+
 protected:
   virtual QWidget*    createWidget( QWidget* );
-
-signals:
-  void                activatedId( int );
 };
 
 #endif // LIGHTAPP_MODULEACTION_H