]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Resolve problems "Enter Handling" in the python console (caused by porting to the...
authorsbh <sbh@opencascade.com>
Thu, 26 Jul 2012 09:50:51 +0000 (09:50 +0000)
committersbh <sbh@opencascade.com>
Thu, 26 Jul 2012 09:50:51 +0000 (09:50 +0000)
src/PyConsole/PyConsole.h
src/PyConsole/PyConsole_Console.cxx
src/PyConsole/PyConsole_Console.h
src/PyConsole/PyConsole_Editor.cxx
src/PyConsole/PyConsole_Editor.h
src/PyConsole/PyConsole_Interp.cxx
src/PyConsole/PyConsole_Interp.h

index d27c40c0fe21fcd2938ffbf1eb29132b6d9f3714..181e73cf970bebd2770e228eb502c5c4cf3acbb9 100644 (file)
@@ -1,4 +1,7 @@
-// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 // 
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 320753af6e0d2b11896a1dc7c55cab7b8f36f69d..7874a1c170c70ceb1331c1a9a5bd18c7c76db503 100644 (file)
@@ -1,4 +1,7 @@
-// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 // 
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 62df6a45b4b8730ded1c39020d8ce527ea55e72d..b1489356fa328e0232e795c8b09926fb4ba6d42c 100644 (file)
@@ -1,4 +1,7 @@
-// Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 // 
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 449ac23ec230254ec984b24d5f2ee38deb96ee48..c425305179305f93438fcc521b1f2e1a8a3d2246 100644 (file)
@@ -1,6 +1,6 @@
-//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
 //
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
 // 
 //  This library is free software; you can redistribute it and/or 
@@ -370,8 +370,11 @@ void PyConsole_Editor::execAndWait( const QString& command )
 */
 void PyConsole_Editor::handleReturn()
 {
-  // get last line
-  QTextBlock par = document()->end().previous();
+  //SBH: Porting to the Qt v4.7.2: Since Qt 4.4. "lastBlock()" is more
+  //suitable method for retrieving last valid block of text from QTextDocument
+  //than "document()->end().previous()". Moreover, in the Acheron this
+  //obsolete construction returns invalid block, which leads to issues.
+  QTextBlock par = document()->lastBlock();
   if ( !par.isValid() ) return;
 
   // get command
@@ -407,7 +410,7 @@ void PyConsole_Editor::dropEvent( QDropEvent* event )
   QPoint pos = event->pos();
   QTextCursor cur = cursorForPosition( event->pos() );
   // if the position is not in the last line move it to the end of the command line
-  if ( cur.position() < document()->end().previous().position() + PROMPT_SIZE ) {
+  if ( cur.position() < document()->lastBlock().position() + PROMPT_SIZE ) {
     moveCursor( QTextCursor::End );
     pos = cursorRect().center();
   }
@@ -444,7 +447,7 @@ void PyConsole_Editor::mouseReleaseEvent( QMouseEvent* event )
       text = QApplication::clipboard()->text( QClipboard::Clipboard );
     QTextCursor cur = cursorForPosition( event->pos() );
     // if the position is not in the last line move it to the end of the command line
-    if ( cur.position() < document()->end().previous().position() + PROMPT_SIZE ) {
+    if ( cur.position() < document()->lastBlock().position() + PROMPT_SIZE ) {
       moveCursor( QTextCursor::End );
     }
     else {
@@ -561,7 +564,7 @@ void PyConsole_Editor::keyPressEvent( QKeyEvent* event )
          // set history browsing mode
          myCmdInHistory = myHistory.count();
          // remember current command
-         QTextBlock par = document()->end().previous();
+         QTextBlock par = document()->lastBlock();
          myCurrentCommand = par.text().remove( 0, PROMPT_SIZE );
        }
        if ( myCmdInHistory > 0 ) {
@@ -705,7 +708,7 @@ void PyConsole_Editor::keyPressEvent( QKeyEvent* event )
          // set history browsing mode
          myCmdInHistory = myHistory.count();
          // remember current command
-         QTextBlock par = document()->end().previous();
+         QTextBlock par = document()->lastBlock();
          myCurrentCommand = par.text().remove( 0, PROMPT_SIZE );
        }
        if ( myCmdInHistory > 0 ) {
@@ -824,13 +827,13 @@ void PyConsole_Editor::keyPressEvent( QKeyEvent* event )
       if ( cur.hasSelection() ) {
        cut();
       }
-      else if ( cur.position() > document()->end().previous().position() + PROMPT_SIZE ) {
+      else if ( cur.position() > document()->lastBlock().position() + PROMPT_SIZE ) {
        if ( shftPressed ) {
          moveCursor( QTextCursor::PreviousWord, QTextCursor::KeepAnchor );
          textCursor().removeSelectedText();
        }
        else if ( ctrlPressed ) {
-         cur.setPosition( document()->end().previous().position() + PROMPT_SIZE, 
+         cur.setPosition( document()->lastBlock().position() + PROMPT_SIZE,
                           QTextCursor::KeepAnchor );
          setTextCursor( cur );
          textCursor().removeSelectedText();
@@ -840,7 +843,7 @@ void PyConsole_Editor::keyPressEvent( QKeyEvent* event )
        }
       }
       else {
-       cur.setPosition( document()->end().previous().position() + PROMPT_SIZE );
+       cur.setPosition( document()->lastBlock().position() + PROMPT_SIZE );
        setTextCursor( cur );
        horizontalScrollBar()->setValue( horizontalScrollBar()->minimum() );
       }
@@ -856,7 +859,7 @@ void PyConsole_Editor::keyPressEvent( QKeyEvent* event )
       if ( cur.hasSelection() ) {
        cut();
       }
-      else if ( cur.position() > document()->end().previous().position() + PROMPT_SIZE-1 ) {
+      else if ( cur.position() > document()->lastBlock().position() + PROMPT_SIZE-1 ) {
        if ( shftPressed ) {
          moveCursor( QTextCursor::NextWord, QTextCursor::KeepAnchor );
          textCursor().removeSelectedText();
@@ -870,7 +873,7 @@ void PyConsole_Editor::keyPressEvent( QKeyEvent* event )
        }
       }
       else {
-       cur.setPosition( document()->end().previous().position() + PROMPT_SIZE );
+       cur.setPosition( document()->lastBlock().position() + PROMPT_SIZE );
        setTextCursor( cur );
        horizontalScrollBar()->setValue( horizontalScrollBar()->minimum() );
       }
@@ -914,7 +917,7 @@ void PyConsole_Editor::customEvent( QEvent* event )
     // clear command buffer
     myCommandBuffer.truncate( 0 );
     // add caret return line if necessary
-    QTextBlock par = document()->end().previous();
+    QTextBlock par = document()->lastBlock();
     QString txt = par.text();
     txt.truncate( txt.length() - 1 );
     // IPAL19397 : addText moved to handleReturn() method
@@ -935,7 +938,7 @@ void PyConsole_Editor::customEvent( QEvent* event )
     // extend command buffer (multi-line command)
     myCommandBuffer.append( "\n" );
     // add caret return line if necessary
-    QTextBlock par = document()->end().previous();
+    QTextBlock par = document()->lastBlock();
     QString txt = par.text();
     txt.truncate( txt.length() - 1 );
     // IPAL19397 : addText moved to handleReturn() method
@@ -1022,11 +1025,11 @@ void PyConsole_Editor::cut()
   if ( cur.hasSelection() ) {
     QApplication::clipboard()->setText( cur.selectedText() );
     int startSelection = cur.selectionStart();
-    if ( startSelection < document()->end().previous().position() + PROMPT_SIZE )
-      startSelection = document()->end().previous().position() + PROMPT_SIZE;
+    if ( startSelection < document()->lastBlock().position() + PROMPT_SIZE )
+      startSelection = document()->lastBlock().position() + PROMPT_SIZE;
     int endSelection = cur.selectionEnd();
-    if ( endSelection < document()->end().previous().position() + PROMPT_SIZE )
-      endSelection = document()->end().previous().position() + PROMPT_SIZE;
+    if ( endSelection < document()->lastBlock().position() + PROMPT_SIZE )
+      endSelection = document()->lastBlock().position() + PROMPT_SIZE;
     cur.setPosition( startSelection );
     cur.setPosition( endSelection, QTextCursor::KeepAnchor );
     horizontalScrollBar()->setValue( horizontalScrollBar()->minimum() );
@@ -1046,18 +1049,18 @@ void PyConsole_Editor::paste()
   QTextCursor cur = textCursor();
   if ( cur.hasSelection() ) {
     int startSelection = cur.selectionStart();
-    if ( startSelection < document()->end().previous().position() + PROMPT_SIZE )
-      startSelection = document()->end().previous().position() + PROMPT_SIZE;
+    if ( startSelection < document()->lastBlock().position() + PROMPT_SIZE )
+      startSelection = document()->lastBlock().position() + PROMPT_SIZE;
     int endSelection = cur.selectionEnd();
-    if ( endSelection < document()->end().previous().position() + PROMPT_SIZE )
-      endSelection = document()->end().previous().position() + PROMPT_SIZE;
+    if ( endSelection < document()->lastBlock().position() + PROMPT_SIZE )
+      endSelection = document()->lastBlock().position() + PROMPT_SIZE;
     cur.setPosition( startSelection );
     cur.setPosition( endSelection, QTextCursor::KeepAnchor );
     horizontalScrollBar()->setValue( horizontalScrollBar()->minimum() );
     setTextCursor( cur );
     textCursor().removeSelectedText();
   }
-  if ( textCursor().position() < document()->end().previous().position() + PROMPT_SIZE )
+  if ( textCursor().position() < document()->lastBlock().position() + PROMPT_SIZE )
     moveCursor( QTextCursor::End );
   QTextEdit::paste();
 }
index a53233a10919f55e36174bce5c8dab0c9b7a42af..2947b67b6a5aacb9bc0324dcf909fb684181f622 100644 (file)
@@ -1,4 +1,4 @@
-//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
index 003d59f39ca17815ca15571487a18d79105343cb..d3dcb125597c45454de3b3122074d88990e13b5c 100644 (file)
@@ -1,4 +1,4 @@
-//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
index 5e0b1f645ab399c4c676d3bea3111dd91a25218e..d4bf34ef3f9dee36489d9a53d4062c6ac4240fb1 100644 (file)
@@ -1,4 +1,4 @@
-//  SALOME SALOMEGUI : implementation of desktop and GUI kernel
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS