]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
#1004-1008. + as well as some other improvements.
authorisn <isn@opencascade.com>
Wed, 19 Oct 2016 14:37:04 +0000 (17:37 +0300)
committerisn <isn@opencascade.com>
Wed, 19 Oct 2016 14:37:04 +0000 (17:37 +0300)
src/HYDROGUI/HYDROGUI_ImportBathymetryDlg.cxx
src/HYDROGUI/HYDROGUI_ImportBathymetryDlg.h
src/HYDROGUI/HYDROGUI_ImportBathymetryOp.cxx
src/HYDROGUI/resources/HYDROGUI_msg_en.ts

index 68cdbeadfa5de53935a39c1b18854049c5b6dcee..ee73bd2ef9761e4eccacbf9ee3ccb37ece6d0ece 100644 (file)
 #include <QCheckBox>
 
 HYDROGUI_ImportBathymetryDlg::HYDROGUI_ImportBathymetryDlg( HYDROGUI_Module* theModule, const QString& theTitle )
-: HYDROGUI_InputPanel( theModule, theTitle )
+: HYDROGUI_InputPanel( theModule, theTitle ), myIsEdit ( false )
 {
   SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
 
   // Import bathymetry from file
   myFileNameGroup = new QGroupBox( tr( "IMPORT_BATHYMETRY_FROM_FILE" ) );
 
-  QLabel* aFileNameLabel = new QLabel( tr( "FILE_NAME" ), myFileNameGroup );
+  QLabel* aFileNameLabel = new QLabel( tr( "FILE_NAMES" ), myFileNameGroup );
 
   myFileNames = new QListWidget( myFileNameGroup );
+  myFileNames->setSelectionMode( QAbstractItemView::ExtendedSelection);
   //myFileNames->viewport()->setAttribute( Qt::WA_TransparentForMouseEvents );
   //myFileNames->setFocusPolicy(Qt::FocusPolicy::NoFocus);
 
   QPushButton* aBrowseBtn = new QPushButton( myFileNameGroup );
-  aBrowseBtn->setText("Load files(s)");
+  aBrowseBtn->setText("Add files(s)");
   aBrowseBtn->setIcon( aResMgr->loadPixmap( "HYDRO", tr( "BROWSE_ICO" ) ) );
 
+  QPushButton* aRemoveBtn = new QPushButton( myFileNameGroup );
+  aRemoveBtn->setText("Remove selected file(s)");
+
   QBoxLayout* aFileNameLayout = new QVBoxLayout( myFileNameGroup );
 
   myFuseIntoOne = new QCheckBox();
-  myFuseIntoOne->setText("Import as one bathemetry object (fuse the geometry data)");
+  myFuseIntoOne->setText("Import as one bathymetry object (fuse the geometry data)");
   myFuseIntoOne->setEnabled( false );
 
   aFileNameLayout->setMargin( 5 );
   aFileNameLayout->setSpacing( 5 );
   aFileNameLayout->addWidget( aFileNameLabel );  
   aFileNameLayout->addWidget( aBrowseBtn );
+  aFileNameLayout->addWidget( aRemoveBtn );
   aFileNameLayout->addWidget( myFileNames );
   aFileNameLayout->addWidget( myFuseIntoOne );
 
@@ -86,6 +91,7 @@ HYDROGUI_ImportBathymetryDlg::HYDROGUI_ImportBathymetryDlg( HYDROGUI_Module* the
   addStretch();
 
   connect( aBrowseBtn, SIGNAL( clicked() ), this, SLOT( onBrowse() ) );
+  connect( aRemoveBtn, SIGNAL( clicked() ), this, SLOT( onRemove() ) );
   connect( myFuseIntoOne, SIGNAL( stateChanged(int) ), this, SLOT( onStateChanged(int) ) );
 }
 
@@ -101,6 +107,11 @@ void HYDROGUI_ImportBathymetryDlg::reset()
   myFuseIntoOne->setEnabled( false );
 }
 
+void HYDROGUI_ImportBathymetryDlg::SetEditMode(bool isEdit)
+{
+  myIsEdit = isEdit;
+}
+
 void HYDROGUI_ImportBathymetryDlg::setObjectName( const QString& theName )
 {
   myObjectName->setText( theName );
@@ -115,12 +126,29 @@ QString HYDROGUI_ImportBathymetryDlg::getObjectName() const
   return myObjectName->text();
 }
 
-void HYDROGUI_ImportBathymetryDlg::setFileNames( const QStringList& theFileNames )
+void HYDROGUI_ImportBathymetryDlg::addFileNames( const QStringList& theFileNames )
 {
-  myFileNames->clear();
-  myFileNames->addItems( theFileNames );
+  //myFileNames->clear();
+  QSet<QString> exfilenames = getFileNames().toSet();
+  QStringList newFileNames;
+  foreach (QString str, theFileNames)
+    if (!exfilenames.contains(str))
+      newFileNames.append(str);
+  myFileNames->addItems( newFileNames );
+  UpdateCheckBoxStates();
+}
 
-  if (myFuseIntoOne->isChecked() || theFileNames.count() == 1 )
+void HYDROGUI_ImportBathymetryDlg::removeFileNames( const QList<QListWidgetItem*>& theFileNamesToRem )
+{
+  foreach (QListWidgetItem* item, theFileNamesToRem)
+    delete myFileNames->takeItem(myFileNames->row(item));
+  UpdateCheckBoxStates();
+}
+
+
+void HYDROGUI_ImportBathymetryDlg::UpdateCheckBoxStates()
+{
+  if (myFuseIntoOne->isChecked() || myFileNames->count() == 1 )
   {
     myObjectNameGroup->setEnabled( true );
     myObjectName->setEnabled( true );
@@ -131,11 +159,25 @@ void HYDROGUI_ImportBathymetryDlg::setFileNames( const QStringList& theFileNames
     myObjectName->setEnabled( false );
   }
   //
-  if (theFileNames.count() == 1)
+  if (myFileNames->count() <= 1 || myIsEdit)
     myFuseIntoOne->setEnabled( false );
-  else if (theFileNames.count() > 1)
+  else
     myFuseIntoOne->setEnabled( true );
 
+  QString anObjectName = getObjectName().simplified();
+  
+  QStringList aFileNames = getFileNames();
+  if ( anObjectName.isEmpty() )
+  {
+    if (!aFileNames.empty())
+    {
+      anObjectName = aFileNames[0];
+      if ( !anObjectName.isEmpty() )
+        anObjectName = QFileInfo( anObjectName ).baseName();
+    }
+    setObjectName( anObjectName );
+  }
+
 }
 
 QStringList HYDROGUI_ImportBathymetryDlg::getFileNames() const
@@ -186,11 +228,18 @@ void HYDROGUI_ImportBathymetryDlg::onBrowse()
 
   if( !aFileNames.isEmpty() )
   {
-    setFileNames( aFileNames );
+    addFileNames( aFileNames );
     emit FileSelected( aFileNames );
   }
 }
 
+void HYDROGUI_ImportBathymetryDlg::onRemove()
+{
+  QList<QListWidgetItem*> selected = myFileNames->selectedItems();
+
+  removeFileNames(selected);
+}
+
 void HYDROGUI_ImportBathymetryDlg::onStateChanged (int state)
 {
   if (getFileNames().count() > 1)
index 438bddb461d7039717fad29c49b8cbfa0854e5e0..d8443438a9728fda715f49cb8217a2cf2546a9ce 100644 (file)
 #include "HYDROGUI_InputPanel.h"
 
 #include <QMap>
+#include <QList>
 
 class QGroupBox;
 class QLineEdit;
 class QCheckBox;
 class QListWidget;
 class QStringList;
+class QListWidgetItem;
 
 class HYDROGUI_ImportBathymetryDlg : public HYDROGUI_InputPanel
 {
@@ -42,8 +44,11 @@ public:
   void                       setObjectName( const QString& theName );
   QString                    getObjectName() const;
 
-  void                       setFileNames( const QStringList& theFileName );
+  //void                       setFileNames( const QStringList& theFileName );
   QStringList                getFileNames() const;
+  void                       addFileNames( const QStringList& theFileNames );
+  void                       removeFileNames( const QList<QListWidgetItem*>& theFileNamesToRem );
+  void                       UpdateCheckBoxStates();
 
   void                       setInvertAltitudes( const bool theIsInvert );
   bool                       isInvertAltitudes() const;
@@ -52,13 +57,16 @@ public:
   bool                       isFuseIntoOneOptionChecked() const;
   void                       setFuseIntoOneOptionEnabled(bool enabled);
   bool                       isFuseIntoOneOptionEnabled() const;
-  
+
+  void                       SetEditMode(bool isEdit);
+
 
 signals:
   void                       FileSelected( const QStringList& theFileName );
 
 protected slots:
   void                       onBrowse();
+  void                       onRemove();
   void                       onStateChanged (int state);
 
 private:
@@ -71,6 +79,8 @@ private:
 
   QGroupBox*                 myObjectNameGroup;
   QLineEdit*                 myObjectName;
+
+  bool                       myIsEdit;
 };
 
 #endif
index 02ea51ac293063d1dff35c8ef40ae345dfa2bcc9..71fd99e0d585874f4ab140e74c04f882ca237831 100644 (file)
@@ -61,6 +61,7 @@ void HYDROGUI_ImportBathymetryOp::startOperation()
     return;
 
   aPanel->reset();
+  aPanel->SetEditMode(myIsEdit);
 
   if( myIsEdit )
   {
@@ -75,7 +76,7 @@ void HYDROGUI_ImportBathymetryOp::startOperation()
       aPanel->setFuseIntoOneOptionChecked( true );
 
       aPanel->setObjectName( aName );
-      aPanel->setFileNames( aFileNames ); 
+      aPanel->addFileNames( aFileNames ); 
       aPanel->setInvertAltitudes( anIsAltitudesInverted );
       aPanel->setFuseIntoOneOptionEnabled( false );
     }
@@ -147,7 +148,7 @@ bool HYDROGUI_ImportBathymetryOp::processApply( int& theUpdateFlags,
 
   if (!inexistWarn.isNull())
     SUIT_MessageBox::warning( module()->getApp()->desktop(), 
-    tr( "BATHEMETRY_IMPORT_WARNING" ), "Can't read the next files:" + inexistWarn );
+    tr( "BATHYMETRY_IMPORT_WARNING" ), "Can't read the next files:" + inexistWarn );
 
   aFileNames = DummyFileList;
 
@@ -163,11 +164,11 @@ bool HYDROGUI_ImportBathymetryOp::processApply( int& theUpdateFlags,
     if (myEditedObject.IsNull())
       return false;
     QStringList anOldFileNames = myEditedObject->GetFilePaths(); 
-    bool anIsInvertAltitudes = aPanel->isInvertAltitudes();
-    myEditedObject->SetAltitudesInverted( anIsInvertAltitudes, false );
+    //bool anIsInvertAltitudes = aPanel->isInvertAltitudes();
+    //myEditedObject->SetAltitudesInverted( anIsInvertAltitudes, false );
     if ( aFileNames.toSet() != anOldFileNames.toSet() )
     {
-      myEditedObject->SetAltitudesInverted( anIsInvertAltitudes, false );
+      myEditedObject->SetAltitudesInverted( anIsInvertAltitudes, true );
       if ( !myEditedObject->ImportFromFiles( aFileNames ) )
       {
         theErrorMsg = tr( "BAD_IMPORTED_BATHYMETRY_FILE" ).arg( aFileNames.join("\n") );
@@ -175,16 +176,9 @@ bool HYDROGUI_ImportBathymetryOp::processApply( int& theUpdateFlags,
       }
     }
     else if ( anIsInvertAltitudes != myEditedObject->IsAltitudesInverted() )
-      myEditedObject->SetAltitudesInverted( anIsInvertAltitudes );
+      myEditedObject->SetAltitudesInverted( anIsInvertAltitudes, true );
 
-    QString aNewObjName;
-    if (CheckNameExistingBathy(anObjectName, aNewObjName))
-    {
-      myEditedObject->SetName( aNewObjName );
-      replacemWarn += "\n'" + anObjectName + "' => '" + aNewObjName + "'";
-    }
-    else
-      myEditedObject->SetName( anObjectName );
+    myEditedObject->SetName( anObjectName );
     myEditedObject->Update();
   }
   else
@@ -256,12 +250,12 @@ bool HYDROGUI_ImportBathymetryOp::processApply( int& theUpdateFlags,
 
   if (!UnreadFilesWarn.isNull())
     SUIT_MessageBox::warning( module()->getApp()->desktop(), 
-    tr( "BATHEMETRY_IMPORT_WARNING" ), "The next files cannot be imported:" + UnreadFilesWarn );
+    tr( "BATHYMETRY_IMPORT_WARNING" ), "The next files cannot be imported:" + UnreadFilesWarn );
 
 
   if (!replacemWarn.isNull())
     SUIT_MessageBox::warning( module()->getApp()->desktop(), 
-    tr( "BATHEMETRY_IMPORT_WARNING" ), "The next objects names are already exist in the document; so the new objects was renamed:" + replacemWarn );
+    tr( "BATHYMETRY_IMPORT_WARNING" ), "The next objects names are already exist in the document; so the new objects was renamed:" + replacemWarn );
 
   // Activate VTK viewer and show the bathymetry
   SUIT_ViewManager* aVTKMgr = 0;
@@ -292,25 +286,7 @@ void HYDROGUI_ImportBathymetryOp::onFileSelected()
   if ( !aPanel )
     return;
 
-  QStringList aFileNames = aPanel->getFileNames();
-  if ( !aPanel->isFuseIntoOneOptionEnabled() )
-    aPanel->setFuseIntoOneOptionEnabled( !myIsEdit && aFileNames.count() > 1 );
-
-  QString anObjectName = aPanel->getObjectName().simplified();
-  if ( anObjectName.isEmpty() )
-  {
-    if (aFileNames.count() == 1)
-    {
-      anObjectName = aFileNames[0];
-      if ( !anObjectName.isEmpty() )
-        anObjectName = QFileInfo( anObjectName ).baseName();
-    }
-
-    if ( anObjectName.isEmpty() ) {
-      anObjectName = HYDROGUI_Tool::GenerateObjectName( module(), tr( "DEFAULT_BATHYMETRY_NAME" ) );
-    }
-    aPanel->setObjectName( anObjectName );
-  }
+  aPanel->UpdateCheckBoxStates();
 }
 
 bool HYDROGUI_ImportBathymetryOp::CheckNameExistingBathy(const QString& InpName, QString& OutputName)
index 49500afdc76cac6cbc0489b0631dfffd82991e7a..94f9b019ac5ff1dec3008012dde2495eeb88867e 100644 (file)
@@ -145,8 +145,8 @@ does not exist or you have not enough permissions to open it.</translation>
       <translation>Files list is empty</translation>
     </message>
     <message>
-      <source>BATHEMETRY_IMPORT_WARNING</source>
-      <translation>Imort of bahemetry - warning</translation>
+      <source>BATHYMETRY_IMPORT_WARNING</source>
+      <translation>Import of bahemetry - warning</translation>
     </message>
 
     <message>
@@ -592,8 +592,8 @@ Do you want to continue?</translation>
       <translation>Bathymetry name</translation>
     </message>
     <message>
-      <source>FILE_NAME</source>
-      <translation>File name</translation>
+      <source>FILE_NAMES</source>
+      <translation>File names</translation>
     </message>
     <message>
       <source>IMPORT_BATHYMETRY_FROM_FILE</source>