* Moved some locally used message constants from TermConst.h to TermWindow.cpp.
* Added an "Edit tab title..." item to the tab menu. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39514 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
486cd82188
commit
ad617d3320
@ -93,8 +93,6 @@ static const uint32 MSG_REPORT_MOUSE_EVENT = 'mous';
|
|||||||
static const uint32 MSG_SAVE_WINDOW_POSITION = 'swps';
|
static const uint32 MSG_SAVE_WINDOW_POSITION = 'swps';
|
||||||
static const uint32 MSG_MOVE_TAB_LEFT = 'mvtl';
|
static const uint32 MSG_MOVE_TAB_LEFT = 'mvtl';
|
||||||
static const uint32 MSG_MOVE_TAB_RIGHT = 'mvtr';
|
static const uint32 MSG_MOVE_TAB_RIGHT = 'mvtr';
|
||||||
static const uint32 MSG_TAB_TITLE_CHANGED = 'ttch';
|
|
||||||
static const uint32 MSG_WINDOW_TITLE_CHANGED = 'wtch';
|
|
||||||
|
|
||||||
// Preference Read/Write Keys
|
// Preference Read/Write Keys
|
||||||
static const char* const PREF_HALF_FONT_FAMILY = "Half Font Family";
|
static const char* const PREF_HALF_FONT_FAMILY = "Half Font Family";
|
||||||
|
@ -53,13 +53,16 @@ const static int32 kMaxTabs = 6;
|
|||||||
const static int32 kTermViewOffset = 3;
|
const static int32 kTermViewOffset = 3;
|
||||||
|
|
||||||
// messages constants
|
// messages constants
|
||||||
const static uint32 kNewTab = 'NTab';
|
static const uint32 kNewTab = 'NTab';
|
||||||
const static uint32 kCloseView = 'ClVw';
|
static const uint32 kCloseView = 'ClVw';
|
||||||
const static uint32 kIncreaseFontSize = 'InFs';
|
static const uint32 kIncreaseFontSize = 'InFs';
|
||||||
const static uint32 kDecreaseFontSize = 'DcFs';
|
static const uint32 kDecreaseFontSize = 'DcFs';
|
||||||
const static uint32 kSetActiveTab = 'STab';
|
static const uint32 kSetActiveTab = 'STab';
|
||||||
const static uint32 kUpdateTitles = 'UPti';
|
static const uint32 kUpdateTitles = 'UPti';
|
||||||
const static uint32 kSetWindowTitle = 'SWti';
|
static const uint32 kEditTabTitle = 'ETti';
|
||||||
|
static const uint32 kEditWindowTitle = 'EWti';
|
||||||
|
static const uint32 kTabTitleChanged = 'TTch';
|
||||||
|
static const uint32 kWindowTitleChanged = 'WTch';
|
||||||
|
|
||||||
|
|
||||||
#undef B_TRANSLATE_CONTEXT
|
#undef B_TRANSLATE_CONTEXT
|
||||||
@ -385,7 +388,7 @@ TermWindow::_SetupMenu()
|
|||||||
.SetEnabled(false)
|
.SetEnabled(false)
|
||||||
.AddSeparator()
|
.AddSeparator()
|
||||||
.AddItem(B_TRANSLATE("Window title" B_UTF8_ELLIPSIS),
|
.AddItem(B_TRANSLATE("Window title" B_UTF8_ELLIPSIS),
|
||||||
kSetWindowTitle)
|
kEditWindowTitle)
|
||||||
.End()
|
.End()
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
@ -669,7 +672,7 @@ TermWindow::MessageReceived(BMessage *message)
|
|||||||
message->what == MSG_MOVE_TAB_LEFT ? -1 : 1, true);
|
message->what == MSG_MOVE_TAB_LEFT ? -1 : 1, true);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MSG_TAB_TITLE_CHANGED:
|
case kTabTitleChanged:
|
||||||
{
|
{
|
||||||
// tab title changed message from SetTitleDialog
|
// tab title changed message from SetTitleDialog
|
||||||
SessionID sessionID(*message, "session");
|
SessionID sessionID(*message, "session");
|
||||||
@ -687,7 +690,7 @@ TermWindow::MessageReceived(BMessage *message)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case MSG_WINDOW_TITLE_CHANGED:
|
case kWindowTitleChanged:
|
||||||
{
|
{
|
||||||
// window title changed message from SetTitleDialog
|
// window title changed message from SetTitleDialog
|
||||||
BString title;
|
BString title;
|
||||||
@ -767,7 +770,15 @@ TermWindow::MessageReceived(BMessage *message)
|
|||||||
_UpdateTitles();
|
_UpdateTitles();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case kSetWindowTitle:
|
case kEditTabTitle:
|
||||||
|
{
|
||||||
|
SessionID sessionID(*message, "session");
|
||||||
|
if (Session* session = _SessionForID(sessionID))
|
||||||
|
_OpenSetTabTitleDialog(_IndexOfSession(session));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case kEditWindowTitle:
|
||||||
_OpenSetWindowTitleDialog();
|
_OpenSetWindowTitleDialog();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1126,32 +1137,8 @@ void
|
|||||||
TermWindow::TabDoubleClicked(SmartTabView* tabView, BPoint point, int32 index)
|
TermWindow::TabDoubleClicked(SmartTabView* tabView, BPoint point, int32 index)
|
||||||
{
|
{
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
// If a dialog is active, finish it.
|
// clicked on a tab -- open the title dialog
|
||||||
_FinishTitleDialog();
|
_OpenSetTabTitleDialog(index);
|
||||||
|
|
||||||
BString toolTip = BString(B_TRANSLATE(
|
|
||||||
"The pattern specifying the current tab title. The following "
|
|
||||||
"placeholders\n"
|
|
||||||
"can be used:\n")) << kTooTipSetTabTitlePlaceholders;
|
|
||||||
fSetTabTitleDialog = new SetTitleDialog(
|
|
||||||
B_TRANSLATE("Set tab title"), B_TRANSLATE("Tab title:"),
|
|
||||||
toolTip);
|
|
||||||
|
|
||||||
Session* session = _SessionAt(index);
|
|
||||||
bool userDefined = session->title.patternUserDefined;
|
|
||||||
const BString& title = userDefined
|
|
||||||
? session->title.pattern : fSessionTitlePattern;
|
|
||||||
fSetTabTitleSession = session->id;
|
|
||||||
|
|
||||||
// place the dialog window directly under the tab, but keep it on screen
|
|
||||||
BPoint location = tabView->ConvertToScreen(
|
|
||||||
tabView->TabFrame(index).LeftBottom() + BPoint(0, 1));
|
|
||||||
BRect frame(fSetTabTitleDialog->Frame().OffsetToCopy(location));
|
|
||||||
BSize screenSize(BScreen(fSetTabTitleDialog).Frame().Size());
|
|
||||||
fSetTabTitleDialog->MoveTo(
|
|
||||||
BLayoutUtils::MoveIntoFrame(frame, screenSize).LeftTop());
|
|
||||||
|
|
||||||
fSetTabTitleDialog->Go(title, userDefined, this);
|
|
||||||
} else {
|
} else {
|
||||||
// not clicked on a tab -- create a new one
|
// not clicked on a tab -- create a new one
|
||||||
_NewTab();
|
_NewTab();
|
||||||
@ -1177,11 +1164,19 @@ TermWindow::TabRightClicked(SmartTabView* tabView, BPoint point, int32 index)
|
|||||||
if (termView == NULL)
|
if (termView == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BMessage* message = new BMessage(kCloseView);
|
BMessage* closeMessage = new BMessage(kCloseView);
|
||||||
_SessionAt(index)->id.AddToMessage(*message, "session");
|
_SessionAt(index)->id.AddToMessage(*closeMessage, "session");
|
||||||
|
|
||||||
|
BMessage* editTitleMessage = new BMessage(kEditTabTitle);
|
||||||
|
_SessionAt(index)->id.AddToMessage(*editTitleMessage, "session");
|
||||||
|
|
||||||
BPopUpMenu* popUpMenu = new BPopUpMenu("tab menu");
|
BPopUpMenu* popUpMenu = new BPopUpMenu("tab menu");
|
||||||
popUpMenu->AddItem(new BMenuItem(B_TRANSLATE("Close tab"), message));
|
BLayoutBuilder::Menu<>(popUpMenu)
|
||||||
|
.AddItem(B_TRANSLATE("Close tab"), closeMessage)
|
||||||
|
.AddItem(B_TRANSLATE("Edit tab title" B_UTF8_ELLIPSIS),
|
||||||
|
editTitleMessage)
|
||||||
|
;
|
||||||
|
|
||||||
popUpMenu->SetAsyncAutoDestruct(true);
|
popUpMenu->SetAsyncAutoDestruct(true);
|
||||||
popUpMenu->SetTargetForItems(BMessenger(this));
|
popUpMenu->SetTargetForItems(BMessenger(this));
|
||||||
|
|
||||||
@ -1224,7 +1219,7 @@ TermWindow::TitleChanged(SetTitleDialog* dialog, const BString& title,
|
|||||||
{
|
{
|
||||||
if (dialog == fSetTabTitleDialog) {
|
if (dialog == fSetTabTitleDialog) {
|
||||||
// tab title
|
// tab title
|
||||||
BMessage message(MSG_TAB_TITLE_CHANGED);
|
BMessage message(kTabTitleChanged);
|
||||||
fSetTabTitleSession.AddToMessage(message, "session");
|
fSetTabTitleSession.AddToMessage(message, "session");
|
||||||
if (titleUserDefined)
|
if (titleUserDefined)
|
||||||
message.AddString("title", title);
|
message.AddString("title", title);
|
||||||
@ -1232,7 +1227,7 @@ TermWindow::TitleChanged(SetTitleDialog* dialog, const BString& title,
|
|||||||
PostMessage(&message);
|
PostMessage(&message);
|
||||||
} else if (dialog == fSetWindowTitleDialog) {
|
} else if (dialog == fSetWindowTitleDialog) {
|
||||||
// window title
|
// window title
|
||||||
BMessage message(MSG_WINDOW_TITLE_CHANGED);
|
BMessage message(kWindowTitleChanged);
|
||||||
if (titleUserDefined)
|
if (titleUserDefined)
|
||||||
message.AddString("title", title);
|
message.AddString("title", title);
|
||||||
|
|
||||||
@ -1398,6 +1393,38 @@ TermWindow::_UpdateSessionTitle(int32 index)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
TermWindow::_OpenSetTabTitleDialog(int32 index)
|
||||||
|
{
|
||||||
|
// If a dialog is active, finish it.
|
||||||
|
_FinishTitleDialog();
|
||||||
|
|
||||||
|
BString toolTip = BString(B_TRANSLATE(
|
||||||
|
"The pattern specifying the current tab title. The following "
|
||||||
|
"placeholders\n"
|
||||||
|
"can be used:\n")) << kTooTipSetTabTitlePlaceholders;
|
||||||
|
fSetTabTitleDialog = new SetTitleDialog(
|
||||||
|
B_TRANSLATE("Set tab title"), B_TRANSLATE("Tab title:"),
|
||||||
|
toolTip);
|
||||||
|
|
||||||
|
Session* session = _SessionAt(index);
|
||||||
|
bool userDefined = session->title.patternUserDefined;
|
||||||
|
const BString& title = userDefined
|
||||||
|
? session->title.pattern : fSessionTitlePattern;
|
||||||
|
fSetTabTitleSession = session->id;
|
||||||
|
|
||||||
|
// place the dialog window directly under the tab, but keep it on screen
|
||||||
|
BPoint location = fTabView->ConvertToScreen(
|
||||||
|
fTabView->TabFrame(index).LeftBottom() + BPoint(0, 1));
|
||||||
|
BRect frame(fSetTabTitleDialog->Frame().OffsetToCopy(location));
|
||||||
|
BSize screenSize(BScreen(fSetTabTitleDialog).Frame().Size());
|
||||||
|
fSetTabTitleDialog->MoveTo(
|
||||||
|
BLayoutUtils::MoveIntoFrame(frame, screenSize).LeftTop());
|
||||||
|
|
||||||
|
fSetTabTitleDialog->Go(title, userDefined, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TermWindow::_OpenSetWindowTitleDialog()
|
TermWindow::_OpenSetWindowTitleDialog()
|
||||||
{
|
{
|
||||||
|
@ -155,6 +155,7 @@ private:
|
|||||||
void _TitleSettingsChanged();
|
void _TitleSettingsChanged();
|
||||||
void _UpdateTitles();
|
void _UpdateTitles();
|
||||||
void _UpdateSessionTitle(int32 index);
|
void _UpdateSessionTitle(int32 index);
|
||||||
|
void _OpenSetTabTitleDialog(int32 index);
|
||||||
void _OpenSetWindowTitleDialog();
|
void _OpenSetWindowTitleDialog();
|
||||||
void _FinishTitleDialog();
|
void _FinishTitleDialog();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user