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:
DarkWyrm
2006-08-07 13:57:30 +00:00
parent 1920c5bc7d
commit 464b524b93
+64 -83
View File
@@ -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);
@@ -198,9 +199,7 @@ TermWindow::SetupMenu(void)
// 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 = new BMenu("Terminal");
fFilemenu->AddItem(new BMenuItem("Switch Terminals", new BMessage(MENU_SWITCH_TERM),'G')); fFilemenu->AddItem(new BMenuItem("Switch Terminals", new BMessage(MENU_SWITCH_TERM),'G'));
fFilemenu->AddItem(new BMenuItem("Start New Terminal", new BMessage(MENU_NEW_TERM), 'N')); fFilemenu->AddItem(new BMenuItem("Start New Terminal", new BMessage(MENU_NEW_TERM), 'N'));
@@ -213,9 +212,7 @@ TermWindow::SetupMenu(void)
fFilemenu->AddItem(new BMenuItem("Quit", new BMessage(MENU_FILE_QUIT), 'Q')); fFilemenu->AddItem(new BMenuItem("Quit", new BMessage(MENU_FILE_QUIT), 'Q'));
fMenubar->AddItem(fFilemenu); fMenubar->AddItem(fFilemenu);
/* // Make Edit Menu.
* Make Edit Menu.
*/
fEditmenu = new BMenu ("Edit"); fEditmenu = new BMenu ("Edit");
fEditmenu->AddItem (new BMenuItem ("Copy", new BMessage (B_COPY),'C')); fEditmenu->AddItem (new BMenuItem ("Copy", new BMessage (B_COPY),'C'));
fEditmenu->AddItem (new BMenuItem ("Paste", new BMessage (B_PASTE),'V')); fEditmenu->AddItem (new BMenuItem ("Paste", new BMessage (B_PASTE),'V'));
@@ -231,10 +228,7 @@ 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)));
@@ -285,11 +279,10 @@ TermWindow::MessageReceived(BMessage *message)
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: { case MENU_NEW_TERM: {
app_info info; app_info info;
be_app->GetAppInfo(&info); be_app->GetAppInfo(&info);
@@ -297,36 +290,32 @@ TermWindow::MessageReceived(BMessage *message)
// try launching two different ways to work around possible problems // try launching two different ways to work around possible problems
if (be_roster->Launch(&info.ref)!=B_OK) if (be_roster->Launch(&info.ref)!=B_OK)
be_roster->Launch(TERM_SIGNATURE); be_roster->Launch(TERM_SIGNATURE);
}
break; break;
}
case MENU_PREF_OPEN: case MENU_PREF_OPEN: {
if (!fPrefWindow){ if (!fPrefWindow)
fPrefWindow = new PrefDlg(this); fPrefWindow = new PrefDlg(this);
}else{ else
fPrefWindow->Activate(); fPrefWindow->Activate();
}
break; break;
}
case MSG_PREF_CLOSED: case MSG_PREF_CLOSED: {
fPrefWindow = NULL; fPrefWindow = NULL;
break; break;
}
case MENU_FILE_QUIT: case MENU_FILE_QUIT: {
be_app->PostMessage(B_QUIT_REQUESTED); be_app->PostMessage(B_QUIT_REQUESTED);
break; break;
case MENU_ENCODING: }
case MENU_ENCODING: {
message->FindInt32 ("op", &coding_id); message->FindInt32 ("op", &coding_id);
gNowCoding = coding_id; gNowCoding = coding_id;
SetCoding(coding_id); SetCoding(coding_id);
break; break;
}
/* // Extended B_SET_PROPERTY. Dispatch this message,
* Extended B_SET_PROPERTY. Dispatch this message, // Set coding ID.
* Set coding ID. case B_SET_PROPERTY: {
*/
case B_SET_PROPERTY:
{
int32 i; int32 i;
BMessage spe; BMessage spe;
message->GetCurrentSpecifier(&i, &spe); message->GetCurrentSpecifier(&i, &spe);
@@ -342,12 +331,8 @@ TermWindow::MessageReceived(BMessage *message)
break; break;
} }
/* // Extended B_GET_PROPERTY. Dispatch this message, reply now coding ID.
* Extended B_GET_PROPERTY. Dispatch this message, case B_GET_PROPERTY: {
* reply now coding ID.
*/
case B_GET_PROPERTY:
{
int32 i; int32 i;
BMessage spe; BMessage spe;
message->GetCurrentSpecifier(&i, &spe); message->GetCurrentSpecifier(&i, &spe);
@@ -355,7 +340,8 @@ TermWindow::MessageReceived(BMessage *message)
BMessage reply(B_REPLY); BMessage reply(B_REPLY);
reply.AddInt32("result", gNowCoding); reply.AddInt32("result", gNowCoding);
message->SendReply(&reply); message->SendReply(&reply);
}else if (!strcmp("tty", spe.FindString("property", i))){ }
else if (!strcmp("tty", spe.FindString("property", i))) {
BMessage reply(B_REPLY); BMessage reply(B_REPLY);
reply.AddString("result", &tty_name[8]); reply.AddString("result", &tty_name[8]);
message->SendReply(&reply); message->SendReply(&reply);
@@ -365,31 +351,30 @@ TermWindow::MessageReceived(BMessage *message)
break; break;
} }
/* // Message from Preference panel.
* Message from Preference panel.
*/
case MSG_ROWS_CHANGED: case MSG_ROWS_CHANGED:
case MSG_COLS_CHANGED: case MSG_COLS_CHANGED: {
r = fTermView->SetTermSize (gTermPref->getInt32 (PREF_ROWS), r = fTermView->SetTermSize (gTermPref->getInt32 (PREF_ROWS),
gTermPref->getInt32 (PREF_COLS), gTermPref->getInt32 (PREF_COLS), 0);
0);
ResizeTo (r.Width()+ B_V_SCROLL_BAR_WIDTH + VIEW_OFFSET * 2, ResizeTo (r.Width()+ B_V_SCROLL_BAR_WIDTH + VIEW_OFFSET * 2,
r.Height()+fMenubar->Bounds().Height() + VIEW_OFFSET *2); r.Height()+fMenubar->Bounds().Height() + VIEW_OFFSET *2);
break;
BPath path;
if (PrefHandler::GetDefaultPath(path) == B_OK)
gTermPref->SaveAsText(path.Path(), PREFFILE_MIMETYPE);
break;
}
case MSG_HALF_FONT_CHANGED: case MSG_HALF_FONT_CHANGED:
case MSG_FULL_FONT_CHANGED: case MSG_FULL_FONT_CHANGED:
case MSG_HALF_SIZE_CHANGED: case MSG_HALF_SIZE_CHANGED:
case MSG_FULL_SIZE_CHANGED: case MSG_FULL_SIZE_CHANGED: {
halfFont.SetFamilyAndStyle (gTermPref->getString(PREF_HALF_FONT_FAMILY), halfFont.SetFamilyAndStyle (gTermPref->getString(PREF_HALF_FONT_FAMILY),NULL);
NULL);
halfFont.SetSize (gTermPref->getFloat(PREF_HALF_FONT_SIZE)); halfFont.SetSize (gTermPref->getFloat(PREF_HALF_FONT_SIZE));
halfFont.SetSpacing (B_FIXED_SPACING); halfFont.SetSpacing (B_FIXED_SPACING);
fullFont.SetFamilyAndStyle (gTermPref->getString(PREF_FULL_FONT_FAMILY), fullFont.SetFamilyAndStyle (gTermPref->getString(PREF_FULL_FONT_FAMILY),NULL);
NULL);
fullFont.SetSize (gTermPref->getFloat(PREF_FULL_FONT_SIZE)); fullFont.SetSize (gTermPref->getFloat(PREF_FULL_FONT_SIZE));
fullFont.SetSpacing (B_FIXED_SPACING); fullFont.SetSpacing (B_FIXED_SPACING);
@@ -403,50 +388,48 @@ TermWindow::MessageReceived(BMessage *message)
SetSizeLimits (MIN_COLS * width, MAX_COLS * width, SetSizeLimits (MIN_COLS * width, MAX_COLS * width,
MIN_COLS * height, MAX_COLS * height); MIN_COLS * height, MAX_COLS * height);
ResizeTo (r.Width()+ B_V_SCROLL_BAR_WIDTH + VIEW_OFFSET * 2, ResizeTo (r.Width()+ B_V_SCROLL_BAR_WIDTH + VIEW_OFFSET * 2,
r.Height()+fMenubar->Bounds().Height() + VIEW_OFFSET * 2); r.Height()+fMenubar->Bounds().Height() + VIEW_OFFSET * 2);
fTermView->Invalidate(); fTermView->Invalidate();
break; break;
}
case EIGHTYTWENTYFOUR: case EIGHTYTWENTYFOUR: {
gTermPref->setString(PREF_COLS, "80"); gTermPref->setString(PREF_COLS, "80");
gTermPref->setString(PREF_ROWS, "24"); gTermPref->setString(PREF_ROWS, "24");
this->PostMessage (MSG_ROWS_CHANGED); this->PostMessage (MSG_ROWS_CHANGED);
this->PostMessage (MSG_COLS_CHANGED); this->PostMessage (MSG_COLS_CHANGED);
break; break;
}
case EIGHTYTWENTYFIVE: case EIGHTYTWENTYFIVE: {
gTermPref->setString(PREF_COLS, "80"); gTermPref->setString(PREF_COLS, "80");
gTermPref->setString(PREF_ROWS, "25"); gTermPref->setString(PREF_ROWS, "25");
this->PostMessage (MSG_ROWS_CHANGED); this->PostMessage (MSG_ROWS_CHANGED);
this->PostMessage (MSG_COLS_CHANGED); this->PostMessage (MSG_COLS_CHANGED);
break; break;
}
case EIGHTYFORTY: case EIGHTYFORTY: {
gTermPref->setString(PREF_COLS, "80"); gTermPref->setString(PREF_COLS, "80");
gTermPref->setString(PREF_ROWS, "40"); gTermPref->setString(PREF_ROWS, "40");
this->PostMessage (MSG_ROWS_CHANGED); this->PostMessage (MSG_ROWS_CHANGED);
this->PostMessage (MSG_COLS_CHANGED); this->PostMessage (MSG_COLS_CHANGED);
break; break;
}
case ONETHREETWOTWENTYFOUR: case ONETHREETWOTWENTYFOUR: {
gTermPref->setString(PREF_COLS, "132"); gTermPref->setString(PREF_COLS, "132");
gTermPref->setString(PREF_ROWS, "24"); gTermPref->setString(PREF_ROWS, "24");
this->PostMessage (MSG_ROWS_CHANGED); this->PostMessage (MSG_ROWS_CHANGED);
this->PostMessage (MSG_COLS_CHANGED); this->PostMessage (MSG_COLS_CHANGED);
break; break;
}
case ONETHREETWOTWENTYFIVE: case ONETHREETWOTWENTYFIVE: {
gTermPref->setString(PREF_COLS, "132"); gTermPref->setString(PREF_COLS, "132");
gTermPref->setString(PREF_ROWS, "25"); gTermPref->setString(PREF_ROWS, "25");
this->PostMessage (MSG_ROWS_CHANGED); this->PostMessage (MSG_ROWS_CHANGED);
this->PostMessage (MSG_COLS_CHANGED); this->PostMessage (MSG_COLS_CHANGED);
break; break;
}
case FULLSCREEN: case FULLSCREEN: {
if (!fSavedFrame.IsValid()) { // go fullscreen if (!fSavedFrame.IsValid()) { // go fullscreen
float mbHeight = fMenubar->Bounds().Height() + 1; float mbHeight = fMenubar->Bounds().Height() + 1;
fSavedFrame = Frame(); fSavedFrame = Frame();
@@ -472,46 +455,47 @@ TermWindow::MessageReceived(BMessage *message)
fSavedFrame = BRect(0,0,-1,-1); fSavedFrame = BRect(0,0,-1,-1);
} }
break; break;
}
case MSG_FONT_CHANGED: case MSG_FONT_CHANGED: {
gTermPref->setString (PREF_HALF_FONT_FAMILY, fNewFontMenu->FindMarked()->Label()); gTermPref->setString (PREF_HALF_FONT_FAMILY, fNewFontMenu->FindMarked()->Label());
this->PostMessage (MSG_HALF_FONT_CHANGED); this->PostMessage (MSG_HALF_FONT_CHANGED);
break; break;
}
case MSG_COLOR_CHANGED: {
case MSG_COLOR_CHANGED:
fBaseView->SetViewColor (gTermPref->getRGB (PREF_TEXT_BACK_COLOR)); fBaseView->SetViewColor (gTermPref->getRGB (PREF_TEXT_BACK_COLOR));
fTermView->SetTermColor (); fTermView->SetTermColor ();
fBaseView->Invalidate(); fBaseView->Invalidate();
fTermView->Invalidate(); fTermView->Invalidate();
break; break;
case SAVE_AS_DEFAULT: }
{ 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 MENU_PAGE_SETUP: }
case MENU_PAGE_SETUP: {
DoPageSetup (); DoPageSetup ();
break; break;
case MENU_PRINT: }
case MENU_PRINT: {
DoPrint (); DoPrint ();
break; break;
}
case MSGRUN_WINDOW: case MSGRUN_WINDOW: {
fTermView->UpdateSIGWINCH (); fTermView->UpdateSIGWINCH ();
break; break;
}
case B_ABOUT_REQUESTED: case B_ABOUT_REQUESTED: {
be_app->PostMessage(B_ABOUT_REQUESTED); be_app->PostMessage(B_ABOUT_REQUESTED);
break; break;
}
default: default: {
BWindow::MessageReceived(message); BWindow::MessageReceived(message);
break; break;
} }
} }
}
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
// WindowActivated (bool) // WindowActivated (bool)
// Dispatch Mesasge. // Dispatch Mesasge.
@@ -566,9 +550,6 @@ TermWindow::GetTimeZone ()
} }
#include "spawn.h"
void void
TermWindow::TermWinActivate() TermWindow::TermWinActivate()
{ {