Window size is now saved into preferences. This resolves bug #42
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18429 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
+246
-265
@@ -123,6 +123,7 @@ TermWindow::InitWindow(void)
|
|||||||
// Initialize TermView. (font, size and color)
|
// Initialize TermView. (font, size and color)
|
||||||
|
|
||||||
fTermView->SetTermFont(&halfFont, &fullFont);
|
fTermView->SetTermFont(&halfFont, &fullFont);
|
||||||
|
|
||||||
BRect rect = fTermView->SetTermSize(gTermPref->getInt32(PREF_ROWS),
|
BRect rect = fTermView->SetTermSize(gTermPref->getInt32(PREF_ROWS),
|
||||||
gTermPref->getInt32(PREF_COLS), 1);
|
gTermPref->getInt32(PREF_COLS), 1);
|
||||||
|
|
||||||
@@ -191,37 +192,33 @@ TermWindow::MenusBeginning(void)
|
|||||||
void
|
void
|
||||||
TermWindow::SetupMenu(void)
|
TermWindow::SetupMenu(void)
|
||||||
{
|
{
|
||||||
PrefHandler menuText;
|
PrefHandler menuText;
|
||||||
|
|
||||||
LoadLocaleFile (&menuText);
|
LoadLocaleFile (&menuText);
|
||||||
|
|
||||||
// Menu bar object.
|
// Menu bar object.
|
||||||
fMenubar = new BMenuBar(Bounds(), "mbar");
|
fMenubar = new BMenuBar(Bounds(), "mbar");
|
||||||
|
|
||||||
/*
|
// Make File Menu.
|
||||||
* Make File Menu.
|
fFilemenu = new BMenu("Terminal");
|
||||||
*/
|
fFilemenu->AddItem(new BMenuItem("Switch Terminals", new BMessage(MENU_SWITCH_TERM),'G'));
|
||||||
fFilemenu = new BMenu("Terminal");
|
fFilemenu->AddItem(new BMenuItem("Start New Terminal", new BMessage(MENU_NEW_TERM), 'N'));
|
||||||
fFilemenu->AddItem(new BMenuItem("Switch Terminals", new BMessage(MENU_SWITCH_TERM),'G'));
|
fFilemenu->AddSeparatorItem();
|
||||||
fFilemenu->AddItem(new BMenuItem("Start New Terminal", new BMessage(MENU_NEW_TERM), 'N'));
|
fFilemenu->AddItem(new BMenuItem("Page Setup...", new BMessage(MENU_PAGE_SETUP)));
|
||||||
fFilemenu->AddSeparatorItem();
|
fFilemenu->AddItem(new BMenuItem("Print", new BMessage(MENU_PRINT),'P'));
|
||||||
fFilemenu->AddItem(new BMenuItem("Page Setup...", new BMessage(MENU_PAGE_SETUP)));
|
fFilemenu->AddSeparatorItem();
|
||||||
fFilemenu->AddItem(new BMenuItem("Print", new BMessage(MENU_PRINT),'P'));
|
fFilemenu->AddItem(new BMenuItem("About Terminal...", new BMessage(B_ABOUT_REQUESTED)));
|
||||||
fFilemenu->AddSeparatorItem();
|
fFilemenu->AddSeparatorItem();
|
||||||
fFilemenu->AddItem(new BMenuItem("About Terminal...", new BMessage(B_ABOUT_REQUESTED)));
|
fFilemenu->AddItem(new BMenuItem("Quit", new BMessage(MENU_FILE_QUIT), 'Q'));
|
||||||
fFilemenu->AddSeparatorItem();
|
fMenubar->AddItem(fFilemenu);
|
||||||
fFilemenu->AddItem(new BMenuItem("Quit", new BMessage(MENU_FILE_QUIT), 'Q'));
|
|
||||||
fMenubar->AddItem(fFilemenu);
|
|
||||||
|
|
||||||
/*
|
// Make Edit Menu.
|
||||||
* Make Edit Menu.
|
fEditmenu = new BMenu ("Edit");
|
||||||
*/
|
fEditmenu->AddItem (new BMenuItem ("Copy", new BMessage (B_COPY),'C'));
|
||||||
fEditmenu = new BMenu ("Edit");
|
fEditmenu->AddItem (new BMenuItem ("Paste", new BMessage (B_PASTE),'V'));
|
||||||
fEditmenu->AddItem (new BMenuItem ("Copy", new BMessage (B_COPY),'C'));
|
fEditmenu->AddSeparatorItem ();
|
||||||
fEditmenu->AddItem (new BMenuItem ("Paste", new BMessage (B_PASTE),'V'));
|
fEditmenu->AddItem (new BMenuItem ("Select All", new BMessage (B_SELECT_ALL), 'A'));
|
||||||
fEditmenu->AddSeparatorItem ();
|
fEditmenu->AddItem (new BMenuItem ("Clear All", new BMessage (MENU_CLEAR_ALL), 'L'));
|
||||||
fEditmenu->AddItem (new BMenuItem ("Select All", new BMessage (B_SELECT_ALL), 'A'));
|
|
||||||
fEditmenu->AddItem (new BMenuItem ("Clear All", new BMessage (MENU_CLEAR_ALL), 'L'));
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// TODO: Implement Finding
|
// TODO: Implement Finding
|
||||||
@@ -231,18 +228,15 @@ TermWindow::SetupMenu(void)
|
|||||||
*/
|
*/
|
||||||
fMenubar->AddItem (fEditmenu);
|
fMenubar->AddItem (fEditmenu);
|
||||||
|
|
||||||
|
// Make Help Menu.
|
||||||
/*
|
|
||||||
* Make Help Menu.
|
|
||||||
*/
|
|
||||||
fHelpmenu = new BMenu("Settings");
|
fHelpmenu = new BMenu("Settings");
|
||||||
fWindowSizeMenu = new BMenu("Window Size");
|
fWindowSizeMenu = new BMenu("Window Size");
|
||||||
fWindowSizeMenu->AddItem(new BMenuItem("80x24", new BMessage(EIGHTYTWENTYFOUR)));
|
fWindowSizeMenu->AddItem(new BMenuItem("80x24", new BMessage(EIGHTYTWENTYFOUR)));
|
||||||
fWindowSizeMenu->AddItem(new BMenuItem("80x25", new BMessage(EIGHTYTWENTYFIVE)));
|
fWindowSizeMenu->AddItem(new BMenuItem("80x25", new BMessage(EIGHTYTWENTYFIVE)));
|
||||||
fWindowSizeMenu->AddItem(new BMenuItem("80x40", new BMessage(EIGHTYFORTY)));
|
fWindowSizeMenu->AddItem(new BMenuItem("80x40", new BMessage(EIGHTYFORTY)));
|
||||||
fWindowSizeMenu->AddItem(new BMenuItem("132x24", new BMessage(ONETHREETWOTWENTYFOUR)));
|
fWindowSizeMenu->AddItem(new BMenuItem("132x24", new BMessage(ONETHREETWOTWENTYFOUR)));
|
||||||
fWindowSizeMenu->AddItem(new BMenuItem("132x25", new BMessage(ONETHREETWOTWENTYFIVE)));
|
fWindowSizeMenu->AddItem(new BMenuItem("132x25", new BMessage(ONETHREETWOTWENTYFIVE)));
|
||||||
fWindowSizeMenu->AddItem(new BMenuItem("Fullscreen", new BMessage(FULLSCREEN), B_ENTER));
|
fWindowSizeMenu->AddItem(new BMenuItem("Fullscreen", new BMessage(FULLSCREEN), B_ENTER));
|
||||||
|
|
||||||
// Considering we have this in the preferences window, this menu is not
|
// Considering we have this in the preferences window, this menu is not
|
||||||
// needed and should not be shown if we are to not confuse the user
|
// needed and should not be shown if we are to not confuse the user
|
||||||
@@ -284,233 +278,223 @@ TermWindow::MessageReceived(BMessage *message)
|
|||||||
BFont halfFont;
|
BFont halfFont;
|
||||||
BFont fullFont;
|
BFont fullFont;
|
||||||
|
|
||||||
switch (message->what) {
|
switch (message->what) {
|
||||||
|
case MENU_SWITCH_TERM: {
|
||||||
case MENU_SWITCH_TERM:
|
be_app->PostMessage(MENU_SWITCH_TERM);
|
||||||
be_app->PostMessage(MENU_SWITCH_TERM);
|
break;
|
||||||
break;
|
|
||||||
|
|
||||||
case MENU_NEW_TERM: {
|
|
||||||
app_info info;
|
|
||||||
be_app->GetAppInfo(&info);
|
|
||||||
|
|
||||||
// try launching two different ways to work around possible problems
|
|
||||||
if (be_roster->Launch(&info.ref)!=B_OK)
|
|
||||||
be_roster->Launch(TERM_SIGNATURE);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MENU_PREF_OPEN:
|
|
||||||
if (!fPrefWindow){
|
|
||||||
fPrefWindow = new PrefDlg(this);
|
|
||||||
}else{
|
|
||||||
fPrefWindow->Activate();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MSG_PREF_CLOSED:
|
|
||||||
fPrefWindow = NULL;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MENU_FILE_QUIT:
|
|
||||||
be_app->PostMessage(B_QUIT_REQUESTED);
|
|
||||||
break;
|
|
||||||
case MENU_ENCODING:
|
|
||||||
message->FindInt32 ("op", &coding_id);
|
|
||||||
gNowCoding = coding_id;
|
|
||||||
SetCoding(coding_id);
|
|
||||||
break;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Extended B_SET_PROPERTY. Dispatch this message,
|
|
||||||
* Set coding ID.
|
|
||||||
*/
|
|
||||||
case B_SET_PROPERTY:
|
|
||||||
{
|
|
||||||
int32 i;
|
|
||||||
BMessage spe;
|
|
||||||
message->GetCurrentSpecifier(&i, &spe);
|
|
||||||
if (!strcmp("encode", spe.FindString("property", i))){
|
|
||||||
message->FindInt32 ("data", &coding_id);
|
|
||||||
gNowCoding = coding_id;
|
|
||||||
SetCoding (coding_id);
|
|
||||||
|
|
||||||
message->SendReply(B_REPLY);
|
|
||||||
}else{
|
|
||||||
BWindow::MessageReceived(message);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Extended B_GET_PROPERTY. Dispatch this message,
|
|
||||||
* reply now coding ID.
|
|
||||||
*/
|
|
||||||
case B_GET_PROPERTY:
|
|
||||||
{
|
|
||||||
int32 i;
|
|
||||||
BMessage spe;
|
|
||||||
message->GetCurrentSpecifier(&i, &spe);
|
|
||||||
if (!strcmp("encode", spe.FindString("property", i))){
|
|
||||||
BMessage reply(B_REPLY);
|
|
||||||
reply.AddInt32("result", gNowCoding);
|
|
||||||
message->SendReply(&reply);
|
|
||||||
}else if (!strcmp("tty", spe.FindString("property", i))){
|
|
||||||
BMessage reply(B_REPLY);
|
|
||||||
reply.AddString("result", &tty_name[8]);
|
|
||||||
message->SendReply(&reply);
|
|
||||||
}else{
|
|
||||||
BWindow::MessageReceived(message);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Message from Preference panel.
|
|
||||||
*/
|
|
||||||
case MSG_ROWS_CHANGED:
|
|
||||||
case MSG_COLS_CHANGED:
|
|
||||||
r = fTermView->SetTermSize (gTermPref->getInt32 (PREF_ROWS),
|
|
||||||
gTermPref->getInt32 (PREF_COLS),
|
|
||||||
0);
|
|
||||||
|
|
||||||
ResizeTo (r.Width()+ B_V_SCROLL_BAR_WIDTH + VIEW_OFFSET * 2,
|
|
||||||
r.Height()+fMenubar->Bounds().Height() + VIEW_OFFSET *2);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MSG_HALF_FONT_CHANGED:
|
|
||||||
case MSG_FULL_FONT_CHANGED:
|
|
||||||
case MSG_HALF_SIZE_CHANGED:
|
|
||||||
case MSG_FULL_SIZE_CHANGED:
|
|
||||||
|
|
||||||
halfFont.SetFamilyAndStyle (gTermPref->getString(PREF_HALF_FONT_FAMILY),
|
|
||||||
NULL);
|
|
||||||
halfFont.SetSize (gTermPref->getFloat(PREF_HALF_FONT_SIZE));
|
|
||||||
halfFont.SetSpacing (B_FIXED_SPACING);
|
|
||||||
|
|
||||||
fullFont.SetFamilyAndStyle (gTermPref->getString(PREF_FULL_FONT_FAMILY),
|
|
||||||
NULL);
|
|
||||||
fullFont.SetSize (gTermPref->getFloat(PREF_FULL_FONT_SIZE));
|
|
||||||
fullFont.SetSpacing (B_FIXED_SPACING);
|
|
||||||
|
|
||||||
fTermView->SetTermFont (&halfFont, &fullFont);
|
|
||||||
r = fTermView->SetTermSize (0, 0, 0);
|
|
||||||
|
|
||||||
int width, height;
|
|
||||||
|
|
||||||
fTermView->GetFontSize (&width, &height);
|
|
||||||
|
|
||||||
SetSizeLimits (MIN_COLS * width, MAX_COLS * width,
|
|
||||||
MIN_COLS * height, MAX_COLS * height);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ResizeTo (r.Width()+ B_V_SCROLL_BAR_WIDTH + VIEW_OFFSET * 2,
|
|
||||||
r.Height()+fMenubar->Bounds().Height() + VIEW_OFFSET * 2);
|
|
||||||
|
|
||||||
fTermView->Invalidate();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EIGHTYTWENTYFOUR:
|
|
||||||
gTermPref->setString(PREF_COLS, "80");
|
|
||||||
gTermPref->setString(PREF_ROWS, "24");
|
|
||||||
this->PostMessage (MSG_ROWS_CHANGED);
|
|
||||||
this->PostMessage (MSG_COLS_CHANGED);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EIGHTYTWENTYFIVE:
|
|
||||||
gTermPref->setString(PREF_COLS, "80");
|
|
||||||
gTermPref->setString(PREF_ROWS, "25");
|
|
||||||
this->PostMessage (MSG_ROWS_CHANGED);
|
|
||||||
this->PostMessage (MSG_COLS_CHANGED);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EIGHTYFORTY:
|
|
||||||
gTermPref->setString(PREF_COLS, "80");
|
|
||||||
gTermPref->setString(PREF_ROWS, "40");
|
|
||||||
this->PostMessage (MSG_ROWS_CHANGED);
|
|
||||||
this->PostMessage (MSG_COLS_CHANGED);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ONETHREETWOTWENTYFOUR:
|
|
||||||
gTermPref->setString(PREF_COLS, "132");
|
|
||||||
gTermPref->setString(PREF_ROWS, "24");
|
|
||||||
this->PostMessage (MSG_ROWS_CHANGED);
|
|
||||||
this->PostMessage (MSG_COLS_CHANGED);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ONETHREETWOTWENTYFIVE:
|
|
||||||
gTermPref->setString(PREF_COLS, "132");
|
|
||||||
gTermPref->setString(PREF_ROWS, "25");
|
|
||||||
this->PostMessage (MSG_ROWS_CHANGED);
|
|
||||||
this->PostMessage (MSG_COLS_CHANGED);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FULLSCREEN:
|
|
||||||
if (!fSavedFrame.IsValid()) { // go fullscreen
|
|
||||||
float mbHeight = fMenubar->Bounds().Height() + 1;
|
|
||||||
fSavedFrame = Frame();
|
|
||||||
BScreen screen(this);
|
|
||||||
fTermView->ScrollBar()->Hide();
|
|
||||||
fMenubar->Hide();
|
|
||||||
fBaseView->MoveTo(0,0);
|
|
||||||
fBaseView->ResizeBy(B_V_SCROLL_BAR_WIDTH, mbHeight);
|
|
||||||
fSavedLook = Look();
|
|
||||||
// done before ResizeTo to work around a Dano bug (not erasing the decor)
|
|
||||||
SetLook(B_NO_BORDER_WINDOW_LOOK);
|
|
||||||
ResizeTo(screen.Frame().Width()+1, screen.Frame().Height()+1);
|
|
||||||
MoveTo(screen.Frame().left, screen.Frame().top);
|
|
||||||
} else { // exit fullscreen
|
|
||||||
float mbHeight = fMenubar->Bounds().Height() + 1;
|
|
||||||
fMenubar->Show();
|
|
||||||
fTermView->ScrollBar()->Show();
|
|
||||||
ResizeTo(fSavedFrame.Width(), fSavedFrame.Height());
|
|
||||||
MoveTo(fSavedFrame.left, fSavedFrame.top);
|
|
||||||
fBaseView->ResizeBy(-B_V_SCROLL_BAR_WIDTH, -mbHeight);
|
|
||||||
fBaseView->MoveTo(0,mbHeight);
|
|
||||||
SetLook(fSavedLook);
|
|
||||||
fSavedFrame = BRect(0,0,-1,-1);
|
|
||||||
}
|
}
|
||||||
break;
|
case MENU_NEW_TERM: {
|
||||||
|
app_info info;
|
||||||
|
be_app->GetAppInfo(&info);
|
||||||
|
|
||||||
case MSG_FONT_CHANGED:
|
// try launching two different ways to work around possible problems
|
||||||
gTermPref->setString (PREF_HALF_FONT_FAMILY, fNewFontMenu->FindMarked()->Label());
|
if (be_roster->Launch(&info.ref)!=B_OK)
|
||||||
this->PostMessage (MSG_HALF_FONT_CHANGED);
|
be_roster->Launch(TERM_SIGNATURE);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
case MENU_PREF_OPEN: {
|
||||||
|
if (!fPrefWindow)
|
||||||
|
fPrefWindow = new PrefDlg(this);
|
||||||
|
else
|
||||||
|
fPrefWindow->Activate();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MSG_PREF_CLOSED: {
|
||||||
|
fPrefWindow = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MENU_FILE_QUIT: {
|
||||||
|
be_app->PostMessage(B_QUIT_REQUESTED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MENU_ENCODING: {
|
||||||
|
message->FindInt32 ("op", &coding_id);
|
||||||
|
gNowCoding = coding_id;
|
||||||
|
SetCoding(coding_id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Extended B_SET_PROPERTY. Dispatch this message,
|
||||||
|
// Set coding ID.
|
||||||
|
case B_SET_PROPERTY: {
|
||||||
|
int32 i;
|
||||||
|
BMessage spe;
|
||||||
|
message->GetCurrentSpecifier(&i, &spe);
|
||||||
|
if (!strcmp("encode", spe.FindString("property", i))){
|
||||||
|
message->FindInt32 ("data", &coding_id);
|
||||||
|
gNowCoding = coding_id;
|
||||||
|
SetCoding (coding_id);
|
||||||
|
|
||||||
|
message->SendReply(B_REPLY);
|
||||||
|
} else {
|
||||||
|
BWindow::MessageReceived(message);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extended B_GET_PROPERTY. Dispatch this message, reply now coding ID.
|
||||||
|
case B_GET_PROPERTY: {
|
||||||
|
int32 i;
|
||||||
|
BMessage spe;
|
||||||
|
message->GetCurrentSpecifier(&i, &spe);
|
||||||
|
if (!strcmp("encode", spe.FindString("property", i))){
|
||||||
|
BMessage reply(B_REPLY);
|
||||||
|
reply.AddInt32("result", gNowCoding);
|
||||||
|
message->SendReply(&reply);
|
||||||
|
}
|
||||||
|
else if (!strcmp("tty", spe.FindString("property", i))) {
|
||||||
|
BMessage reply(B_REPLY);
|
||||||
|
reply.AddString("result", &tty_name[8]);
|
||||||
|
message->SendReply(&reply);
|
||||||
|
} else {
|
||||||
|
BWindow::MessageReceived(message);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Message from Preference panel.
|
||||||
|
case MSG_ROWS_CHANGED:
|
||||||
|
case MSG_COLS_CHANGED: {
|
||||||
|
r = fTermView->SetTermSize (gTermPref->getInt32 (PREF_ROWS),
|
||||||
|
gTermPref->getInt32 (PREF_COLS), 0);
|
||||||
|
|
||||||
|
ResizeTo (r.Width()+ B_V_SCROLL_BAR_WIDTH + VIEW_OFFSET * 2,
|
||||||
|
r.Height()+fMenubar->Bounds().Height() + VIEW_OFFSET *2);
|
||||||
|
|
||||||
case MSG_COLOR_CHANGED:
|
|
||||||
fBaseView->SetViewColor (gTermPref->getRGB (PREF_TEXT_BACK_COLOR));
|
|
||||||
fTermView->SetTermColor ();
|
|
||||||
fBaseView->Invalidate();
|
|
||||||
fTermView->Invalidate();
|
|
||||||
break;
|
|
||||||
case SAVE_AS_DEFAULT:
|
|
||||||
{
|
|
||||||
BPath path;
|
BPath path;
|
||||||
if (PrefHandler::GetDefaultPath(path) == B_OK)
|
if (PrefHandler::GetDefaultPath(path) == B_OK)
|
||||||
gTermPref->SaveAsText(path.Path(), PREFFILE_MIMETYPE);
|
gTermPref->SaveAsText(path.Path(), PREFFILE_MIMETYPE);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
case MSG_HALF_FONT_CHANGED:
|
||||||
case MENU_PAGE_SETUP:
|
case MSG_FULL_FONT_CHANGED:
|
||||||
DoPageSetup ();
|
case MSG_HALF_SIZE_CHANGED:
|
||||||
break;
|
case MSG_FULL_SIZE_CHANGED: {
|
||||||
case MENU_PRINT:
|
|
||||||
DoPrint ();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MSGRUN_WINDOW:
|
halfFont.SetFamilyAndStyle (gTermPref->getString(PREF_HALF_FONT_FAMILY),NULL);
|
||||||
fTermView->UpdateSIGWINCH ();
|
halfFont.SetSize (gTermPref->getFloat(PREF_HALF_FONT_SIZE));
|
||||||
break;
|
halfFont.SetSpacing (B_FIXED_SPACING);
|
||||||
|
|
||||||
case B_ABOUT_REQUESTED:
|
fullFont.SetFamilyAndStyle (gTermPref->getString(PREF_FULL_FONT_FAMILY),NULL);
|
||||||
be_app->PostMessage(B_ABOUT_REQUESTED);
|
fullFont.SetSize (gTermPref->getFloat(PREF_FULL_FONT_SIZE));
|
||||||
break;
|
fullFont.SetSpacing (B_FIXED_SPACING);
|
||||||
|
|
||||||
default:
|
fTermView->SetTermFont (&halfFont, &fullFont);
|
||||||
BWindow::MessageReceived(message);
|
r = fTermView->SetTermSize (0, 0, 0);
|
||||||
break;
|
|
||||||
}
|
int width, height;
|
||||||
|
|
||||||
|
fTermView->GetFontSize (&width, &height);
|
||||||
|
|
||||||
|
SetSizeLimits (MIN_COLS * width, MAX_COLS * width,
|
||||||
|
MIN_COLS * height, MAX_COLS * height);
|
||||||
|
|
||||||
|
ResizeTo (r.Width()+ B_V_SCROLL_BAR_WIDTH + VIEW_OFFSET * 2,
|
||||||
|
r.Height()+fMenubar->Bounds().Height() + VIEW_OFFSET * 2);
|
||||||
|
|
||||||
|
fTermView->Invalidate();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EIGHTYTWENTYFOUR: {
|
||||||
|
gTermPref->setString(PREF_COLS, "80");
|
||||||
|
gTermPref->setString(PREF_ROWS, "24");
|
||||||
|
this->PostMessage (MSG_ROWS_CHANGED);
|
||||||
|
this->PostMessage (MSG_COLS_CHANGED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EIGHTYTWENTYFIVE: {
|
||||||
|
gTermPref->setString(PREF_COLS, "80");
|
||||||
|
gTermPref->setString(PREF_ROWS, "25");
|
||||||
|
this->PostMessage (MSG_ROWS_CHANGED);
|
||||||
|
this->PostMessage (MSG_COLS_CHANGED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EIGHTYFORTY: {
|
||||||
|
gTermPref->setString(PREF_COLS, "80");
|
||||||
|
gTermPref->setString(PREF_ROWS, "40");
|
||||||
|
this->PostMessage (MSG_ROWS_CHANGED);
|
||||||
|
this->PostMessage (MSG_COLS_CHANGED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ONETHREETWOTWENTYFOUR: {
|
||||||
|
gTermPref->setString(PREF_COLS, "132");
|
||||||
|
gTermPref->setString(PREF_ROWS, "24");
|
||||||
|
this->PostMessage (MSG_ROWS_CHANGED);
|
||||||
|
this->PostMessage (MSG_COLS_CHANGED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ONETHREETWOTWENTYFIVE: {
|
||||||
|
gTermPref->setString(PREF_COLS, "132");
|
||||||
|
gTermPref->setString(PREF_ROWS, "25");
|
||||||
|
this->PostMessage (MSG_ROWS_CHANGED);
|
||||||
|
this->PostMessage (MSG_COLS_CHANGED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case FULLSCREEN: {
|
||||||
|
if (!fSavedFrame.IsValid()) { // go fullscreen
|
||||||
|
float mbHeight = fMenubar->Bounds().Height() + 1;
|
||||||
|
fSavedFrame = Frame();
|
||||||
|
BScreen screen(this);
|
||||||
|
fTermView->ScrollBar()->Hide();
|
||||||
|
fMenubar->Hide();
|
||||||
|
fBaseView->MoveTo(0,0);
|
||||||
|
fBaseView->ResizeBy(B_V_SCROLL_BAR_WIDTH, mbHeight);
|
||||||
|
fSavedLook = Look();
|
||||||
|
// done before ResizeTo to work around a Dano bug (not erasing the decor)
|
||||||
|
SetLook(B_NO_BORDER_WINDOW_LOOK);
|
||||||
|
ResizeTo(screen.Frame().Width()+1, screen.Frame().Height()+1);
|
||||||
|
MoveTo(screen.Frame().left, screen.Frame().top);
|
||||||
|
} else { // exit fullscreen
|
||||||
|
float mbHeight = fMenubar->Bounds().Height() + 1;
|
||||||
|
fMenubar->Show();
|
||||||
|
fTermView->ScrollBar()->Show();
|
||||||
|
ResizeTo(fSavedFrame.Width(), fSavedFrame.Height());
|
||||||
|
MoveTo(fSavedFrame.left, fSavedFrame.top);
|
||||||
|
fBaseView->ResizeBy(-B_V_SCROLL_BAR_WIDTH, -mbHeight);
|
||||||
|
fBaseView->MoveTo(0,mbHeight);
|
||||||
|
SetLook(fSavedLook);
|
||||||
|
fSavedFrame = BRect(0,0,-1,-1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MSG_FONT_CHANGED: {
|
||||||
|
gTermPref->setString (PREF_HALF_FONT_FAMILY, fNewFontMenu->FindMarked()->Label());
|
||||||
|
this->PostMessage (MSG_HALF_FONT_CHANGED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MSG_COLOR_CHANGED: {
|
||||||
|
fBaseView->SetViewColor (gTermPref->getRGB (PREF_TEXT_BACK_COLOR));
|
||||||
|
fTermView->SetTermColor ();
|
||||||
|
fBaseView->Invalidate();
|
||||||
|
fTermView->Invalidate();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SAVE_AS_DEFAULT: {
|
||||||
|
BPath path;
|
||||||
|
if (PrefHandler::GetDefaultPath(path) == B_OK)
|
||||||
|
gTermPref->SaveAsText(path.Path(), PREFFILE_MIMETYPE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MENU_PAGE_SETUP: {
|
||||||
|
DoPageSetup ();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MENU_PRINT: {
|
||||||
|
DoPrint ();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MSGRUN_WINDOW: {
|
||||||
|
fTermView->UpdateSIGWINCH ();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case B_ABOUT_REQUESTED: {
|
||||||
|
be_app->PostMessage(B_ABOUT_REQUESTED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
BWindow::MessageReceived(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
// WindowActivated (bool)
|
// WindowActivated (bool)
|
||||||
@@ -536,11 +520,11 @@ TermWindow::WindowActivated (bool )
|
|||||||
void
|
void
|
||||||
TermWindow::Quit(void)
|
TermWindow::Quit(void)
|
||||||
{
|
{
|
||||||
delete fTermParse;
|
delete fTermParse;
|
||||||
delete fCodeConv;
|
delete fCodeConv;
|
||||||
if(fPrefWindow) fPrefWindow->PostMessage (B_QUIT_REQUESTED);
|
if(fPrefWindow) fPrefWindow->PostMessage (B_QUIT_REQUESTED);
|
||||||
be_app->PostMessage (B_QUIT_REQUESTED, be_app);
|
be_app->PostMessage (B_QUIT_REQUESTED, be_app);
|
||||||
BWindow::Quit ();
|
BWindow::Quit ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -557,18 +541,15 @@ TermWindow::QuitRequested(void)
|
|||||||
int
|
int
|
||||||
TermWindow::GetTimeZone ()
|
TermWindow::GetTimeZone ()
|
||||||
{
|
{
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
struct timezone tm;
|
struct timezone tm;
|
||||||
|
|
||||||
gettimeofday (&tv, &tm);
|
gettimeofday (&tv, &tm);
|
||||||
|
|
||||||
return -tm.tz_minuteswest / 60;
|
return -tm.tz_minuteswest / 60;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#include "spawn.h"
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TermWindow::TermWinActivate()
|
TermWindow::TermWinActivate()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user