Salome HOME
debug of profileOp
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_ProfileDlg.cxx
index 540949356bf39e6dbeace09641246efa03612bab..c6c49c1c682b4101a07831af174d1efbc134bb1f 100644 (file)
@@ -21,6 +21,7 @@
 #include "HYDROGUI_Tool.h"
 #include "HYDROGUI_AISTrihedron.h"
 #ifndef TEST_MODE
+#include <HYDROGUI_Module.h>
 #include "HYDROGUI_Tool2.h"
 #endif
 
@@ -38,7 +39,7 @@
 #ifndef TEST_MODE
 #include <LightApp_Application.h>
 #endif
-
+#include <SUIT_Desktop.h>
 #include <SUIT_Session.h>
 #include <SUIT_ResourceMgr.h>
 
 #include <QSettings>
 #include <QListWidget>
 #include <QPushButton>
-
+#include <SUIT_MessageBox.h>
 
 const QString splitter_key = "HYDROGUI_ProfileDlg::splitter";
 
 HYDROGUI_ProfileDlg::HYDROGUI_ProfileDlg( HYDROGUI_Module* theModule, const QString& theTitle, 
-  bool theSingleProfileMode )
+  bool theIsEdit )
 : HYDROGUI_ViewerDlg( theModule, theTitle, true ),
   myName( NULL ), myProfileNames (NULL), myProfilesPointer (NULL),
-  mySingleProfileMode (theSingleProfileMode)
+  myIsEdit (theIsEdit)
 {
   QFrame* name_frame = new QFrame( mainFrame() );
   QHBoxLayout* name_layout = new QHBoxLayout( name_frame );
   name_layout->setMargin( 0 );
   QLabel* aNameLabel = new QLabel(tr("PROFILE_NAME_TLT"), this);
   name_layout->addWidget(aNameLabel);
-  if (theSingleProfileMode)
+  if (!theIsEdit)
   {
     myName = new QLineEdit(this);
     name_layout->addWidget(myName);
@@ -75,12 +76,9 @@ HYDROGUI_ProfileDlg::HYDROGUI_ProfileDlg( HYDROGUI_Module* theModule, const QStr
   {
     myProfileNames = new QListWidget(this);
     myProfileNames->setSelectionMode(QAbstractItemView::SingleSelection);
-    //myProfileNames->setEditable(true);
-    //myProfileNames->setInsertPolicy(QComboBox::InsertPolicy::NoInsert);
     name_layout->addWidget(myProfileNames);
-    //
-    myAddProfBtn = new QPushButton("Add Profile(s)", this);    
-    myRemProfBtn = new QPushButton("Remove Profile(s)", this);
+    myAddProfBtn = new QPushButton(tr("ADD_PROFILES"), this);    
+    myRemProfBtn = new QPushButton(tr("REMOVE_PROFILE"), this);
     name_layout->addWidget(myAddProfBtn);
     name_layout->addWidget(myRemProfBtn);
   }
@@ -107,9 +105,9 @@ HYDROGUI_ProfileDlg::HYDROGUI_ProfileDlg( HYDROGUI_Module* theModule, const QStr
   connect( myEditorWidget, SIGNAL( selectionChanged() ), this, SIGNAL( selectionChanged() ) );
   connect( myEditorWidget, SIGNAL( subOperationStarted(QWidget*, bool) ), this, SLOT( processStartedSubOperation(QWidget*, bool) ) );
   connect( myEditorWidget, SIGNAL( subOperationFinished(QWidget*) ), this, SLOT( processFinishedSubOperation(QWidget*) ) );
-  if (!mySingleProfileMode)
+  if (myIsEdit)
   {
-    //connect( myProfileNames, SIGNAL( currentTextChanged(QString)), SLOT(ProfileNameChanged(QString)) );
+    connect( myProfileNames, SIGNAL( currentTextChanged(QString)), SLOT(ProfileNameChanged(QString)) );
     connect( myProfileNames, SIGNAL( itemSelectionChanged()), this, SLOT( onProfileIndexChanged()));
     connect( myProfileNames, SIGNAL( itemChanged(QListWidgetItem*)), this, SLOT( onProfileNameChanged(QListWidgetItem*)));
     connect( myAddProfBtn, SIGNAL( clicked(bool)), this, SLOT( onAddBtnPressed(bool)));
@@ -144,26 +142,27 @@ void HYDROGUI_ProfileDlg::reset()
   myEditorWidget->reset();
   myEditorWidget->setActionMode( CurveCreator_Widget::AdditionMode );
   viewer()->setTrihedronShown( false ); // Issue #548
-  myProfileNames->clear();
+  if (myProfileNames)
+    myProfileNames->clear();
 }
 
 void HYDROGUI_ProfileDlg::setProfileName( const QString& theName )
 {
-  if (!mySingleProfileMode)
+  if (myIsEdit)
     return;
   myName->setText(theName);
-  //myProfileNames->setItemText(theInd, theName); //should used TODO check this
-  //myName->setText(theName);
 }
 
 void HYDROGUI_ProfileDlg::eraseProfile( int index )
 {
   myProfileNames->takeItem(index);
+  if (myProfileNames->count() == 1)
+    myRemProfBtn->setEnabled(false);
 }
 
 void HYDROGUI_ProfileDlg::addProfileName( const QString& theName, const QColor& theColor )
 {
-  if (mySingleProfileMode)
+  if (!myIsEdit)
     return;
   myProfileNames->blockSignals(true);
   myProfileNames->addItem(theName);
@@ -174,16 +173,20 @@ void HYDROGUI_ProfileDlg::addProfileName( const QString& theName, const QColor&
   SPixmap.fill(theColor);
   QIcon SIcon(SPixmap);
   anItem->setIcon( SIcon );
-  //anItem->setBackground(QBrush(theColor));
   if (count == 1)
     anItem->setSelected(true);
+  if (count == 1 && myIsEdit)
+    myRemProfBtn->setEnabled(false);
+  if (count > 1)
+    myRemProfBtn->setEnabled(true);
+
   myProfileNames->blockSignals(false);
 }
 
 QStringList HYDROGUI_ProfileDlg::getProfileNames() const
 {
   QStringList aProfNames;
-  if (mySingleProfileMode)
+  if (!myIsEdit)
     aProfNames << myName->text();
   else
     for (int i = 0; i < myProfileNames->count(); i++)
@@ -255,10 +258,10 @@ void HYDROGUI_ProfileDlg::processFinishedSubOperation( QWidget* theWidget )
   myAddElementBox->hide();
 }
 
-//void HYDROGUI_ProfileDlg::ProfileNameChanged(QString theNewText)
-//{
-//  myProfileNames->setItemText( myProfileNames->currentIndex(), theNewText ); //TODO???
-//}
+void HYDROGUI_ProfileDlg::ProfileNameChanged(QString text)
+{
+  myCurrentName = text;
+}
 
 void HYDROGUI_ProfileDlg::onProfileIndexChanged()
 {
@@ -307,7 +310,12 @@ void HYDROGUI_ProfileDlg::SwitchToProfile(int theIndex)
         anAISObject->SetWidth(1);
     }
   }
-  (*myProfilesPointer)[0]->getDisplayer()->Update();
+
+  if( myProfilesPointer && 
+      myProfilesPointer->size()>0 && 
+      myProfilesPointer->at(0) && 
+      myProfilesPointer->at(0)->getDisplayer() )
+    myProfilesPointer->at(0)->getDisplayer()->Update();
 }
 
 void HYDROGUI_ProfileDlg::onAddBtnPressed(bool)
@@ -325,11 +333,31 @@ void HYDROGUI_ProfileDlg::onRemoveBtnPressed(bool)
 void HYDROGUI_ProfileDlg::onProfileNameChanged(QListWidgetItem* item)
 {
   int ind = GetProfileSelectionIndex();
-  //if (ind > -1)
-    //TODO
-  QString text = item->text();
+  if (ind > -1)
+  {
+    int count = myProfileNames->count();
+    QSet<QString> names;
+    for (int i = 0; i < count; i++)
+    {
+      QListWidgetItem* citem = myProfileNames->item(i);
+      if (item!=citem)
+        names << citem->text();
+    }
+    QString curText = item->text();
+    myProfileNames->blockSignals(true);
+    if (names.contains(curText))
+    {
+      QString mes = tr( "PROFILE_ALREADY_EXISTS" );
+      QString title = tr( "PROFILEDLG_WARNING" );
+#ifndef TEST_MODE
+      SUIT_MessageBox::warning( module()->getApp()->desktop(), title, mes );
+#endif
+      item->setText(myCurrentName);
+    }
+    myProfileNames->blockSignals(false);
+  }
 }
-
+/*
 void HYDROGUI_ProfileDlg::SetSingleProfileMode(bool SingleMode)
 {
   mySingleProfileMode = SingleMode;
@@ -338,7 +366,7 @@ void HYDROGUI_ProfileDlg::SetSingleProfileMode(bool SingleMode)
 bool HYDROGUI_ProfileDlg::GetSingleProfileMode() const
 {
   return mySingleProfileMode;
-}
+}*/
 
 Handle(AIS_Trihedron) HYDROGUI_ProfileDlg::trihedron()
 {