Breakpoint widget patch

Kurt De Smet kurt.de.smet at skynet.be
Sat Jan 15 15:15:38 GMT 2005


Breakpoint widget patchPlease do send kevelop related mail to me again
  ----- Original Message ----- 
  From: Downing, Thomas 
  To: kdevelop at kdevelop.org 
  Sent: Thursday, January 13, 2005 4:40 PM
  Subject: Breakpoint widget patch


  Hi,

  This is a patch against the 05-01-11 version of KDevelop.  It addresses
  issues with breakpoint functionality in C++

  - Fix operation of the Enable/Disable feature

  - Change single click action to select only

  - Add double click to go to FilePos break point in editor

  - Add Context menu to break point items, Show, Edit, Disable/Enable, Delete

  If there is interest, more fixes/enhancements to breakpoint functions for
  C++ will be forthcoming.

  Thomas Downig
  -------------------------------------------------------------------------


  diff -c kdevelop-050111/languages/cpp/debugger/gdbbreakpointwidget.cpp kdevelop-musrum/languages/cpp/debugger/gdbbreakpointwidget.cpp
  *** kdevelop-050111/languages/cpp/debugger/gdbbreakpointwidget.cpp  Wed Dec 22 23:08:45 2004
  --- kdevelop-musrum/languages/cpp/debugger/gdbbreakpointwidget.cpp  Thu Jan 13 09:42:28 2005
  ***************
  *** 239,247 ****
        header->setLabel( IgnoreCount,  i18n("Ignore Count") );
        header->setLabel( Hits,         i18n("Hits") );

        m_table->show();

  !     connect( addMenu,     SIGNAL(activated(int)),
                 this,          SLOT(slotAddBlankBreakpoint(int)) );
        connect( m_delete,      SIGNAL(clicked()),
                 this,          SLOT(slotRemoveBreakpoint()) );
  --- 239,253 ----
        header->setLabel( IgnoreCount,  i18n("Ignore Count") );
        header->setLabel( Hits,         i18n("Hits") );

  +     m_ctxMenu = new QPopupMenu( this );
  +     m_ctxMenu->insertItem( i18n( "Show" ),    BW_ITEM_Show );
  +     m_ctxMenu->insertItem( i18n( "Edit" ),    BW_ITEM_Edit );
  +     m_ctxMenu->insertItem( i18n( "Disable" ), BW_ITEM_Disable );
  +     m_ctxMenu->insertItem( i18n( "Delete" ),  BW_ITEM_Delete );
  +
        m_table->show();

  !     connect( addMenu,       SIGNAL(activated(int)),
                 this,          SLOT(slotAddBlankBreakpoint(int)) );
        connect( m_delete,      SIGNAL(clicked()),
                 this,          SLOT(slotRemoveBreakpoint()) );
  ***************
  *** 250,259 ****
        connect( m_removeAll,   SIGNAL(clicked()),
                 this,          SLOT(slotRemoveAllBreakpoints()) );

  ! //    connect( m_table,       SIGNAL(contextMenuRequested(int, int, const QPoint &)),
  ! //             this,          SLOT(slotEditRow(int, int, const QPoint &)));
  !     connect( m_table,       SIGNAL(clicked(int, int, int, const QPoint &)),
  !              this,          SLOT(slotRowSelected(int, int, int, const QPoint &)));
        connect( m_table,       SIGNAL(valueChanged(int, int)),
                 this,          SLOT(slotNewValue(int, int)));

  --- 256,269 ----
        connect( m_removeAll,   SIGNAL(clicked()),
                 this,          SLOT(slotRemoveAllBreakpoints()) );

  !     connect( m_table,       SIGNAL(contextMenuRequested(int, int, const QPoint &)),
  !              this,          SLOT(slotContextMenuShow(int, int, const QPoint & )) );
  !     connect( m_ctxMenu,     SIGNAL(activated(int)),
  !              this,          SLOT(slotContextMenuSelect(int)) );
  !
  !     connect( m_table,       SIGNAL(doubleClicked(int, int, int, const QPoint &)),
  !              this,          SLOT(slotRowDoubleClicked(int, int, int, const QPoint &)));
  !
        connect( m_table,       SIGNAL(valueChanged(int, int)),
                 this,          SLOT(slotNewValue(int, int)));

  ***************
  *** 265,270 ****
  --- 275,281 ----
                 this,          SLOT(slotRemoveBreakpoint()));
        connect( m_table,       SIGNAL(insertPressed()),
                 this,          SLOT(slotAddBreakpoint()));
  +
    }

    /***************************************************************************/
  ***************
  *** 417,423 ****
        if (btr)
        {
            Breakpoint* bp=btr->breakpoint();
  !         bp->setEnabled(!isEnabled());
            emit publishBPState(*bp);
        }
    }
  --- 428,434 ----
        if (btr)
        {
            Breakpoint* bp=btr->breakpoint();
  !         bp->setEnabled(!bp->isEnabled());
            emit publishBPState(*bp);
        }
    }
  ***************
  *** 683,689 ****

    /***************************************************************************/

  ! void GDBBreakpointWidget::slotRowSelected(int row, int col, int btn, const QPoint &)
    {
        if ( btn == Qt::LeftButton )
      {
  --- 694,700 ----

    /***************************************************************************/

  ! void GDBBreakpointWidget::slotRowDoubleClicked(int row, int col, int btn, const QPoint &)
    {
        if ( btn == Qt::LeftButton )
      {
  ***************
  *** 702,707 ****
  --- 713,783 ----
        }
    }

  + void GDBBreakpointWidget::slotContextMenuShow( int row, int /*col*/, const QPoint &mousePos )
  + {
  +     BreakpointTableRow *btr = (BreakpointTableRow *)m_table->item( row, Control );
  +
  +     if (btr != NULL)
  +     {
  +         m_ctxMenu->setItemEnabled( BW_ITEM_Show, (btr->breakpoint( )->type( ) == BP_TYPE_FilePos) );
  +         if (btr->breakpoint( )->isEnabled( ))
  +         {
  +             m_ctxMenu->changeItem( BW_ITEM_Disable, i18n("Disable") );
  +         }
  +         else
  +         {
  +             m_ctxMenu->changeItem( BW_ITEM_Disable, i18n("Enable") );
  +         }
  +
  +         //m_ctxMenu->popup( mapToGlobal( mousePos ) );
  +         m_ctxMenu->popup( mousePos );
  +     }
  + }
  +
  + void GDBBreakpointWidget::slotContextMenuSelect( int item )
  + {
  +     int                  row, col;
  +     BreakpointTableRow  *btr;
  +     Breakpoint          *bp;
  +     FilePosBreakpoint   *fbp;
  +
  +     row= m_table->currentRow( );
  +     if (row == -1)
  +         return;
  +     btr = (BreakpointTableRow *)m_table->item( row, Control );
  +     if (btr == NULL)
  +         return;
  +     bp = btr->breakpoint( );
  +     if (bp == NULL)
  +         return;
  +     fbp = dynamic_cast<FilePosBreakpoint*>(bp);
  +
  +     switch( item )
  +     {
  +         case BW_ITEM_Show:
  +             if (fbp)
  +                 emit gotoSourcePosition(fbp->fileName(), fbp->lineNum()-1);
  +             break;
  +         case BW_ITEM_Edit:
  +             col = m_table->currentColumn( );
  +             if (col == Location || col ==  Condition || col == IgnoreCount)
  +                 m_table->editCell(row, col, false);
  +             break;
  +         case BW_ITEM_Disable:
  +             bp->setEnabled( !bp->isEnabled( ) );
  +             btr->setRow( );
  +             emit publishBPState( *bp );
  +             break;
  +         case BW_ITEM_Delete:
  +             slotRemoveBreakpoint( );
  +             break;
  +         default:
  +             // oops, check it out! this case is not in sync with the
  +             // m_ctxMenu.  Check the enum in the header file.
  +             return;
  +     }
  + }
  +
    /***************************************************************************/

    void GDBBreakpointWidget::slotEditRow(int row, int col, const QPoint &)
  diff -c kdevelop-050111/languages/cpp/debugger/gdbbreakpointwidget.h kdevelop-musrum/languages/cpp/debugger/gdbbreakpointwidget.h
  *** kdevelop-050111/languages/cpp/debugger/gdbbreakpointwidget.h    Mon Jun 21 22:39:42 2004
  --- kdevelop-musrum/languages/cpp/debugger/gdbbreakpointwidget.h    Wed Jan 12 13:49:01 2005
  ***************
  *** 17,22 ****
  --- 17,23 ----
    #define _GDBBreakpointWidget_H_

    #include <qhbox.h>
  + #include <qpopupmenu.h>

    class QDomElement;
    class QToolButton;
  ***************
  *** 63,68 ****
  --- 64,70 ----
        void slotRefreshBP(const KURL &filename);

    protected:
  +     enum BW_ITEMS { BW_ITEM_Show, BW_ITEM_Edit, BW_ITEM_Disable, BW_ITEM_Delete };
        virtual void focusInEvent(QFocusEvent *e);

    private slots:
  ***************
  *** 72,78 ****
        void slotEditBreakpoint();
        void slotAddBreakpoint();
        void slotAddBlankBreakpoint(int idx);
  !     void slotRowSelected(int row, int col, int button, const QPoint & mousePos);
        void slotEditRow(int row, int col, const QPoint & mousePos);
        void slotNewValue(int row, int col);

  --- 74,82 ----
        void slotEditBreakpoint();
        void slotAddBreakpoint();
        void slotAddBlankBreakpoint(int idx);
  !     void slotRowDoubleClicked(int row, int col, int button, const QPoint & mousePos);
  !     void slotContextMenuShow( int row, int col, const QPoint &mousePos );
  !     void slotContextMenuSelect( int item );
        void slotEditRow(int row, int col, const QPoint & mousePos);
        void slotNewValue(int row, int col);

  ***************
  *** 98,103 ****
  --- 102,108 ----
        QToolButton*    m_delete;
        QToolButton*    m_edit;
        QToolButton*    m_removeAll;
  +     QPopupMenu*     m_ctxMenu;
    };

    /***************************************************************************/





-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop/attachments/20050115/16483852/attachment.html>


More information about the KDevelop mailing list