File indexing completed on 2024-04-28 05:50:55
0001 /* 0002 SPDX-FileCopyrightText: 2007-2008 Robert Knight <robertknight@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 // Own 0008 #include "widgets/TabTitleFormatButton.h" 0009 0010 // Qt 0011 #include <QList> 0012 #include <QMenu> 0013 0014 // KDE 0015 #include <KLocalizedString> 0016 0017 using namespace Konsole; 0018 0019 const TabTitleFormatButton::Element TabTitleFormatButton::_localElements[] = { 0020 0021 {QStringLiteral("%n"), kli18n("Program Name: %n")}, 0022 {QStringLiteral("%d"), kli18n("Current Directory (Short): %d")}, 0023 {QStringLiteral("%D"), kli18n("Current Directory (Long): %D")}, 0024 {QStringLiteral("%w"), kli18n("Window Title Set by Shell: %w")}, 0025 {QStringLiteral("%#"), kli18n("Session Number: %#")}, 0026 {QStringLiteral("%u"), kli18n("User Name: %u")}, 0027 {QStringLiteral("%h"), kli18n("Local Host: %h")}, 0028 {QStringLiteral("%B"), kli18n("User's Bourne prompt sigil: %B")}, // ($, or # for superuser) 0029 }; 0030 0031 const int TabTitleFormatButton::_localElementCount = sizeof(_localElements) / sizeof(TabTitleFormatButton::Element); 0032 0033 const TabTitleFormatButton::Element TabTitleFormatButton::_remoteElements[] = { 0034 {QStringLiteral("%u"), kli18n("User Name: %u")}, 0035 {QStringLiteral("%U"), kli18n("User Name@ (if given): %U")}, 0036 {QStringLiteral("%h"), kli18n("Remote Host (Short): %h")}, 0037 {QStringLiteral("%H"), kli18n("Remote Host (Long): %H")}, 0038 {QStringLiteral("%c"), kli18n("Command and arguments: %c")}, 0039 {QStringLiteral("%w"), kli18n("Window Title Set by Shell: %w")}, 0040 {QStringLiteral("%#"), kli18n("Session Number: %#")}, 0041 }; 0042 const int TabTitleFormatButton::_remoteElementCount = sizeof(_remoteElements) / sizeof(TabTitleFormatButton::Element); 0043 0044 TabTitleFormatButton::TabTitleFormatButton(QWidget *parent) 0045 : QPushButton(parent) 0046 , _context(Session::LocalTabTitle) 0047 { 0048 setText(i18n("Insert")); 0049 setMenu(new QMenu()); 0050 connect(menu(), &QMenu::triggered, this, &Konsole::TabTitleFormatButton::fireElementSelected); 0051 } 0052 0053 TabTitleFormatButton::~TabTitleFormatButton() 0054 { 0055 menu()->deleteLater(); 0056 } 0057 0058 void TabTitleFormatButton::fireElementSelected(QAction *action) 0059 { 0060 Q_EMIT dynamicElementSelected(action->data().toString()); 0061 } 0062 0063 void TabTitleFormatButton::setContext(Session::TabTitleContext titleContext) 0064 { 0065 _context = titleContext; 0066 0067 menu()->clear(); 0068 0069 int count = 0; 0070 const Element *array = nullptr; 0071 0072 if (titleContext == Session::LocalTabTitle) { 0073 setToolTip(i18nc("@info:tooltip", "Insert title format")); 0074 array = _localElements; 0075 count = _localElementCount; 0076 } else if (titleContext == Session::RemoteTabTitle) { 0077 setToolTip(i18nc("@info:tooltip", "Insert remote title format")); 0078 array = _remoteElements; 0079 count = _remoteElementCount; 0080 } 0081 0082 QList<QAction *> menuActions; 0083 menuActions.reserve(count); 0084 0085 for (int i = 0; i < count; i++) { 0086 auto *action = new QAction(array[i].description.toString(), this); 0087 action->setData(array[i].element); 0088 menuActions << action; 0089 } 0090 0091 menu()->addActions(menuActions); 0092 } 0093 0094 Session::TabTitleContext TabTitleFormatButton::context() const 0095 { 0096 return _context; 0097 } 0098 0099 #include "moc_TabTitleFormatButton.cpp"