diff --git a/crlcore/etc/symbolic/cmos45/technology.conf b/crlcore/etc/symbolic/cmos45/technology.conf index c715c606..3a1df4ad 100644 --- a/crlcore/etc/symbolic/cmos45/technology.conf +++ b/crlcore/etc/symbolic/cmos45/technology.conf @@ -217,9 +217,6 @@ layersExtensionsTable = \ ) -for entry in layersExtensionsTable: - print entry - # Format of an entry in the table: # (Symbolic_Name, CIF_Name, GDSII_Number) gdsLayersTable = \ diff --git a/cumulus/src/plugins/ChipPlugin.py b/cumulus/src/plugins/ChipPlugin.py index 7504fe51..d0f04a18 100644 --- a/cumulus/src/plugins/ChipPlugin.py +++ b/cumulus/src/plugins/ChipPlugin.py @@ -183,8 +183,10 @@ class PlaceCore ( chip.Configuration.ChipConfWrapper ): # Plugin hook functions, unicornHook:menus, ScritMain:call def unicornHook ( **kw ): - plugins.kwUnicornHook( 'plugins.chip' - , 'Chip Placement' + kw['beforeAction'] = 'placeAndRoute.stepByStep' + + plugins.kwUnicornHook( 'placeAndRoute.placeChip' + , 'PLace Chip' , 'Place a Complete Chip (pads && core)' , sys.modules[__name__].__file__ , **kw diff --git a/cumulus/src/plugins/ClockTreePlugin.py b/cumulus/src/plugins/ClockTreePlugin.py index 5cc31b6f..5cdecda5 100755 --- a/cumulus/src/plugins/ClockTreePlugin.py +++ b/cumulus/src/plugins/ClockTreePlugin.py @@ -55,8 +55,10 @@ except Exception, e: # Plugin hook functions, unicornHook:menus, ScritMain:call def unicornHook ( **kw ): - plugins.kwUnicornHook( 'plugins.clockTree' - , 'ClockTree' + kw['beforeAction'] = 'placeAndRoute.placeChip' + + plugins.kwUnicornHook( 'placeAndRoute.clockTree' + , 'Clock Tree' , 'Build a buffered H-Tree for the clock' , sys.modules[__name__].__file__ , **kw diff --git a/cumulus/src/plugins/RSavePlugin.py b/cumulus/src/plugins/RSavePlugin.py index 357e10c8..ac05777e 100644 --- a/cumulus/src/plugins/RSavePlugin.py +++ b/cumulus/src/plugins/RSavePlugin.py @@ -78,9 +78,9 @@ def rsave ( cell, views=CRL.Catalog.State.Physical, depth=0 ): # Plugin hook functions, unicornHook:menus, ScritMain:call def unicornHook ( **kw ): - plugins.kwUnicornHook( 'plugins.rsave' - , 'R-Save Cell (layout)' - , 'Recursively Save Top Cell and it\'s Instances' + plugins.kwUnicornHook( 'tools.rsave' + , 'Recursive Save (layout)' + , 'Recursively save layout of the top cell and it\'s instances' , sys.modules[__name__].__file__ , **kw ) diff --git a/cumulus/src/plugins/RSavePluginAll.py b/cumulus/src/plugins/RSavePluginAll.py index 23b18f36..621dd0fc 100644 --- a/cumulus/src/plugins/RSavePluginAll.py +++ b/cumulus/src/plugins/RSavePluginAll.py @@ -73,9 +73,9 @@ def rsave ( cell, depth=0 ): # Plugin hook functions, unicornHook:menus, ScritMain:call def unicornHook ( **kw ): - plugins.kwUnicornHook( 'plugins.rsaveAll' - , 'R-Save Cell (All)' - , 'Recursively Save Top Cell and it\'s Instances' + plugins.kwUnicornHook( 'tools.rsaveAll' + , 'Rercursive Save (all)' + , 'Recursively save layout and netlist of top cell and it\'s Instances' , sys.modules[__name__].__file__ , **kw ) diff --git a/cumulus/src/plugins/__init__.py b/cumulus/src/plugins/__init__.py index 5684eb98..0906568e 100644 --- a/cumulus/src/plugins/__init__.py +++ b/cumulus/src/plugins/__init__.py @@ -52,7 +52,10 @@ def kwUnicornHook ( menuPath, menuName, menuTip, moduleFile, **kw ): if moduleFile.endswith('.pyc') or moduleFile.endswith('.pyo'): moduleFile = moduleFile[:-1] - editor.addToMenu( menuPath, menuName, menuTip, moduleFile ) + if kw.has_key('beforeAction'): + editor.addToMenu( menuPath, menuName, menuTip, moduleFile, kw['beforeAction'] ) + else: + editor.addToMenu( menuPath, menuName, menuTip, moduleFile ) return diff --git a/etesian/src/GraphicEtesianEngine.cpp b/etesian/src/GraphicEtesianEngine.cpp index 336dd219..bd37c00d 100644 --- a/etesian/src/GraphicEtesianEngine.cpp +++ b/etesian/src/GraphicEtesianEngine.cpp @@ -126,15 +126,17 @@ namespace Etesian { _viewer = viewer; - if (_viewer->hasMenuAction("placeAndRoute.etesianPlace")) { + if (_viewer->hasMenuAction("placeAndRoute.etesianPlaceBlock")) { cerr << Warning( "GraphicEtesianEngine::addToMenu() - Etesian placer already hooked in." ) << endl; return; } - _viewer->addToMenu( "placeAndRoute.etesianPlace" - , "Etesian - Plac&e" - , "Run the Etesian placer" + _viewer->addToMenu( "placeAndRoute.etesianPlaceBlock" + , "Plac&e Block" + , "Place a block [Etesian]" , std::bind(&GraphicEtesianEngine::_place,this) + , QIcon() + , "placeAndRoute.placeChip" ); } diff --git a/hurricane/src/viewer/CellViewer.cpp b/hurricane/src/viewer/CellViewer.cpp index 42958018..a124011d 100644 --- a/hurricane/src/viewer/CellViewer.cpp +++ b/hurricane/src/viewer/CellViewer.cpp @@ -205,12 +205,17 @@ namespace Hurricane { { return findChild(_getAbsWidgetPath(relativePath)) != NULL; } - QMenu* CellViewer::_getParentMenu( const QString& absolutePath ) const + QAction* CellViewer::getMenuAction( const QString& relativePath ) const + { return findChild(_getAbsWidgetPath(relativePath)); } + + + QAction* CellViewer::_getParentMenu( const QString& absolutePath ) const { - QString parentPath = absolutePath.section('.',0,-2); - QMenu* parentMenu = findChild(parentPath); + QString parentPath = absolutePath.section('.',0,-2); + QAction* parentMenu = findChild(parentPath); if (parentMenu == NULL) { if (parentPath != "viewer") { + cerr << "parentPath:\"" << parentPath.toStdString() << "\"" << endl; cerr << Warning( "CellViewer::_getParentMenu() - Missing parent menu for %s." , absolutePath.toStdString().c_str() ) << endl; } @@ -220,35 +225,45 @@ namespace Hurricane { } - QMenu* CellViewer::addMenu ( const QString& path, string text, unsigned int flags ) + QAction* CellViewer::addMenu ( const QString& path, string text, unsigned int flags ) { QString absolutePath = _getAbsWidgetPath( path ); - QMenu* menu = findChild(absolutePath); + QAction* actionMenu = findChild(absolutePath); - if (menu != NULL) return menu; + if (actionMenu != NULL) return actionMenu; + QMenu* menu = new QMenu ( tr(text.c_str()), this ); + if (flags & TopMenu) { - menu = menuBar()->addMenu( tr(text.c_str()) ); - menu->setObjectName( absolutePath ); + actionMenu = menuBar()->addMenu( menu ); + actionMenu->setObjectName( absolutePath ); } else { - QMenu* parentMenu = _getParentMenu( absolutePath ); + menu->setStyleSheet( "font-family: Bitstream Vera Sans Mono" ); + + QAction* parentMenu = _getParentMenu( absolutePath ); if (parentMenu == NULL) return NULL; - menu = parentMenu->addMenu( tr(text.c_str()) ); - menu->setObjectName( absolutePath ); + actionMenu = parentMenu->menu()->addMenu( menu ); + actionMenu->setObjectName( absolutePath ); } - return menu; + return actionMenu; } - bool CellViewer::addToMenu ( const QString& path ) + bool CellViewer::addToMenu ( const QString& path, QString beforePath ) { if (not path.endsWith("====")) return false; - QMenu* menu = _getParentMenu( _getAbsWidgetPath(path) ); - if (menu == NULL) return false; + QString absolutePath = _getAbsWidgetPath( path ); + QAction* menuAction = _getParentMenu( absolutePath ); + if (menuAction == NULL) return false; + + QAction* before = getMenuAction( beforePath ); + QAction* action = new QAction( this ); + action->setSeparator ( true ); + action->setObjectName( absolutePath ); + menuAction->menu()->insertAction( before, action ); - menu->addSeparator(); return true; } @@ -257,12 +272,13 @@ namespace Hurricane { , string text , string textTip , std::function< void() > callback - , QIcon icon ) + , QIcon icon + , QString beforePath ) { QString absolutePath = _getAbsWidgetPath( path ); QAction* action = findChild(absolutePath); if (action == NULL) { - QMenu* parentMenu = _getParentMenu( absolutePath ); + QAction* parentMenu = _getParentMenu( absolutePath ); if (parentMenu == NULL) return NULL; action = new QAction( tr(text.c_str()), this ); @@ -270,7 +286,9 @@ namespace Hurricane { action->setStatusTip ( tr(textTip.c_str()) ); action->setVisible ( true ); if (not icon.isNull()) action->setIcon( icon ); - parentMenu->addAction( action ); + + QAction* before = getMenuAction( beforePath ); + parentMenu->menu()->insertAction( before, action ); _actionCallbacks.insert( make_pair(absolutePath,boost::any(callback)) ); connect( action, SIGNAL(triggered()), this, SLOT(doAction()) ); @@ -282,7 +300,8 @@ namespace Hurricane { QAction* CellViewer::addToMenu ( const QString& path , string text , string textTip - , string scriptPath ) + , string scriptPath + , QString beforePath ) { QString absolutePath = _getAbsWidgetPath( path ); QAction* action = findChild(absolutePath); @@ -292,9 +311,10 @@ namespace Hurricane { action->setStatusTip ( tr(textTip.c_str()) ); action->setVisible ( true ); - QMenu* parentMenu = _getParentMenu( absolutePath ); + QAction* parentMenu = _getParentMenu( absolutePath ); if (parentMenu != NULL) { - parentMenu->addAction( action ); + QAction* before = getMenuAction( beforePath ); + parentMenu->menu()->insertAction( before, action ); } else if (absolutePath == "viewer") { addAction( action ); } @@ -313,6 +333,7 @@ namespace Hurricane { , QIcon icon //, QWidget* receiver //, SlotMethod slotMethod + , QString beforePath ) { QString absolutePath = _getAbsWidgetPath( path ); @@ -325,9 +346,10 @@ namespace Hurricane { action->setVisible ( true ); if (not icon.isNull()) action->setIcon( icon ); - QMenu* parentMenu = _getParentMenu( absolutePath ); + QAction* parentMenu = _getParentMenu( absolutePath ); if (parentMenu != NULL) { - parentMenu->addAction( action ); + QAction* before = getMenuAction( beforePath ); + parentMenu->menu()->insertAction( before, action ); } else if (absolutePath == "viewer") { addAction( action ); } @@ -538,13 +560,13 @@ namespace Hurricane { ); connect( action, SIGNAL(triggered()), this, SLOT(runScriptWidget()) ); - action = addToMenu( "tools.stressScript" - , tr("Python Stress Script") - , tr("Run Python Stress Script (50 times...).") - , QKeySequence() - , QIcon(":/images/python-logo-v3.png") - ); - connect( action, SIGNAL(triggered()), this, SLOT(runStressScript()) ); + // action = addToMenu( "tools.stressScript" + // , tr("Python Stress Script") + // , tr("Run Python Stress Script (50 times...).") + // , QKeySequence() + // , QIcon(":/images/python-logo-v3.png") + // ); + // connect( action, SIGNAL(triggered()), this, SLOT(runStressScript()) ); } diff --git a/hurricane/src/viewer/PyCellViewer.cpp b/hurricane/src/viewer/PyCellViewer.cpp index 4752a7ae..f7bd4300 100644 --- a/hurricane/src/viewer/PyCellViewer.cpp +++ b/hurricane/src/viewer/PyCellViewer.cpp @@ -107,22 +107,27 @@ extern "C" { cdebug_log(20,0) << "PyCellViewer_addToMenu()" << endl; HTRY - METHOD_HEAD("CellViewer.addToMenu()") - - char* path = NULL; - char* text = NULL; - char* textTip = NULL; - char* scriptPath = NULL; - if (not PyArg_ParseTuple(args,"s|sss:CellViewer.addToMenu()", &path, &text, &textTip, &scriptPath)) { - PyErr_SetString ( ConstructorError, "CellViewer.addToMenu(): Takes one or four arguments exactly." ); - return NULL; - } - - if (text != NULL) { - if (cw->addToMenu( path, text, textTip, scriptPath )) Py_RETURN_TRUE; - } else { - if (cw->addToMenu( path )) Py_RETURN_TRUE; - } + METHOD_HEAD("CellViewer.addToMenu()") + + char* nullBefore = ""; + char* path = NULL; + char* text = NULL; + char* textTip = NULL; + char* scriptPath = NULL; + char* before = NULL; + if (not PyArg_ParseTuple( args, "s|ssss:CellViewer.addToMenu()" + , &path, &text, &textTip, &scriptPath, &before)) { + PyErr_SetString ( ConstructorError, "CellViewer.addToMenu(): Takes either one or five arguments." ); + return NULL; + } + + if (before == NULL) before = nullBefore; + + if (text != NULL) { + if (cw->addToMenu( path, text, textTip, scriptPath, before )) Py_RETURN_TRUE; + } else { + if (cw->addToMenu( path, before )) Py_RETURN_TRUE; + } HCATCH Py_RETURN_FALSE; diff --git a/hurricane/src/viewer/hurricane/viewer/CellViewer.h b/hurricane/src/viewer/hurricane/viewer/CellViewer.h index 9d7524e3..6ad78ffe 100644 --- a/hurricane/src/viewer/hurricane/viewer/CellViewer.h +++ b/hurricane/src/viewer/hurricane/viewer/CellViewer.h @@ -94,25 +94,30 @@ namespace Hurricane { QMenu* createDebugMenu (); bool hasMenu ( const QString& path ) const; bool hasMenuAction ( const QString& path ) const; - QMenu* addMenu ( const QString& path + QAction* getMenuAction ( const QString& path ) const; + QAction* addMenu ( const QString& path , std::string text , unsigned int flags=NoFlags ); - bool addToMenu ( const QString& path ); + bool addToMenu ( const QString& path + , QString beforePath="" ); QAction* addToMenu ( const QString& path - , std::string text - , std::string textTip + , std::string text + , std::string textTip , std::function< void() > - , QIcon icon=QIcon() ); + , QIcon icon=QIcon() + , QString beforePath="" ); QAction* addToMenu ( const QString& path - , std::string text - , std::string textTip - , std::string scriptPath ); + , std::string text + , std::string textTip + , std::string scriptPath + , QString beforePath="" ); QAction* addToMenu ( QString path , QString text , QString textTip , const QKeySequence& shortCut - , QIcon icon =QIcon()); + , QIcon icon =QIcon() + , QString beforePath="" ); inline void setEnableRedrawInterrupt ( bool ); inline void setApplicationName ( const QString& ); inline Observer* getCellObserver (); @@ -166,7 +171,7 @@ namespace Hurricane { void rebuildHistory (); private: QString _getAbsWidgetPath ( const QString& relPath ) const; - QMenu* _getParentMenu ( const QString& ) const; + QAction* _getParentMenu ( const QString& ) const; void _runScript ( QString scriptPath ); protected: diff --git a/katana/src/GraphicKatanaEngine.cpp b/katana/src/GraphicKatanaEngine.cpp index 299c30bc..abedcac0 100644 --- a/katana/src/GraphicKatanaEngine.cpp +++ b/katana/src/GraphicKatanaEngine.cpp @@ -359,54 +359,60 @@ namespace Katana { _viewer = viewer; - if (_viewer->hasMenuAction("placeAndRoute.katana.route")) { + if (not _viewer->hasMenuAction("beta")) + _viewer->addMenu( "beta", "Beta", CellViewer::TopMenu ); + if (not _viewer->hasMenuAction("beta.placeAndRoute")) + _viewer->addMenu( "beta.placeAndRoute", "P&&R" ); + + if (_viewer->hasMenuAction("beta.placeAndRoute.route")) { cerr << Warning( "GraphicKatanaEngine::addToMenu() - Katana detailed router already hooked in." ) << endl; return; } - _viewer->addMenu ( "placeAndRoute.katana" , "Katana" ); - _viewer->addMenu ( "placeAndRoute.katana.stepByStep", "&Step by step" ); + _viewer->addMenu ( "beta.placeAndRoute.stepByStep", "&Step by step" ); - _viewer->addToMenu( "placeAndRoute.katana.route" - , "Katana - &Route" + _viewer->addToMenu( "beta.placeAndRoute.route" + , "&Route . . . . . [Katana]" , "Route the design (global & detailed)" , std::bind(&GraphicKatanaEngine::_route,this) + , QIcon() + , "beta.placeAndRoute.stepByStep" ); - _viewer->addToMenu( "placeAndRoute.katana.stepByStep.========" ); - _viewer->addToMenu( "placeAndRoute.katana.stepByStep.detailedPreRoute" - , "Katana - Detailed Pre-Route" + _viewer->addToMenu( "beta.placeAndRoute.stepByStep.========" ); + _viewer->addToMenu( "beta.placeAndRoute.stepByStep.detailedPreRoute" + , "Detailed Pre-Route . [Katana]" , "Run the Katana detailed router on pre-routed nets" , std::bind(&GraphicKatanaEngine::_runNegociatePreRouted,this) ); - _viewer->addToMenu( "placeAndRoute.katana.stepByStep.globalRoute" - , "Katana - &Global Route" + _viewer->addToMenu( "beta.placeAndRoute.stepByStep.globalRoute" + , "&Global Route . . . [Katana]" , "Run the Katana global router" , std::bind(&GraphicKatanaEngine::_globalRoute,this) ); - _viewer->addToMenu( "placeAndRoute.katana.stepByStep.detailedRoute" - , "Katana - &Detailed Route" + _viewer->addToMenu( "beta.placeAndRoute.stepByStep.detailedRoute" + , "&Detailed Route . . [Katana]" , "Run the Katana detailed router" , std::bind(&GraphicKatanaEngine::_detailRoute,this) ); - _viewer->addToMenu( "placeAndRoute.katana.stepByStep.finalize" - , "Katana - &Finalize Routing" + _viewer->addToMenu( "beta.placeAndRoute.stepByStep.finalize" + , "&Finalize Routing . [Katana]" , "Closing Routing" , std::bind(&GraphicKatanaEngine::_finalize,this) ); - _viewer->addToMenu( "placeAndRoute.katana.stepByStep.dumpMeasures" - , "Katana - Dump &Measures" + _viewer->addToMenu( "beta.placeAndRoute.stepByStep.dumpMeasures" + , "Dump &Measures . . [Katana]" , "Dumping Measurements on the disk" , std::bind(&GraphicKatanaEngine::_dumpMeasures,this) ); - _viewer->addToMenu( "placeAndRoute.katana.stepByStep.save" - , "Katana - &Save Design" +#if NO_NEED_OF_IT_NOW + _viewer->addToMenu( "beta.placeAndRoute.stepByStep.save" + , "&Save Design" , "Save routed design (temporary hack)" , std::bind(&GraphicKatanaEngine::_save,this) ); -#if NO_NEED_OF_IT_NOW - _viewer->addToMenu( "placeAndRoute.katana.stepByStep.runTest" - , "Katana - Run &Test" + _viewer->addToMenu( "beta.placeAndRoute.stepByStep.runTest" + , "Run &Test" , "Run Test Program (symmetric routing of gmChamla)" , std::bind(&GraphicKatanaEngine::_runTest,this) ); diff --git a/kite/src/GraphicKiteEngine.cpp b/kite/src/GraphicKiteEngine.cpp index 8cfa41ae..d166ebdb 100644 --- a/kite/src/GraphicKiteEngine.cpp +++ b/kite/src/GraphicKiteEngine.cpp @@ -285,57 +285,59 @@ namespace Kite { } _viewer->addToMenu( "placeAndRoute.route" - , "Kite - &Route" - , "Route the design (global & detailed)" + , "&Route" + , "Complete routing of the design (global, detailed and finalize) [Kite]" , std::bind(&GraphicKiteEngine::_route,this) + , QIcon() + , "placeAndRoute.stepByStep" ); _viewer->addToMenu( "placeAndRoute.stepByStep.========" ); _viewer->addToMenu( "placeAndRoute.stepByStep.wipeoutRouting" - , "Kite - Erase Previous Routing" + , "Erase Previous Routing" , "Erase any previously routed wires" , std::bind(&GraphicKiteEngine::_wipeoutRouting,this) ); _viewer->addToMenu( "placeAndRoute.stepByStep.detailedPreRoute" - , "Kite - Detailed Pre-Route" - , "Run the Kite detailed router on pre-routed nets" + , "Detailed Pre-Route" + , "Run the detailed router on global pre-routed nets [Kite]" , std::bind(&GraphicKiteEngine::_runNegociatePreRouted,this) ); _viewer->addToMenu( "placeAndRoute.stepByStep.globalRoute" - , "Kite - &Global Route" - , "Run the Knik global router" + , "&Global Route" + , "Run the global router [nik]" , std::bind(&GraphicKiteEngine::_globalRoute,this) ); _viewer->addToMenu( "placeAndRoute.stepByStep.loadGlobalRouting" - , "Kite - &Load Global Routing" - , "Load a solution for the global routing (.kgr)" + , "&Load Global Routing" + , "Load a solution for the global routing (.kgr) [Knik]" , std::bind(&GraphicKiteEngine::_loadGlobalSolution,this) ); _viewer->addToMenu( "placeAndRoute.stepByStep.saveGlobalRouting" - , "Kite - &Save Global Routing" - , "Save a global router solution (.kgr)" + , "&Save Global Routing" + , "Save a global router solution (.kgr) [Knik]" , std::bind(&GraphicKiteEngine::_saveGlobalSolution,this) ); _viewer->addToMenu( "placeAndRoute.stepByStep.detailedRoute" - , "Kite - &Detailed Route" - , "Run the Kite detailed router" + , "&Detailed Route" + , "Run the detailed router [Kite]" , std::bind(&GraphicKiteEngine::_detailRoute,this) ); _viewer->addToMenu( "placeAndRoute.stepByStep.finalize" - , "Kite - &Finalize Routing" - , "Closing Routing" + , "&Finalize Routing" + , "Cleanup all routing related data structures [Kite]" , std::bind(&GraphicKiteEngine::_finalize,this) ); _viewer->addToMenu( "placeAndRoute.stepByStep.dumpMeasures" - , "Kite - Dump &Measures" - , "Dumping Measurements on the disk" + , "Dump &Measures" + , "Dumping Measurements on the disk [Kite]" , std::bind(&GraphicKiteEngine::_dumpMeasures,this) ); - _viewer->addToMenu( "placeAndRoute.stepByStep.save" - , "Kite - &Save Design" - , "Save routed design (temporary hack)" - , std::bind(&GraphicKiteEngine::_save,this) - ); + // _viewer->addToMenu( "placeAndRoute.stepByStep.save" + // , "&Save Design" + // , "Save routed design (temporary hack)" + // , std::bind(&GraphicKiteEngine::_save,this) + // ); } diff --git a/tutorial/python/runDemo.py b/tutorial/python/runDemo.py index 3c8e9e01..40d8f7df 100644 --- a/tutorial/python/runDemo.py +++ b/tutorial/python/runDemo.py @@ -141,9 +141,9 @@ def runDemo ( cell, editor ): def unicornHook ( **kw ): editor = kw['editor'] editor.addMenu( 'tutorials' , 'Tutorials', Viewer.CellViewer.TopMenu ) - editor.addMenu( 'tutorials.plugins', 'Plugins' , Viewer.CellViewer.NoFlags ) - plugins.kwUnicornHook( 'tutorials.plugins.runDemo' - , 'Tutorial - Run Demo (Python flavor)' + #editor.addMenu( 'tutorials.plugins', 'Plugins' , Viewer.CellViewer.NoFlags ) + plugins.kwUnicornHook( 'tutorials.runDemo' + , 'Run Demo (Python flavor)' , 'Launch runDemo() in the Tutorial Python plugin.' , sys.modules[__name__].__file__ , **kw diff --git a/unicorn/python/unicornInit.py b/unicorn/python/unicornInit.py index 4cb2e7a1..012c507a 100644 --- a/unicorn/python/unicornInit.py +++ b/unicorn/python/unicornInit.py @@ -67,7 +67,7 @@ def unicornConfigure ( **kw ): print WarningMessage( 'The menu has already been created.' ) return - editor.addMenu( 'plugins', 'Plu&gins', Viewer.CellViewer.TopMenu ) + #editor.addMenu( 'plugins', 'Plu&gins', Viewer.CellViewer.TopMenu ) for pluginFile in os.listdir( pluginsDir ): if pluginFile == "__init__.py": continue diff --git a/unicorn/src/UnicornGui.cpp b/unicorn/src/UnicornGui.cpp index 1cf14f46..c99ed087 100644 --- a/unicorn/src/UnicornGui.cpp +++ b/unicorn/src/UnicornGui.cpp @@ -186,6 +186,8 @@ namespace Unicorn { , tr("Library Manager") , tr("Browse through Views, Cells & Libraries") , QKeySequence(tr("CTRL+M")) + , QIcon() + , "tools.script" ); connect( action, SIGNAL(triggered()), _libraryManager, SLOT(toggleShow()) ); connect( this , SIGNAL(cellLoadedFromDisk(Cell*)), _libraryManager, SLOT(updateLibrary(Cell*)) ); diff --git a/unicorn/src/cgt.py b/unicorn/src/cgt.py index b1926b13..70f4533e 100755 --- a/unicorn/src/cgt.py +++ b/unicorn/src/cgt.py @@ -186,9 +186,9 @@ if __name__ == '__main__': unicorn = Unicorn.UnicornGui.create() unicorn.setApplicationName ('cgt') - unicorn.registerTool (Katana.GraphicKatanaEngine.grab()) unicorn.registerTool (Etesian.GraphicEtesianEngine.grab()) unicorn.registerTool (Kite.GraphicKiteEngine.grab()) + unicorn.registerTool (Katana.GraphicKatanaEngine.grab()) unicorn.registerTool (Bora.GraphicBoraEngine.grab()) #unicorn.setAnonNetSelectable(False) unicorn.setLayerVisible ("grid" , False);