X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/blast.git/blobdiff_plain/d30c9cf675ad7141d1c8e31d2e72315267d45cf2..6e2b3026c6a496e81642c373796bd39dad33d2a6:/Dispatcher.h?ds=sidebyside diff --git a/Dispatcher.h b/Dispatcher.h index fa77360..538ee66 100644 --- a/Dispatcher.h +++ b/Dispatcher.h @@ -15,14 +15,22 @@ class GroupScene; class AbstractBoxItem; class GroupItem; class BoxItem; +class SourceItem; class ConnectionItem; class InterfaceItem; +class GroupBlock; +class FunctionalBlock; using namespace std; using namespace Qt; +/*! + * \brief The Dispatcher class + * The Dispatcher class represents the control part (in MVC) of the application. It relays + * user's interactions with the GUI into model's modifications and feeds back them onto the view. + */ class Dispatcher { public: @@ -32,47 +40,96 @@ public: GroupWidget* loadProject(const QString& filename); inline int getNumberOfScenes() { return groupList.length(); } - bool connect(InterfaceItem *iface1, InterfaceItem *iface2); - void checkSelection(); + void unselectAllItems(int direction=0); void setCurrentGroupWidget(GroupWidget *win); void changeConnectionMode(int mode = -1); - void rename(AbstractBoxItem* item); - void rename(InterfaceItem* item); + + GroupWidget* createTopScene(); GroupWidget* createChildScene(GroupWidget* parentWidget, BoxItem* upperItemOfGroupItem = NULL); - void showRaiseWindow(AbstractBoxItem *item); - void showRstClkInter(AbstractBoxItem *item); - void addNewEmptyGroup(); + void destroyScene(GroupScene* scene); + void showRaiseWindow(BoxItem *item); + void showRstClkIface(AbstractBoxItem *item); + void showWishboneIface(AbstractBoxItem *item); + GroupWidget *addNewEmptyGroup(GroupScene *scene, bool show = true); void addNewFullGroup(); inline GroupWidget* getCurrentGroup() { return currentGroup; } + inline void setSceneCounter(int value) { sceneCounter = value;} + bool isCurrentProject; public slots: QMap getAllGroupNames(); - GroupScene* searchSceneById(int id); - GroupScene* searchSceneByName(QString name); - BoxItem* searchBlockItemById(int id); - GroupItem* searchGroupItemById(int id); - InterfaceItem* searchInterfaceItemById(int id); - - void removeBlock(AbstractBoxItem* item); - void duplicateBlock(BoxItem* item); - void duplicateInterface(InterfaceItem* item); - void addBlock(int idCategory, int idBlock, int idScene); - ConnectionItem *addConnection(InterfaceItem *input, InterfaceItem *output); - void removeAllBlockConnections(AbstractBoxItem *block); + GroupScene* getSceneById(int id); + GroupScene* getSceneByName(QString name); + BoxItem* getBoxItemById(int id); + GroupItem* getGroupItemById(int id); + InterfaceItem* getInterfaceItemById(int id); + + + // block ops + BoxItem* addBlock(int idCategory, int idBlock, int idScene); + void removeBoxItem(BoxItem* item); + void duplicateBoxItem(BoxItem* item); + void renameFunctionalBlock(BoxItem* item); + void generateBlockVHDL(BoxItem* item); + void renameGroupBlock(GroupItem* item); + void renameSourceBlock(SourceItem* item); + void removeSourceItem(SourceItem* item); + void duplicateSourceItem(SourceItem* item); + + + // interface ops + /*! + * \brief connectInterToGroup + * \param item item is always owned by a BoxItem + * + * This method is called only when the user right clicks on an InterfaceItem (that belongs + * to a BoxItem and if it is NOT connected to an InterfaceItem of the GroupItem) and chooses + * connect to group in the contextual menu. + * Thus, parameter item is always owned by a BoxItem + */ + void connectInterToGroup(InterfaceItem* item); + /*! + * \brief removeFunctionalInterface + * \param item item is always owned by a BoxItem + * + * This method is called only when the user right clicks on an InterfaceItem (that belongs + * to a BoxItem that represents a functional block and has a multiplicity > 1) and chooses remove in the contextual menu. + * Thus, parameter item is always owned by a BoxItem + */ + void removeFunctionalInterface(InterfaceItem* item); + /*! + * \brief removeGroupInterface + * \param item item is always owned by a GroupItem + * + * This method is called only when the user right clicks on an InterfaceItem (that belongs + * to a GroupItem and if it is connected only to an inner interface) and chooses remove in the contextual menu. + * Thus, parameter item is always owned by a GroupItem + */ + void removeGroupInterface(InterfaceItem* item); + void duplicateInterfaceItem(InterfaceItem* item); + void showProperties(InterfaceItem *inter); + void renameInterface(InterfaceItem* item); + void showPatterns(InterfaceItem* item); + void showModifier(InterfaceItem* item); + void removeModifier(InterfaceItem* item); + + // connection ops + bool createConnection(InterfaceItem *iface1, InterfaceItem *iface2, bool visible = true); + void removeAllBlockConnections(AbstractBoxItem *item); void removeConnection(ConnectionItem *conn); - void removeUselessGroupInterfaces(); + + + // analysis ops + void findGraphModifications(FunctionalBlock* block); // find modif so that block has compatible inputs + + // others void showBlocksLibrary(); - void showProperties(InterfaceItem *inter); - void connectInterToGroup(InterfaceItem* item); - void disconnectInterFromGroup(InterfaceItem* item); - void removeGroupInterface(InterfaceItem* item); - void addConnection(); void closeCurrentProject();