X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMGUI%2FGEOMGUI_CreationInfoWdg.cxx;h=5c3681e28df6f1fa778bac57d987225ebce38c1c;hb=f312091eb5bf90096c0a8d4d0ed4be68f34fbd9b;hp=a8ffeac86653e60eae94bf08c35e175a93c2765b;hpb=bf782252cfab159751d7a2a41370ff39354d39cc;p=modules%2Fgeom.git diff --git a/src/GEOMGUI/GEOMGUI_CreationInfoWdg.cxx b/src/GEOMGUI/GEOMGUI_CreationInfoWdg.cxx index a8ffeac86..5c3681e28 100644 --- a/src/GEOMGUI/GEOMGUI_CreationInfoWdg.cxx +++ b/src/GEOMGUI/GEOMGUI_CreationInfoWdg.cxx @@ -1,9 +1,9 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -21,9 +21,13 @@ // Author : Edward AGAPOV (eap) #include "GEOMGUI_CreationInfoWdg.h" + +#include "GEOMImpl_Types.hxx" -#include #include +#include +#include +#include #include #include @@ -37,53 +41,44 @@ GEOMGUI_CreationInfoWdg::GEOMGUI_CreationInfoWdg( SalomeApp_Application* app ) //:QWidget( app->desktop() ) { - setWindowTitle(tr("CREATION_INFO_TITLE")); - - QFrame* frame = new QFrame( this ); - - QVBoxLayout* myLayout = new QVBoxLayout( this ); - myLayout->addWidget( frame ); - myLayout->setMargin(0); + setWindowTitle( tr( "CREATION_INFO_TITLE" ) ); - QGroupBox* operationGB = new QGroupBox( tr( "OPERATION" ), frame ); - - myIconLbl = new QLabel( operationGB ); - myOperaionLnEd = new QLineEdit( operationGB ); - myOperaionLnEd->setReadOnly( true ); - myParamsTreeWd = new QTreeWidget( frame ); + myParamsTreeWd = new QTreeWidget( this ); myParamsTreeWd->setColumnCount( 2 ); myParamsTreeWd->setHeaderLabels( QStringList() << tr( "PARAMETER" ) << tr( "VALUE" ) ); myParamsTreeWd->header()->setStretchLastSection( true ); myParamsTreeWd->header()->setResizeMode( 0, QHeaderView::ResizeToContents ); - QHBoxLayout* operationLay = new QHBoxLayout( operationGB ); - operationLay->addWidget( myIconLbl ); - operationLay->addWidget( myOperaionLnEd ); - operationLay->setMargin(5); - - QVBoxLayout* aLayout = new QVBoxLayout( frame ); - aLayout->addWidget( operationGB ); + QVBoxLayout* aLayout = new QVBoxLayout( this ); aLayout->addWidget( myParamsTreeWd ); + aLayout->setMargin(11); // get a free dockable window id - myWindowID = 1; + myWindowID = 10; while( app->dockWindow( myWindowID )) ++myWindowID; + ++myWindowID; // pb when a GEOM is a sole module: CreationInfoWdg replaces Python console } -void GEOMGUI_CreationInfoWdg::setOperation(const QPixmap& icon, const QString& name) +QTreeWidgetItem* GEOMGUI_CreationInfoWdg::addOperation(const QPixmap& icon, const QString& name) { - myIconLbl->setPixmap( icon ); - myOperaionLnEd->setText( name ); - myParamsTreeWd->clear(); + QTreeWidgetItem* item = new QTreeWidgetItem( myParamsTreeWd ); + item->setIcon( 0, icon ); + item->setText( 0, name ); if ( name.isEmpty() ) - myOperaionLnEd->setText( tr("NO_INFO")); + item->setText( 0, tr("NO_INFO")); + + item->setExpanded( true ); + + return item; } -void GEOMGUI_CreationInfoWdg::addParam (const QString& name, const QString& value) +void GEOMGUI_CreationInfoWdg::addParam (QTreeWidgetItem* operation, + const QString& name, + const QString& value) { - QTreeWidgetItem* item = new QTreeWidgetItem( myParamsTreeWd ); + QTreeWidgetItem* item = new QTreeWidgetItem( operation ); //item->setFlags( Qt::NoItemFlags ); item->setExpanded( true ); @@ -94,8 +89,6 @@ void GEOMGUI_CreationInfoWdg::addParam (const QString& name, const QString& valu void GEOMGUI_CreationInfoWdg::clear() { - myIconLbl->setPixmap( QPixmap() ); - myOperaionLnEd->setText( "" ); myParamsTreeWd->clear(); } @@ -103,3 +96,57 @@ GEOMGUI_CreationInfoWdg::~GEOMGUI_CreationInfoWdg() { //std::cout<<"~GEOMGUI_CreationInfoWdg"< 0 ) + { + SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); + for ( int j = 0, nb = info.length(); j < nb; ++j ) + { + QString name = info[j].operationName.in(); + if ( !name.isEmpty() ) + { + // get plugin_name if any + QString plugin_name; + for ( size_t i = 0; i < info[j].params.length(); ++i ) + { + QString value = info[j].params[i].name.in(); + if ( value == PLUGIN_NAME ) + plugin_name = info[j].params[i].value.in(); + } + // get icon + QString prefix = plugin_name.isEmpty() ? "GEOM" : plugin_name; + icon = resMgr->loadPixmap( prefix, tr( ("ICO_"+name).toLatin1().constData() ), false ); + + // translate operation name + operationName = tr( ("MEN_"+name).toLatin1().constData() ); + if ( operationName.startsWith( "MEN_" )) + operationName = name; // no translation + + QTreeWidgetItem* operation = addOperation( icon, operationName ); + + // add parameters + for ( size_t i = 0; i < info[j].params.length(); ++i ) + addParam( operation, + info[j].params[i].name.in(), + info[j].params[i].value.in() ); + } + } + } + else + { + addOperation( icon, operationName ); + } + } + catch (...) + { + } +}