Show the context menu for the right widget when right-clicking on a tab. Implement renaming of sessions via tab context menu.

svn path=/branches/work/konsole-split-view/; revision=599813
wilder-portage
Robert Knight 20 years ago
parent 4c90cf8612
commit 9cec0f3964
  1. 60
      konsole/NavigationItem.cpp
  2. 7
      konsole/NavigationItem.h
  3. 6
      konsole/ViewContainer.cpp

@ -1,13 +1,18 @@
// KDE
#include <kdebug.h>
#include <kiconloader.h>
// Konsole
#include "NavigationItem.h"
// Terminal Session Navigation
#include "TESession.h"
// KDE
#include <kaction.h>
#include <kdebug.h>
#include <kinputdialog.h>
#include <klocale.h>
#include <kiconloader.h>
// Konsole
#include "TESession.h"
NavigationItem::NavigationItem()
{
@ -31,7 +36,7 @@ void NavigationItem::setIcon( const QIcon& icon )
_icon = icon;
}
QList<QAction*> NavigationItem::contextMenuActions( QList<QAction*> viewActions ) const
QList<QAction*> NavigationItem::contextMenuActions( QList<QAction*> viewActions )
{
return viewActions;
}
@ -46,6 +51,51 @@ SessionNavigationItem::SessionNavigationItem(TESession* session)
connect( _session , SIGNAL( updateTitle() ) , this , SLOT( updateTitle() ) );
}
QList<QAction*> SessionNavigationItem::contextMenuActions( QList<QAction*> viewActions )
{
QList<QAction*> actionList;
QAction* monitorSeparator = new QAction(this);
monitorSeparator->setSeparator(true);
QAction* viewSeparator = new QAction(this);
viewSeparator->setSeparator(true);
QAction* closeSeparator = new QAction(this);
closeSeparator->setSeparator(true);
KAction* renameAction = new KAction(i18n("&Rename Session"),0/*parent*/,"rename_session");
connect( renameAction , SIGNAL(triggered()) , this , SLOT( renameSession() ) );
// actionList << new QAction("&Detach Session...",this);
actionList << renameAction;
actionList << monitorSeparator;
// actionList << new KToggleAction( KIcon("activity") i18n("Monitor for &Activity"),this);
// actionList << new KToggleAction("Monitor for &Silence",this);
// actionList << new KToggleAction("Send &Input to All Sessions",this);
// actionList << viewSeparator;
actionList << viewActions;
// actionList << closeSeparator;
// actionList << new QAction("&Close Session",this);
return actionList;
}
void SessionNavigationItem::renameSession()
{
QString newTitle = _session->Title();
bool success;
newTitle = KInputDialog::getText( i18n("Rename Session"), i18n("Session Name:") ,
newTitle ,
&success );
if ( success )
{
_session->setTitle(newTitle);
updateTitle();
}
}
void SessionNavigationItem::updateTitle()
{
kDebug() << " session title update " << endl;

@ -31,7 +31,7 @@ public:
QString title() const;
QIcon icon() const;
virtual QList<QAction*> contextMenuActions( QList<QAction*> viewActions ) const;
virtual QList<QAction*> contextMenuActions( QList<QAction*> viewActions ) ;
signals:
void titleChanged( NavigationItem* item );
@ -64,9 +64,14 @@ public:
*/
SessionNavigationItem(TESession* session);
virtual QList<QAction*> contextMenuActions( QList<QAction*> viewActions ) ;
private slots:
void updateTitle();
//context menu action receivers
void renameSession();
private:
TESession* _session;
};

@ -135,11 +135,11 @@ TabbedViewContainer::~TabbedViewContainer()
delete _tabWidget;
}
void TabbedViewContainer::showContextMenu(QWidget* /*widget*/ , const QPoint& position)
void TabbedViewContainer::showContextMenu(QWidget* widget , const QPoint& position)
{
//TODO - Use the tab under the mouse, not just the active tab
_contextMenuTab = _tabWidget->currentIndex();
NavigationItem* item = navigationItem(_tabWidget->currentWidget());
_contextMenuTab = _tabWidget->indexOf(widget);
NavigationItem* item = navigationItem( widget );
_tabContextMenu->clear();
_tabContextMenu->addActions( item->contextMenuActions(_viewActions) );

Loading…
Cancel
Save