Convert Poorman to use the Layout API.
Also includes many style fixes. This patch was done by tokyo6pm, and then updated by mks after changes to Poorman broke the patch. ticket: #3787
This commit is contained in:
parent
2d4288086f
commit
a1ae802279
@ -7,6 +7,7 @@
|
||||
|
||||
#include <Box.h>
|
||||
#include <Catalog.h>
|
||||
#include <GroupLayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
|
||||
#include "constants.h"
|
||||
@ -19,46 +20,41 @@
|
||||
#define B_TRANSLATION_CONTEXT "PoorMan"
|
||||
|
||||
|
||||
PoorManAdvancedView::PoorManAdvancedView(BRect rect, const char *name)
|
||||
: BView(rect, name, B_FOLLOW_ALL, B_WILL_DRAW)
|
||||
PoorManAdvancedView::PoorManAdvancedView(const char* name)
|
||||
:
|
||||
BView(name, B_WILL_DRAW, NULL)
|
||||
{
|
||||
PoorManWindow * win;
|
||||
win = ((PoorManApplication *)be_app)->GetPoorManWindow();
|
||||
PoorManWindow* win;
|
||||
win = ((PoorManApplication*)be_app)->GetPoorManWindow();
|
||||
|
||||
SetViewColor(BACKGROUND_COLOR);
|
||||
SetLayout(new BGroupLayout(B_VERTICAL));
|
||||
|
||||
// Console Logging BBox
|
||||
BRect maxRect;
|
||||
maxRect = rect;
|
||||
maxRect.top -= 5.0;
|
||||
maxRect.left -= 5.0;
|
||||
maxRect.right -= 7.0;
|
||||
maxRect.bottom -= 118.0;
|
||||
|
||||
BBox * connectionOptions = new BBox(maxRect, B_TRANSLATE("Connections"));
|
||||
BBox* connectionOptions = new BBox(B_TRANSLATE("Connections"));
|
||||
connectionOptions->SetLabel(STR_BBX_CONNECTION);
|
||||
AddChild(connectionOptions);
|
||||
|
||||
BRect sliderRect;
|
||||
sliderRect = connectionOptions->Bounds();
|
||||
sliderRect.InsetBy(10.0f, 10.0f);
|
||||
sliderRect.top += 10;
|
||||
sliderRect.bottom = sliderRect.top + 50.0;
|
||||
|
||||
maxConnections = new StatusSlider(sliderRect, "Max Slider", STR_SLD_LABEL,
|
||||
STR_SLD_STATUS_LABEL, new BMessage(MSG_PREF_ADV_SLD_MAX_CONNECTION), 1, 200);
|
||||
fMaxConnections = new StatusSlider("Max Slider", STR_SLD_LABEL,
|
||||
STR_SLD_STATUS_LABEL,
|
||||
new BMessage(MSG_PREF_ADV_SLD_MAX_CONNECTION), 1, 200);
|
||||
|
||||
// labels below the slider 1 and 200
|
||||
maxConnections->SetLimitLabels("1", "200");
|
||||
fMaxConnections->SetLimitLabels("1", "200");
|
||||
SetMaxSimutaneousConnections(win->MaxConnections());
|
||||
connectionOptions->AddChild(maxConnections);
|
||||
|
||||
connectionOptions->AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
||||
.Add(fMaxConnections)
|
||||
.SetInsets(5, 5, 5, 5));
|
||||
|
||||
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
||||
.Add(connectionOptions)
|
||||
.AddGlue()
|
||||
.SetInsets(5, 5, 5, 5));
|
||||
}
|
||||
|
||||
void
|
||||
PoorManAdvancedView::SetMaxSimutaneousConnections(int32 num)
|
||||
{
|
||||
if (num <= 0 || num > 200)
|
||||
maxConnections->SetValue(32);
|
||||
fMaxConnections->SetValue(32);
|
||||
else
|
||||
maxConnections->SetValue(num);
|
||||
fMaxConnections->SetValue(num);
|
||||
}
|
||||
|
@ -13,16 +13,17 @@
|
||||
#include "StatusSlider.h"
|
||||
|
||||
|
||||
class PoorManAdvancedView: public BView
|
||||
{
|
||||
class PoorManAdvancedView: public BView {
|
||||
public:
|
||||
PoorManAdvancedView(BRect, const char *name);
|
||||
int32 MaxSimultaneousConnections() { return maxConnections->Value(); }
|
||||
void SetMaxSimutaneousConnections(int32 num);
|
||||
PoorManAdvancedView(const char *name);
|
||||
|
||||
int32 MaxSimultaneousConnections()
|
||||
{ return fMaxConnections->Value(); }
|
||||
void SetMaxSimutaneousConnections(int32 num);
|
||||
private:
|
||||
// Advanced Tab
|
||||
// Advanced Tab
|
||||
// Connections Options
|
||||
StatusSlider * maxConnections;
|
||||
StatusSlider* fMaxConnections;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
#include <Box.h>
|
||||
#include <Catalog.h>
|
||||
#include <GroupLayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
|
||||
#include "constants.h"
|
||||
@ -19,80 +20,61 @@
|
||||
#define B_TRANSLATION_CONTEXT "PoorMan"
|
||||
|
||||
|
||||
PoorManLoggingView::PoorManLoggingView(BRect rect, const char *name)
|
||||
: BView(rect, name, B_FOLLOW_ALL, B_WILL_DRAW)
|
||||
PoorManLoggingView::PoorManLoggingView(const char* name)
|
||||
:
|
||||
BView(name, B_WILL_DRAW, NULL)
|
||||
{
|
||||
PoorManWindow * win;
|
||||
win = ((PoorManApplication *)be_app)->GetPoorManWindow();
|
||||
PoorManWindow* win;
|
||||
win = ((PoorManApplication*)be_app)->GetPoorManWindow();
|
||||
|
||||
SetViewColor(BACKGROUND_COLOR);
|
||||
SetLayout(new BGroupLayout(B_VERTICAL));
|
||||
|
||||
// Console Logging BBox
|
||||
BRect consoleLoggingRect;
|
||||
consoleLoggingRect = rect;
|
||||
consoleLoggingRect.top -= 5.0;
|
||||
consoleLoggingRect.left -= 5.0;
|
||||
consoleLoggingRect.right -= 7.0;
|
||||
consoleLoggingRect.bottom -= 118.0;
|
||||
|
||||
BBox * consoleLogging = new BBox(consoleLoggingRect,
|
||||
B_TRANSLATE("Console Logging"));
|
||||
BBox* consoleLogging = new BBox(B_TRANSLATE("Console Logging"));
|
||||
consoleLogging->SetLabel(STR_BBX_CONSOLE_LOGGING);
|
||||
AddChild(consoleLogging);
|
||||
|
||||
|
||||
// File Logging BBox
|
||||
BRect fileLoggingRect;
|
||||
fileLoggingRect = consoleLoggingRect;
|
||||
fileLoggingRect.top = consoleLoggingRect.bottom + 10.0;
|
||||
fileLoggingRect.bottom = fileLoggingRect.top + 100.0;
|
||||
|
||||
BBox * fileLogging = new BBox(fileLoggingRect,
|
||||
B_TRANSLATE("File Logging"));
|
||||
BBox* fileLogging = new BBox(B_TRANSLATE("File Logging"));
|
||||
fileLogging->SetLabel(STR_BBX_FILE_LOGGING);
|
||||
AddChild(fileLogging);
|
||||
|
||||
float left = 10.0;
|
||||
float top = 20.0;
|
||||
float box_size = 13.0;
|
||||
BRect tempRect(left, top, consoleLoggingRect.Width() - 5.0, top + box_size);
|
||||
|
||||
|
||||
// Console Logging
|
||||
logConsole = new BCheckBox(tempRect, B_TRANSLATE("Log To Console"),
|
||||
fLogConsole = new BCheckBox(B_TRANSLATE("Log To Console"),
|
||||
STR_CBX_LOG_CONSOLE, new BMessage(MSG_PREF_LOG_CBX_CONSOLE));
|
||||
// set the checkbox to the value the program has
|
||||
SetLogConsoleValue(win->LogConsoleFlag());
|
||||
consoleLogging->AddChild(logConsole);
|
||||
|
||||
// File Logging
|
||||
logFile = new BCheckBox(tempRect, B_TRANSLATE("Log To File"),
|
||||
STR_CBX_LOG_FILE, new BMessage(MSG_PREF_LOG_CBX_FILE));
|
||||
fLogFile = new BCheckBox(B_TRANSLATE("Log To File"), STR_CBX_LOG_FILE,
|
||||
new BMessage(MSG_PREF_LOG_CBX_FILE));
|
||||
// set the checkbox to the value the program has
|
||||
SetLogFileValue(win->LogFileFlag());
|
||||
fileLogging->AddChild(logFile);
|
||||
|
||||
// File Name
|
||||
tempRect.top = tempRect.bottom + 10.0;
|
||||
tempRect.bottom = tempRect.top + box_size;
|
||||
tempRect.right -= 5.0;
|
||||
|
||||
logFileName = new BTextControl(tempRect, B_TRANSLATE("File Name"),
|
||||
fLogFileName = new BTextControl(B_TRANSLATE("File Name"),
|
||||
STR_TXT_LOG_FILE_NAME, NULL, NULL);
|
||||
logFileName->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
|
||||
logFileName->SetDivider(fileLogging->StringWidth(STR_TXT_LOG_FILE_NAME) + 8.0f);
|
||||
SetLogFileName(win->LogPath());
|
||||
fileLogging->AddChild(logFileName);
|
||||
|
||||
// Create Log File
|
||||
BRect createLogFileRect;
|
||||
createLogFileRect.top = tempRect.bottom + 13.0;
|
||||
createLogFileRect.right = tempRect.right + 2.0;
|
||||
createLogFileRect.left = createLogFileRect.right
|
||||
- fileLogging->StringWidth(B_TRANSLATE("Create Log File")) - 24.0;
|
||||
createLogFileRect.bottom = createLogFileRect.top + 19.0;
|
||||
|
||||
createLogFile = new BButton(createLogFileRect, B_TRANSLATE("Create Log File"),
|
||||
fCreateLogFile = new BButton(B_TRANSLATE("Create Log File"),
|
||||
STR_BTN_CREATE_LOG_FILE, new BMessage(MSG_PREF_LOG_BTN_CREATE_FILE));
|
||||
fileLogging->AddChild(createLogFile);
|
||||
|
||||
consoleLogging->AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
|
||||
.Add(fLogConsole)
|
||||
.AddGlue())
|
||||
.SetInsets(5, 5, 5, 5));
|
||||
|
||||
fileLogging->AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
|
||||
.Add(fLogFile)
|
||||
.AddGlue())
|
||||
.Add(fLogFileName)
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
|
||||
.AddGlue()
|
||||
.Add(fCreateLogFile))
|
||||
.SetInsets(5, 5, 5, 5));
|
||||
|
||||
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
||||
.Add(consoleLogging)
|
||||
.Add(fileLogging)
|
||||
.SetInsets(5, 5, 5, 5));
|
||||
}
|
||||
|
@ -14,28 +14,36 @@
|
||||
#include <CheckBox.h>
|
||||
|
||||
|
||||
class PoorManLoggingView: public BView
|
||||
{
|
||||
class PoorManLoggingView: public BView {
|
||||
public:
|
||||
PoorManLoggingView(BRect, const char *name);
|
||||
PoorManLoggingView(const char* name);
|
||||
|
||||
void SetLogConsoleValue(bool state) {if (state) logConsole->SetValue(B_CONTROL_ON);
|
||||
else logConsole->SetValue(B_CONTROL_OFF); }
|
||||
bool LogConsoleValue() { return (logConsole->Value() == B_CONTROL_ON) ? true : false; }
|
||||
void SetLogFileValue(bool state) {if (state) logFile->SetValue(B_CONTROL_ON);
|
||||
else logFile->SetValue(B_CONTROL_OFF); }
|
||||
bool LogFileValue() { return (logFile->Value() == B_CONTROL_ON) ? true : false; }
|
||||
const char * LogFileName() { return logFileName->Text(); }
|
||||
void SetLogFileName(const char * log) { logFileName->SetText(log); }
|
||||
private:
|
||||
// Logging Tab
|
||||
void SetLogConsoleValue(bool state)
|
||||
{ if (state)
|
||||
fLogConsole->SetValue(B_CONTROL_ON);
|
||||
else fLogConsole->SetValue(B_CONTROL_OFF); }
|
||||
bool LogConsoleValue()
|
||||
{ return (fLogConsole->Value() == B_CONTROL_ON)
|
||||
? true : false; }
|
||||
void SetLogFileValue(bool state)
|
||||
{ if (state) fLogFile->SetValue(B_CONTROL_ON);
|
||||
else fLogFile->SetValue(B_CONTROL_OFF); }
|
||||
bool LogFileValue()
|
||||
{ return (fLogFile->Value() == B_CONTROL_ON)
|
||||
? true : false; }
|
||||
const char* LogFileName()
|
||||
{ return fLogFileName->Text(); }
|
||||
void SetLogFileName(const char* log)
|
||||
{ fLogFileName->SetText(log); }
|
||||
|
||||
private:
|
||||
// Logging Tab
|
||||
// Console Logging
|
||||
BCheckBox * logConsole;
|
||||
BCheckBox* fLogConsole;
|
||||
// File Logging
|
||||
BCheckBox * logFile;
|
||||
BTextControl * logFileName;
|
||||
BButton * createLogFile;
|
||||
BCheckBox* fLogFile;
|
||||
BTextControl* fLogFileName;
|
||||
BButton * fCreateLogFile;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -9,7 +9,10 @@
|
||||
#include <Catalog.h>
|
||||
#include <Debug.h>
|
||||
#include <Directory.h>
|
||||
#include <GroupLayoutBuilder.h>
|
||||
#include <GroupView.h>
|
||||
#include <Locale.h>
|
||||
#include <SpaceLayoutItem.h>
|
||||
#include <Window.h>
|
||||
|
||||
#include "constants.h"
|
||||
@ -25,110 +28,72 @@
|
||||
|
||||
PoorManPreferencesWindow::PoorManPreferencesWindow(BRect frame, char * name)
|
||||
: BWindow(frame, name, B_TITLED_WINDOW, B_NOT_ZOOMABLE | B_NOT_RESIZABLE
|
||||
| B_CLOSE_ON_ESCAPE),
|
||||
webDirFilePanel(NULL),
|
||||
logFilePanel(NULL)
|
||||
| B_CLOSE_ON_ESCAPE | B_AUTO_UPDATE_SIZE_LIMITS),
|
||||
fWebDirFilePanel(NULL),
|
||||
fLogFilePanel(NULL)
|
||||
{
|
||||
frame = Bounds();
|
||||
SetLayout(new BGroupLayout(B_VERTICAL));
|
||||
|
||||
prefView = new PoorManView(frame, STR_WIN_NAME_PREF);
|
||||
//prefView->SetViewColor(216,216,216,255);
|
||||
prefView->SetViewColor(BACKGROUND_COLOR);
|
||||
AddChild(prefView);
|
||||
|
||||
|
||||
// Button View
|
||||
BRect buttonRect;
|
||||
buttonRect = Bounds();
|
||||
buttonRect.top = buttonRect.bottom - 30;
|
||||
|
||||
buttonView = new PoorManView(buttonRect, "Button View");
|
||||
buttonView->SetViewColor(BACKGROUND_COLOR);
|
||||
prefView->AddChild(buttonView);
|
||||
|
||||
// Buttons
|
||||
float buttonTop = 0.0f;
|
||||
float buttonHeight = 26.0f;
|
||||
|
||||
float widthCancel = prefView->StringWidth(B_TRANSLATE("Cancel")) + 24.0f;
|
||||
float widthDone = prefView->StringWidth(B_TRANSLATE("Done")) + 24.0f;
|
||||
|
||||
float gap = 5.0f;
|
||||
|
||||
BRect button1(prefView->Bounds().Width() - 2 * gap - widthCancel
|
||||
- widthDone, buttonTop, prefView->Bounds().Width() - 2 * gap - widthDone,
|
||||
buttonTop + buttonHeight);
|
||||
cancelButton = new BButton(button1, "Cancel Button", B_TRANSLATE("Cancel"),
|
||||
fCancelButton = new BButton("Cancel Button", B_TRANSLATE("Cancel"),
|
||||
new BMessage(MSG_PREF_BTN_CANCEL));
|
||||
|
||||
BRect button2(prefView->Bounds().Width() - gap - widthDone, buttonTop,
|
||||
prefView->Bounds().Width() - gap, buttonTop + buttonHeight);
|
||||
doneButton = new BButton(button2, "Done Button", B_TRANSLATE("Done"),
|
||||
fDoneButton = new BButton("Done Button", B_TRANSLATE("Done"),
|
||||
new BMessage(MSG_PREF_BTN_DONE));
|
||||
|
||||
buttonView->AddChild(cancelButton);
|
||||
buttonView->AddChild(doneButton);
|
||||
|
||||
// Create tabs
|
||||
BRect r;
|
||||
r = Bounds();
|
||||
//r.InsetBy(5, 5);
|
||||
r.top += 8.0;
|
||||
r.bottom -= 38.0;
|
||||
|
||||
prefTabView = new BTabView(r, "Pref Tab View");
|
||||
prefTabView->SetViewColor(BACKGROUND_COLOR);
|
||||
|
||||
r = prefTabView->Bounds();
|
||||
r.InsetBy(5, 5);
|
||||
r.bottom -= prefTabView->TabHeight();
|
||||
fPrefTabView = new BTabView("Pref Tab View");
|
||||
|
||||
// Site Tab
|
||||
siteTab = new BTab();
|
||||
siteView = new PoorManSiteView(r, "Site View");
|
||||
prefTabView->AddTab(siteView, siteTab);
|
||||
siteTab->SetLabel(STR_TAB_SITE);
|
||||
fSiteTab = new BTab();
|
||||
fSiteView = new PoorManSiteView("Site View");
|
||||
fPrefTabView->AddTab(fSiteView, fSiteTab);
|
||||
fSiteTab->SetLabel(STR_TAB_SITE);
|
||||
|
||||
// Logging Tab
|
||||
loggingTab = new BTab();
|
||||
loggingView = new PoorManLoggingView(r, "Logging View");
|
||||
prefTabView->AddTab(loggingView, loggingTab);
|
||||
loggingTab->SetLabel(STR_TAB_LOGGING);
|
||||
fLoggingTab = new BTab();
|
||||
fLoggingView = new PoorManLoggingView("Logging View");
|
||||
fPrefTabView->AddTab(fLoggingView, fLoggingTab);
|
||||
fLoggingTab->SetLabel(STR_TAB_LOGGING);
|
||||
|
||||
// Advanced Tab
|
||||
advancedTab = new BTab();
|
||||
advancedView = new PoorManAdvancedView(r, "Advanced View");
|
||||
prefTabView->AddTab(advancedView, advancedTab);
|
||||
advancedTab->SetLabel(STR_TAB_ADVANCED);
|
||||
|
||||
prefView->AddChild(prefTabView);
|
||||
fAdvancedTab = new BTab();
|
||||
fAdvancedView = new PoorManAdvancedView("Advanced View");
|
||||
fPrefTabView->AddTab(fAdvancedView, fAdvancedTab);
|
||||
fAdvancedTab->SetLabel(STR_TAB_ADVANCED);
|
||||
|
||||
// FilePanels
|
||||
BWindow * change_title;
|
||||
|
||||
BMessenger messenger(this);
|
||||
BMessage message(MSG_FILE_PANEL_SELECT_WEB_DIR);
|
||||
webDirFilePanel = new BFilePanel(B_OPEN_PANEL, &messenger, NULL,
|
||||
fWebDirFilePanel = new BFilePanel(B_OPEN_PANEL, &messenger, NULL,
|
||||
B_DIRECTORY_NODE, false, &message, NULL, true);
|
||||
|
||||
webDirFilePanel->SetPanelDirectory(new BDirectory("/boot/home/public_html"));
|
||||
webDirFilePanel->SetButtonLabel(B_DEFAULT_BUTTON, B_TRANSLATE("Select"));
|
||||
change_title = webDirFilePanel->Window();
|
||||
fWebDirFilePanel->SetPanelDirectory(
|
||||
new BDirectory("/boot/home/public_html"));
|
||||
fWebDirFilePanel->SetButtonLabel(B_DEFAULT_BUTTON, B_TRANSLATE("Select"));
|
||||
change_title = fWebDirFilePanel->Window();
|
||||
change_title->SetTitle(STR_FILEPANEL_SELECT_WEB_DIR);
|
||||
|
||||
message.what = MSG_FILE_PANEL_CREATE_LOG_FILE;
|
||||
logFilePanel = new BFilePanel(B_SAVE_PANEL, &messenger, NULL,
|
||||
fLogFilePanel = new BFilePanel(B_SAVE_PANEL, &messenger, NULL,
|
||||
B_FILE_NODE, false, &message);
|
||||
logFilePanel->SetButtonLabel(B_DEFAULT_BUTTON, B_TRANSLATE("Create"));
|
||||
change_title = logFilePanel->Window();
|
||||
fLogFilePanel->SetButtonLabel(B_DEFAULT_BUTTON, B_TRANSLATE("Create"));
|
||||
change_title = fLogFilePanel->Window();
|
||||
change_title->SetTitle(STR_FILEPANEL_CREATE_LOG_FILE);
|
||||
|
||||
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
||||
.Add(fPrefTabView)
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL)
|
||||
.AddGlue()
|
||||
.Add(fCancelButton)
|
||||
.Add(fDoneButton))
|
||||
.SetInsets(5, 5, 5, 5));
|
||||
}
|
||||
|
||||
|
||||
PoorManPreferencesWindow::~PoorManPreferencesWindow()
|
||||
{
|
||||
delete logFilePanel;
|
||||
delete webDirFilePanel;
|
||||
delete fLogFilePanel;
|
||||
delete fWebDirFilePanel;
|
||||
}
|
||||
|
||||
|
||||
@ -139,38 +104,38 @@ PoorManPreferencesWindow::MessageReceived(BMessage* message)
|
||||
case MSG_PREF_BTN_DONE:
|
||||
PoorManWindow* win;
|
||||
PoorManServer* server;
|
||||
win = ((PoorManApplication *)be_app)->GetPoorManWindow();
|
||||
win = ((PoorManApplication*)be_app)->GetPoorManWindow();
|
||||
server = win->GetServer();
|
||||
|
||||
PRINT(("Pref Window: sendDir CheckBox: %d\n",
|
||||
siteView->SendDirValue()));
|
||||
server->SetListDir(siteView->SendDirValue());
|
||||
win->SetDirListFlag(siteView->SendDirValue());
|
||||
fSiteView->SendDirValue()));
|
||||
server->SetListDir(fSiteView->SendDirValue());
|
||||
win->SetDirListFlag(fSiteView->SendDirValue());
|
||||
PRINT(("Pref Window: indexFileName TextControl: %s\n",
|
||||
siteView->IndexFileName()));
|
||||
if (server->SetIndexName(siteView->IndexFileName()) == B_OK)
|
||||
win->SetIndexFileName(siteView->IndexFileName());
|
||||
PRINT(("Pref Window: webDir: %s\n", siteView->WebDir()));
|
||||
if (server->SetWebDir(siteView->WebDir()) == B_OK) {
|
||||
win->SetWebDir(siteView->WebDir());
|
||||
win->SetDirLabel(siteView->WebDir());
|
||||
fSiteView->IndexFileName()));
|
||||
if (server->SetIndexName(fSiteView->IndexFileName()) == B_OK)
|
||||
win->SetIndexFileName(fSiteView->IndexFileName());
|
||||
PRINT(("Pref Window: webDir: %s\n", fSiteView->WebDir()));
|
||||
if (server->SetWebDir(fSiteView->WebDir()) == B_OK) {
|
||||
win->SetWebDir(fSiteView->WebDir());
|
||||
win->SetDirLabel(fSiteView->WebDir());
|
||||
}
|
||||
|
||||
PRINT(("Pref Window: logConsole CheckBox: %d\n",
|
||||
loggingView->LogConsoleValue()));
|
||||
win->SetLogConsoleFlag(loggingView->LogConsoleValue());
|
||||
fLoggingView->LogConsoleValue()));
|
||||
win->SetLogConsoleFlag(fLoggingView->LogConsoleValue());
|
||||
PRINT(("Pref Window: logFile CheckBox: %d\n",
|
||||
loggingView->LogFileValue()));
|
||||
win->SetLogFileFlag(loggingView->LogFileValue());
|
||||
fLoggingView->LogFileValue()));
|
||||
win->SetLogFileFlag(fLoggingView->LogFileValue());
|
||||
PRINT(("Pref Window: logFileName: %s\n",
|
||||
loggingView->LogFileName()));
|
||||
win->SetLogPath(loggingView->LogFileName());
|
||||
fLoggingView->LogFileName()));
|
||||
win->SetLogPath(fLoggingView->LogFileName());
|
||||
|
||||
PRINT(("Pref Window: MaxConnections Slider: %ld\n",
|
||||
advancedView->MaxSimultaneousConnections()));
|
||||
server->SetMaxConns(advancedView->MaxSimultaneousConnections());
|
||||
fAdvancedView->MaxSimultaneousConnections()));
|
||||
server->SetMaxConns(fAdvancedView->MaxSimultaneousConnections());
|
||||
win->SetMaxConnections(
|
||||
(int16)advancedView->MaxSimultaneousConnections());
|
||||
(int16)fAdvancedView->MaxSimultaneousConnections());
|
||||
|
||||
if (Lock())
|
||||
Quit();
|
||||
@ -181,10 +146,10 @@ PoorManPreferencesWindow::MessageReceived(BMessage* message)
|
||||
break;
|
||||
case MSG_PREF_SITE_BTN_SELECT:
|
||||
// Select the Web Directory, root directory to look in.
|
||||
webDirFilePanel->SetTarget(this);
|
||||
webDirFilePanel->SetMessage(new BMessage(MSG_FILE_PANEL_SELECT_WEB_DIR));
|
||||
if (!webDirFilePanel->IsShowing())
|
||||
webDirFilePanel->Show();
|
||||
fWebDirFilePanel->SetTarget(this);
|
||||
fWebDirFilePanel->SetMessage(new BMessage(MSG_FILE_PANEL_SELECT_WEB_DIR));
|
||||
if (!fWebDirFilePanel->IsShowing())
|
||||
fWebDirFilePanel->Show();
|
||||
break;
|
||||
case MSG_FILE_PANEL_SELECT_WEB_DIR:
|
||||
// handle the open BMessage from the Select Web Directory File Panel
|
||||
@ -193,7 +158,7 @@ PoorManPreferencesWindow::MessageReceived(BMessage* message)
|
||||
break;
|
||||
case MSG_PREF_LOG_BTN_CREATE_FILE:
|
||||
// Create the Log File
|
||||
logFilePanel->Show();
|
||||
fLogFilePanel->Show();
|
||||
break;
|
||||
case MSG_FILE_PANEL_CREATE_LOG_FILE:
|
||||
// handle the save BMessage from the Create Log File Panel
|
||||
@ -201,8 +166,8 @@ PoorManPreferencesWindow::MessageReceived(BMessage* message)
|
||||
CreateLogFile(message);
|
||||
break;
|
||||
case MSG_PREF_ADV_SLD_MAX_CONNECTION:
|
||||
max_connections = advancedView->MaxSimultaneousConnections();
|
||||
PRINT(("Max Connections: %ld\n", max_connections));
|
||||
fMaxConnections = fAdvancedView->MaxSimultaneousConnections();
|
||||
PRINT(("Max Connections: %ld\n", fMaxConnections));
|
||||
break;
|
||||
default:
|
||||
BWindow::MessageReceived(message);
|
||||
@ -212,10 +177,10 @@ PoorManPreferencesWindow::MessageReceived(BMessage* message)
|
||||
|
||||
|
||||
void
|
||||
PoorManPreferencesWindow::SelectWebDir(BMessage * message)
|
||||
PoorManPreferencesWindow::SelectWebDir(BMessage* message)
|
||||
{
|
||||
entry_ref ref;
|
||||
const char * name;
|
||||
const char* name;
|
||||
BPath path;
|
||||
BEntry entry;
|
||||
|
||||
@ -227,15 +192,15 @@ PoorManPreferencesWindow::SelectWebDir(BMessage * message)
|
||||
entry.GetPath(&path);
|
||||
|
||||
PRINT(("DIR: %s\n", path.Path()));
|
||||
siteView->SetWebDir(path.Path());
|
||||
fSiteView->SetWebDir(path.Path());
|
||||
|
||||
bool temp;
|
||||
if (message->FindBool("Default Dialog", &temp) == B_OK) {
|
||||
PoorManWindow* win = ((PoorManApplication *)be_app)->GetPoorManWindow();
|
||||
win->StartServer();
|
||||
if (win->GetServer()->SetWebDir(siteView->WebDir()) == B_OK) {
|
||||
win->SetWebDir(siteView->WebDir());
|
||||
win->SetDirLabel(siteView->WebDir());
|
||||
if (win->GetServer()->SetWebDir(fSiteView->WebDir()) == B_OK) {
|
||||
win->SetWebDir(fSiteView->WebDir());
|
||||
win->SetDirLabel(fSiteView->WebDir());
|
||||
win->SaveSettings();
|
||||
win->Show();
|
||||
}
|
||||
@ -246,7 +211,7 @@ PoorManPreferencesWindow::SelectWebDir(BMessage * message)
|
||||
|
||||
|
||||
void
|
||||
PoorManPreferencesWindow::CreateLogFile(BMessage * message)
|
||||
PoorManPreferencesWindow::CreateLogFile(BMessage* message)
|
||||
{
|
||||
entry_ref ref;
|
||||
const char * name;
|
||||
@ -268,8 +233,8 @@ PoorManPreferencesWindow::CreateLogFile(BMessage * message)
|
||||
PRINT(("Log File: %s\n", path.Path()));
|
||||
|
||||
if (err == B_OK) {
|
||||
loggingView->SetLogFileName(path.Path());
|
||||
loggingView->SetLogFileValue(true);
|
||||
fLoggingView->SetLogFileName(path.Path());
|
||||
fLoggingView->SetLogFileValue(true);
|
||||
}
|
||||
|
||||
// mark the checkbox
|
||||
@ -283,8 +248,8 @@ PoorManPreferencesWindow::ShowWebDirFilePanel()
|
||||
BMessage message(MSG_FILE_PANEL_SELECT_WEB_DIR);
|
||||
message.AddBool("Default Dialog", true);
|
||||
|
||||
webDirFilePanel->SetTarget(be_app);
|
||||
webDirFilePanel->SetMessage(&message);
|
||||
if (!webDirFilePanel->IsShowing())
|
||||
webDirFilePanel->Show();
|
||||
fWebDirFilePanel->SetTarget(be_app);
|
||||
fWebDirFilePanel->SetMessage(&message);
|
||||
if (!fWebDirFilePanel->IsShowing())
|
||||
fWebDirFilePanel->Show();
|
||||
}
|
||||
|
@ -22,59 +22,56 @@
|
||||
#include "PoorManAdvancedView.h"
|
||||
|
||||
|
||||
|
||||
|
||||
class PoorManPreferencesWindow: public BWindow
|
||||
{
|
||||
private:
|
||||
|
||||
PoorManView * prefView;
|
||||
PoorManView * buttonView;
|
||||
|
||||
// ------------------------------------------------
|
||||
// Tabs
|
||||
BTabView * prefTabView;
|
||||
BTab * siteTab;
|
||||
BTab * loggingTab;
|
||||
BTab * advancedTab;
|
||||
// Tab Views
|
||||
PoorManSiteView * siteView;
|
||||
PoorManLoggingView * loggingView;
|
||||
PoorManAdvancedView * advancedView;
|
||||
|
||||
// ------------------------------------------------
|
||||
// Buttons
|
||||
BButton * cancelButton;
|
||||
BButton * doneButton;
|
||||
|
||||
// ------------------------------------------------
|
||||
// FilePanels
|
||||
BFilePanel * webDirFilePanel;
|
||||
BFilePanel * logFilePanel;
|
||||
|
||||
|
||||
// ------------------------------------------------
|
||||
// temporary preference variables used to save and
|
||||
// set the application to
|
||||
// site tab
|
||||
char web_directory[B_FILE_NAME_LENGTH];
|
||||
char index_file_name[64];
|
||||
bool send_dir;
|
||||
// logging tab
|
||||
bool log_to_console;
|
||||
bool log_to_file;
|
||||
char log_file_name[B_FILE_NAME_LENGTH];
|
||||
// advanced tab
|
||||
int32 max_connections;
|
||||
class PoorManPreferencesWindow: public BWindow {
|
||||
public:
|
||||
PoorManPreferencesWindow(BRect frame, char * name);
|
||||
~PoorManPreferencesWindow();
|
||||
PoorManPreferencesWindow(BRect frame, char* name);
|
||||
~PoorManPreferencesWindow();
|
||||
|
||||
virtual void MessageReceived(BMessage * message);
|
||||
virtual void MessageReceived(BMessage* message);
|
||||
|
||||
void ShowWebDirFilePanel();
|
||||
void SelectWebDir(BMessage * message);
|
||||
void CreateLogFile(BMessage * message);
|
||||
void ShowWebDirFilePanel();
|
||||
void SelectWebDir(BMessage* message);
|
||||
void CreateLogFile(BMessage* message);
|
||||
|
||||
private:
|
||||
PoorManView* fPrefView;
|
||||
PoorManView* fButtonView;
|
||||
|
||||
// ------------------------------------------------
|
||||
// Tabs
|
||||
BTabView* fPrefTabView;
|
||||
BTab* fSiteTab;
|
||||
BTab* fLoggingTab;
|
||||
BTab* fAdvancedTab;
|
||||
// Tab Views
|
||||
PoorManSiteView* fSiteView;
|
||||
PoorManLoggingView* fLoggingView;
|
||||
PoorManAdvancedView* fAdvancedView;
|
||||
|
||||
// ------------------------------------------------
|
||||
// Buttons
|
||||
BButton* fCancelButton;
|
||||
BButton* fDoneButton;
|
||||
|
||||
// ------------------------------------------------
|
||||
// FilePanels
|
||||
BFilePanel* fWebDirFilePanel;
|
||||
BFilePanel* fLogFilePanel;
|
||||
|
||||
|
||||
// ------------------------------------------------
|
||||
// temporary preference variables used to save and
|
||||
// set the application to
|
||||
// site tab
|
||||
char fWebDirectory[B_FILE_NAME_LENGTH];
|
||||
char fIndexFileName[64];
|
||||
bool fSendDir;
|
||||
// logging tab
|
||||
bool flogToConsole;
|
||||
bool fLogToFile;
|
||||
char fLogFileName[B_FILE_NAME_LENGTH];
|
||||
// advanced tab
|
||||
int32 fMaxConnections;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -6,91 +6,63 @@
|
||||
*/
|
||||
|
||||
#include <Box.h>
|
||||
#include <GroupLayoutBuilder.h>
|
||||
|
||||
#include "constants.h"
|
||||
#include "PoorManSiteView.h"
|
||||
#include "PoorManWindow.h"
|
||||
#include "PoorManApplication.h"
|
||||
|
||||
PoorManSiteView::PoorManSiteView(BRect rect, const char *name)
|
||||
: BView(rect, name, B_FOLLOW_ALL, B_WILL_DRAW)
|
||||
PoorManSiteView::PoorManSiteView(const char* name)
|
||||
: BView(name, B_WILL_DRAW, NULL)
|
||||
{
|
||||
PoorManWindow * win;
|
||||
PoorManWindow* win;
|
||||
win = ((PoorManApplication *)be_app)->GetPoorManWindow();
|
||||
|
||||
SetViewColor(BACKGROUND_COLOR);
|
||||
SetLayout(new BGroupLayout(B_VERTICAL));
|
||||
|
||||
// Web Site Location BBox
|
||||
BRect webLocationRect;
|
||||
webLocationRect = rect;
|
||||
webLocationRect.top -= 5.0;
|
||||
webLocationRect.left -= 5.0;
|
||||
webLocationRect.right -= 7.0;
|
||||
webLocationRect.bottom -= 98.0;
|
||||
|
||||
BBox * webSiteLocation = new BBox(webLocationRect, "Web Location");
|
||||
BBox* webSiteLocation = new BBox("Web Location");
|
||||
webSiteLocation->SetLabel(STR_BBX_LOCATION);
|
||||
AddChild(webSiteLocation);
|
||||
|
||||
// Web Site Options BBox
|
||||
BRect webOptionsRect;
|
||||
webOptionsRect = webLocationRect;
|
||||
webOptionsRect.top = webOptionsRect.bottom + 10.0;
|
||||
webOptionsRect.bottom = webOptionsRect.top + 80.0;
|
||||
|
||||
BBox * webSiteOptions = new BBox(webOptionsRect, "Web Options");
|
||||
BBox* webSiteOptions = new BBox("Web Options");
|
||||
webSiteOptions->SetLabel(STR_BBX_OPTIONS);
|
||||
AddChild(webSiteOptions);
|
||||
|
||||
// Send Directory List if No Index
|
||||
float left = 10.0;
|
||||
float top = 20.0;
|
||||
float box_size = 13.0;
|
||||
BRect sendDirRect(left, top, webOptionsRect.Width() - 5.0, top + box_size);
|
||||
sendDir = new BCheckBox(sendDirRect, "Send Dir", STR_CBX_DIR_LIST_LABEL, new BMessage(MSG_PREF_SITE_CBX_INDEX));
|
||||
fSendDir = new BCheckBox("Send Dir", STR_CBX_DIR_LIST_LABEL,
|
||||
new BMessage(MSG_PREF_SITE_CBX_INDEX));
|
||||
// set the checkbox to the value the program has
|
||||
SetSendDirValue(win->DirListFlag());
|
||||
webSiteOptions->AddChild(sendDir);
|
||||
|
||||
|
||||
// Finish the Web Site Location Section
|
||||
BRect webSiteLocationRect;
|
||||
webSiteLocationRect = webLocationRect;
|
||||
webSiteLocationRect.InsetBy(10.0, 7.0);
|
||||
webSiteLocationRect.top += 13.0;
|
||||
webSiteLocationRect.bottom = webSiteLocationRect.top + 19.0;
|
||||
|
||||
// Web Directory Text Control
|
||||
webDir = new BTextControl(webSiteLocationRect, "Web Dir",
|
||||
STR_TXT_DIRECTORY, NULL, NULL);
|
||||
webDir->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
|
||||
webDir->SetDivider(80.0);
|
||||
fWebDir = new BTextControl("Web Dir", STR_TXT_DIRECTORY, NULL);
|
||||
SetWebDir(win->WebDir());
|
||||
webSiteLocation->AddChild(webDir);
|
||||
|
||||
// Select Web Directory Button
|
||||
BRect selectWebDirRect;
|
||||
|
||||
selectWebDirRect.top = webSiteLocationRect.bottom + 5.0;
|
||||
selectWebDirRect.right = webSiteLocationRect.right + 2.0;
|
||||
selectWebDirRect.left = selectWebDirRect.right
|
||||
- webSiteLocation->StringWidth("Select Web Dir") - 24.0;
|
||||
selectWebDirRect.bottom = selectWebDirRect.top + 19.0;
|
||||
|
||||
selectWebDir = new BButton(selectWebDirRect, "Select Web Dir",
|
||||
STR_BTN_DIRECTORY, new BMessage(MSG_PREF_SITE_BTN_SELECT));
|
||||
webSiteLocation->AddChild(selectWebDir);
|
||||
fSelectWebDir = new BButton("Select Web Dir", STR_BTN_DIRECTORY,
|
||||
new BMessage(MSG_PREF_SITE_BTN_SELECT));
|
||||
|
||||
// Index File Name Text Control
|
||||
//webDirRect.InsetBy(10.0, 7.0);
|
||||
webSiteLocationRect.top += 63.0;
|
||||
webSiteLocationRect.bottom = webSiteLocationRect.top + 19.0;
|
||||
|
||||
indexFileName = new BTextControl(webSiteLocationRect,
|
||||
"Index File Name", STR_TXT_INDEX, NULL, NULL);
|
||||
indexFileName->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
|
||||
indexFileName->SetDivider(80.0);
|
||||
fIndexFileName = new BTextControl("Index File Name", STR_TXT_INDEX, NULL);
|
||||
SetIndexFileName(win->IndexFileName());
|
||||
webSiteLocation->AddChild(indexFileName);
|
||||
|
||||
webSiteOptions->AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
|
||||
.Add(fSendDir)
|
||||
.AddGlue())
|
||||
.SetInsets(5, 5, 5, 5));
|
||||
|
||||
webSiteLocation->AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
||||
.Add(fWebDir)
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
|
||||
.AddGlue()
|
||||
.Add(fSelectWebDir))
|
||||
.Add(fIndexFileName)
|
||||
.SetInsets(5, 5, 5, 5));
|
||||
|
||||
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
||||
.Add(webSiteLocation)
|
||||
.Add(webSiteOptions)
|
||||
.SetInsets(5, 5, 5, 5));
|
||||
}
|
||||
|
@ -14,26 +14,34 @@
|
||||
#include <CheckBox.h>
|
||||
|
||||
|
||||
class PoorManSiteView: public BView
|
||||
{
|
||||
class PoorManSiteView: public BView {
|
||||
public:
|
||||
PoorManSiteView(BRect, const char *name);
|
||||
void SetSendDirValue(bool state) {if (state) sendDir->SetValue(B_CONTROL_ON);
|
||||
else sendDir->SetValue(B_CONTROL_OFF); }
|
||||
bool SendDirValue() { return (sendDir->Value() == B_CONTROL_ON) ? true : false; }
|
||||
const char * IndexFileName() { return indexFileName->Text(); }
|
||||
void SetIndexFileName(const char * name) { indexFileName->SetText(name); }
|
||||
const char * WebDir() { return webDir->Text(); }
|
||||
void SetWebDir(const char * dir) { webDir->SetText(dir); }
|
||||
PoorManSiteView(const char *name);
|
||||
|
||||
void SetSendDirValue(bool state)
|
||||
{ if (state) fSendDir->SetValue(B_CONTROL_ON);
|
||||
else fSendDir->SetValue(B_CONTROL_OFF); }
|
||||
bool SendDirValue()
|
||||
{ return (fSendDir->Value() == B_CONTROL_ON)
|
||||
? true : false; }
|
||||
const char* IndexFileName()
|
||||
{ return fIndexFileName->Text(); }
|
||||
void SetIndexFileName(const char* name)
|
||||
{ fIndexFileName->SetText(name); }
|
||||
const char* WebDir()
|
||||
{ return fWebDir->Text(); }
|
||||
void SetWebDir(const char* dir)
|
||||
{ fWebDir->SetText(dir); }
|
||||
|
||||
private:
|
||||
// Site Tab
|
||||
// Web Site Location
|
||||
BTextControl * webDir;
|
||||
BTextControl * indexFileName;
|
||||
BButton * selectWebDir;
|
||||
BTextControl* fWebDir;
|
||||
BTextControl* fIndexFileName;
|
||||
BButton* fSelectWebDir;
|
||||
|
||||
// Web Site Options
|
||||
BCheckBox * sendDir;
|
||||
BCheckBox* fSendDir;
|
||||
|
||||
};
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
#endif
|
||||
|
||||
PoorManView::PoorManView(BRect rect, const char *name)
|
||||
: BView(rect, name, B_FOLLOW_ALL, B_WILL_DRAW )
|
||||
: BView(rect, name, B_FOLLOW_ALL, B_WILL_DRAW)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -12,11 +12,11 @@
|
||||
#include <View.h>
|
||||
#endif
|
||||
|
||||
class PoorManView: public BView
|
||||
{
|
||||
class PoorManView: public BView {
|
||||
public:
|
||||
PoorManView(BRect, const char *name);
|
||||
virtual void AttachedToWindow();
|
||||
PoorManView(BRect, const char *name);
|
||||
|
||||
virtual void AttachedToWindow();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include <Directory.h>
|
||||
#include <File.h>
|
||||
#include <FindDirectory.h>
|
||||
#include <GroupLayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
#include <Menu.h>
|
||||
#include <MenuBar.h>
|
||||
@ -43,182 +44,111 @@
|
||||
|
||||
|
||||
PoorManWindow::PoorManWindow(BRect frame)
|
||||
: BWindow(frame, STR_APP_NAME, B_TITLED_WINDOW, 0),
|
||||
status(false), hits(0), prefWindow(NULL), fLogFile(NULL), fServer(NULL)
|
||||
:
|
||||
BWindow(frame, STR_APP_NAME, B_TITLED_WINDOW, 0),
|
||||
fStatus(false),
|
||||
fHits(0),
|
||||
fPrefWindow(NULL),
|
||||
fLogFile(NULL),
|
||||
fServer(NULL)
|
||||
{
|
||||
//preferences init
|
||||
web_directory.SetTo(STR_DEFAULT_WEB_DIRECTORY);
|
||||
index_file_name.SetTo("index.html");
|
||||
dir_list_flag = false;
|
||||
fWebDirectory.SetTo(STR_DEFAULT_WEB_DIRECTORY);
|
||||
fIndexFileName.SetTo("index.html");
|
||||
fDirListFlag = false;
|
||||
|
||||
log_console_flag = true;
|
||||
log_file_flag = false;
|
||||
log_path.SetTo("");
|
||||
fLogConsoleFlag = true;
|
||||
fLogFileFlag = false;
|
||||
fLogPath.SetTo("");
|
||||
|
||||
max_connections = (int16)32;
|
||||
fMaxConnections = (int16)32;
|
||||
|
||||
is_zoomed = true;
|
||||
last_width = 318.0f;
|
||||
last_height = 320.0f;
|
||||
this->frame = frame;
|
||||
setwindow_frame.Set(112.0f, 60.0f, 492.0f, 340.0f);
|
||||
fIsZoomed = true;
|
||||
fLastWidth = 318.0f;
|
||||
fLastHeight = 320.0f;
|
||||
this->fFrame = frame;
|
||||
fSetwindowFrame.Set(112.0f, 60.0f, 492.0f, 340.0f);
|
||||
|
||||
// PoorMan Window
|
||||
SetSizeLimits(318, 1600, 53, 1200);
|
||||
// limit the size of the size of the window
|
||||
|
||||
//SetZoomLimits(1024, 768);
|
||||
|
||||
//frame.Set(30.0f, 30.0f, 355.0f, 185.0f);
|
||||
frame.OffsetTo(B_ORIGIN);
|
||||
frame = Bounds();
|
||||
frame.top += 19.0;
|
||||
|
||||
mainView = new PoorManView(frame, STR_APP_NAME);
|
||||
mainView->SetViewColor(216,216,216,255);
|
||||
|
||||
mainView->SetFont(be_bold_font);
|
||||
mainView->SetFontSize(12);
|
||||
AddChild(mainView);
|
||||
|
||||
// BBox tests
|
||||
BRect br;
|
||||
br = mainView->Bounds();
|
||||
br.top = 1.0;
|
||||
|
||||
BBox * bb = new BBox(br, "Background", B_FOLLOW_ALL_SIDES,
|
||||
B_WILL_DRAW | B_FRAME_EVENTS | B_FULL_UPDATE_ON_RESIZE);
|
||||
bb->SetHighColor(WHITE);
|
||||
bb->SetLowColor(GRAY);
|
||||
bb->SetBorder(B_PLAIN_BORDER);
|
||||
mainView->AddChild(bb);
|
||||
SetLayout(new BGroupLayout(B_VERTICAL));
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
// Three Labels
|
||||
|
||||
// Status String
|
||||
BRect statusRect;
|
||||
statusRect = Bounds();
|
||||
statusRect.left += 5;
|
||||
statusRect.top += 3;
|
||||
statusRect.bottom = statusRect.top + 15;
|
||||
statusRect.right = statusRect.left + 100; // make the width wide enough for the string to display
|
||||
|
||||
statusView = new BStringView(statusRect, "Status View",
|
||||
B_TRANSLATE("Status: Stopped"));
|
||||
bb->AddChild(statusView);
|
||||
fStatusView = new BStringView("Status View", B_TRANSLATE("Status: Stopped"));
|
||||
|
||||
// Directory String
|
||||
BRect dirRect;
|
||||
dirRect = Bounds();
|
||||
dirRect.top = statusRect.bottom - 1;
|
||||
dirRect.bottom = dirRect.top + 15;
|
||||
dirRect.left = statusRect.left;
|
||||
dirRect.right -= 5;
|
||||
|
||||
dirView = new BStringView(dirRect, "Dir View",
|
||||
B_TRANSLATE("Directory: (none)"), B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP);
|
||||
bb->AddChild(dirView);
|
||||
fDirView = new BStringView("Dir View", B_TRANSLATE("Directory: (none)"));
|
||||
|
||||
// Hits String
|
||||
BRect hitsRect;
|
||||
hitsRect = bb->Bounds();
|
||||
hitsRect.InsetBy(5.0f, 5.0f);
|
||||
hitsRect.top = statusRect.top;
|
||||
hitsRect.bottom = statusRect.bottom;
|
||||
hitsRect.left = statusRect.right + 20;
|
||||
|
||||
hitsView = new BStringView(hitsRect, "Hit View", B_TRANSLATE("Hits: 0"),
|
||||
B_FOLLOW_RIGHT | B_FOLLOW_TOP);
|
||||
hitsView->SetAlignment(B_ALIGN_RIGHT);
|
||||
bb->AddChild(hitsView);
|
||||
fHitsView = new BStringView("Hit View", B_TRANSLATE("Hits: 0"));
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
// Logging View
|
||||
|
||||
// logRect
|
||||
BRect logRect = bb->Bounds();//(5.0, 36.0, 306.0, 131.0);
|
||||
logRect.InsetBy(5, 5);
|
||||
logRect.top = 36.0f;
|
||||
logRect.right -= B_V_SCROLL_BAR_WIDTH;
|
||||
|
||||
// textRect
|
||||
BRect textRect; //(1.0, 1.0, 175.0, 75.0);
|
||||
textRect = logRect;
|
||||
textRect.top = 0.0;
|
||||
textRect.left = 2.0;
|
||||
textRect.right = logRect.right - logRect.left - 2.0;
|
||||
textRect.bottom = logRect.bottom - logRect.top;
|
||||
|
||||
fLogViewFont = new BFont(be_plain_font);
|
||||
fLogViewFont->SetSize(11.0);
|
||||
fLoggingView = new BTextView(STR_TXT_VIEW, B_WILL_DRAW );
|
||||
|
||||
loggingView = new BTextView(logRect, STR_TXT_VIEW, textRect,
|
||||
fLogViewFont, NULL, B_FOLLOW_ALL_SIDES, B_WILL_DRAW );
|
||||
|
||||
loggingView->MakeEditable(false); // user cannot change the text
|
||||
loggingView->MakeSelectable(true);
|
||||
loggingView->SetViewColor(WHITE);
|
||||
loggingView->SetStylable(true);
|
||||
fLoggingView->MakeEditable(false); // user cannot change the text
|
||||
fLoggingView->MakeSelectable(true);
|
||||
fLoggingView->SetViewColor(WHITE);
|
||||
fLoggingView->SetStylable(true);
|
||||
|
||||
// create the scroll view
|
||||
scrollView = new BScrollView("Scroll View", loggingView, B_FOLLOW_ALL_SIDES,
|
||||
B_WILL_DRAW | B_FRAME_EVENTS,
|
||||
fScrollView = new BScrollView("Scroll View", fLoggingView,
|
||||
B_WILL_DRAW | B_FRAME_EVENTS | B_FOLLOW_ALL_SIDES,
|
||||
// Make sure articles on border do not occur when resizing
|
||||
false, true);
|
||||
bb->AddChild(scrollView);
|
||||
loggingView->MakeFocus(true);
|
||||
fLoggingView->MakeFocus(true);
|
||||
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
// menu bar
|
||||
BRect menuRect;
|
||||
menuRect = Bounds();
|
||||
menuRect.bottom = 18.0f;
|
||||
|
||||
FileMenuBar = new BMenuBar(menuRect, "File Menu Bar");
|
||||
fFileMenuBar = new BMenuBar("File Menu Bar");
|
||||
|
||||
// menus
|
||||
FileMenu = BuildFileMenu();
|
||||
if (FileMenu)
|
||||
FileMenuBar->AddItem(FileMenu);
|
||||
fFileMenu = BuildFileMenu();
|
||||
if (fFileMenu)
|
||||
fFileMenuBar->AddItem(fFileMenu);
|
||||
|
||||
EditMenu = BuildEditMenu();
|
||||
if (EditMenu)
|
||||
FileMenuBar->AddItem(EditMenu);
|
||||
fEditMenu = BuildEditMenu();
|
||||
if (fEditMenu)
|
||||
fFileMenuBar->AddItem(fEditMenu);
|
||||
|
||||
ControlsMenu = BuildControlsMenu();
|
||||
if (ControlsMenu)
|
||||
FileMenuBar->AddItem(ControlsMenu);
|
||||
fControlsMenu = BuildControlsMenu();
|
||||
if (fControlsMenu)
|
||||
fFileMenuBar->AddItem(fControlsMenu);
|
||||
|
||||
// File Panels
|
||||
BWindow* change_title;
|
||||
|
||||
BMessenger messenger(this);
|
||||
saveConsoleFilePanel = new BFilePanel(
|
||||
B_SAVE_PANEL,
|
||||
&messenger,
|
||||
NULL,
|
||||
B_FILE_NODE,
|
||||
false,
|
||||
fSaveConsoleFilePanel = new BFilePanel(B_SAVE_PANEL, new BMessenger(this),
|
||||
NULL, B_FILE_NODE, false,
|
||||
new BMessage(MSG_FILE_PANEL_SAVE_CONSOLE));
|
||||
|
||||
change_title = saveConsoleFilePanel->Window();
|
||||
change_title = fSaveConsoleFilePanel->Window();
|
||||
change_title->SetTitle(STR_FILEPANEL_SAVE_CONSOLE);
|
||||
|
||||
saveConsoleSelectionFilePanel = new BFilePanel(
|
||||
B_SAVE_PANEL,
|
||||
&messenger,
|
||||
NULL,
|
||||
B_FILE_NODE,
|
||||
false,
|
||||
fSaveConsoleSelectionFilePanel = new BFilePanel(B_SAVE_PANEL,
|
||||
new BMessenger(this), NULL, B_FILE_NODE, false,
|
||||
new BMessage(MSG_FILE_PANEL_SAVE_CONSOLE_SELECTION));
|
||||
|
||||
change_title = saveConsoleSelectionFilePanel->Window();
|
||||
change_title = fSaveConsoleSelectionFilePanel->Window();
|
||||
change_title->SetTitle(STR_FILEPANEL_SAVE_CONSOLE_SELECTION);
|
||||
|
||||
|
||||
AddChild(FileMenuBar);
|
||||
AddChild(BGroupLayoutBuilder(B_VERTICAL)
|
||||
.Add(fFileMenuBar)
|
||||
.Add(BGroupLayoutBuilder(B_VERTICAL, 5)
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL)
|
||||
.Add(fStatusView)
|
||||
.AddGlue()
|
||||
.Add(fHitsView))
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL)
|
||||
.Add(fDirView)
|
||||
.AddGlue())
|
||||
.Add(fScrollView)
|
||||
.SetInsets(10, 10, 10, 10)));
|
||||
|
||||
pthread_rwlock_init(&fLogFileLock, NULL);
|
||||
}
|
||||
@ -227,7 +157,6 @@ PoorManWindow::PoorManWindow(BRect frame)
|
||||
PoorManWindow::~PoorManWindow()
|
||||
{
|
||||
delete fServer;
|
||||
delete fLogViewFont;
|
||||
delete fLogFile;
|
||||
pthread_rwlock_destroy(&fLogFileLock);
|
||||
}
|
||||
@ -237,129 +166,127 @@ void
|
||||
PoorManWindow::MessageReceived(BMessage* message)
|
||||
{
|
||||
switch (message->what) {
|
||||
case MSG_MENU_FILE_SAVE_AS:
|
||||
saveConsoleFilePanel->Show();
|
||||
break;
|
||||
case MSG_FILE_PANEL_SAVE_CONSOLE:
|
||||
printf("FilePanel: Save console\n");
|
||||
SaveConsole(message, false);
|
||||
break;
|
||||
case MSG_MENU_FILE_SAVE_SELECTION:
|
||||
saveConsoleSelectionFilePanel->Show();
|
||||
break;
|
||||
case MSG_FILE_PANEL_SAVE_CONSOLE_SELECTION:
|
||||
printf("FilePanel: Save console selection\n");
|
||||
SaveConsole(message, true);
|
||||
break;
|
||||
case MSG_FILE_PANEL_SELECT_WEB_DIR:
|
||||
prefWindow->MessageReceived(message);
|
||||
break;
|
||||
case MSG_MENU_EDIT_PREF:
|
||||
prefWindow = new PoorManPreferencesWindow(
|
||||
setwindow_frame,
|
||||
STR_WIN_NAME_PREF);
|
||||
prefWindow->Show();
|
||||
break;
|
||||
case MSG_MENU_CTRL_RUN:
|
||||
if (status)
|
||||
StopServer();
|
||||
else
|
||||
StartServer();
|
||||
break;
|
||||
case MSG_MENU_CTRL_CLEAR_HIT:
|
||||
SetHits(0);
|
||||
//UpdateHitsLabel();
|
||||
break;
|
||||
case MSG_MENU_CTRL_CLEAR_CONSOLE:
|
||||
loggingView->SelectAll();
|
||||
loggingView->Delete();
|
||||
break;
|
||||
case MSG_MENU_CTRL_CLEAR_LOG:
|
||||
FILE * f;
|
||||
f = fopen(log_path.String(), "w");
|
||||
fclose(f);
|
||||
break;
|
||||
case MSG_LOG: {
|
||||
if (!log_console_flag && !log_file_flag)
|
||||
case MSG_MENU_FILE_SAVE_AS:
|
||||
fSaveConsoleFilePanel->Show();
|
||||
break;
|
||||
case MSG_FILE_PANEL_SAVE_CONSOLE:
|
||||
printf("FilePanel: Save console\n");
|
||||
SaveConsole(message, false);
|
||||
break;
|
||||
case MSG_MENU_FILE_SAVE_SELECTION:
|
||||
fSaveConsoleSelectionFilePanel->Show();
|
||||
break;
|
||||
case MSG_FILE_PANEL_SAVE_CONSOLE_SELECTION:
|
||||
printf("FilePanel: Save console selection\n");
|
||||
SaveConsole(message, true);
|
||||
break;
|
||||
case MSG_FILE_PANEL_SELECT_WEB_DIR:
|
||||
fPrefWindow->MessageReceived(message);
|
||||
break;
|
||||
case MSG_MENU_EDIT_PREF:
|
||||
fPrefWindow = new PoorManPreferencesWindow(fSetwindowFrame,
|
||||
STR_WIN_NAME_PREF);
|
||||
fPrefWindow->Show();
|
||||
break;
|
||||
case MSG_MENU_CTRL_RUN:
|
||||
if (fStatus)
|
||||
StopServer();
|
||||
else
|
||||
StartServer();
|
||||
break;
|
||||
case MSG_MENU_CTRL_CLEAR_HIT:
|
||||
SetHits(0);
|
||||
//UpdateHitsLabel();
|
||||
break;
|
||||
case MSG_MENU_CTRL_CLEAR_CONSOLE:
|
||||
fLoggingView->SelectAll();
|
||||
fLoggingView->Delete();
|
||||
break;
|
||||
case MSG_MENU_CTRL_CLEAR_LOG:
|
||||
FILE* f;
|
||||
f = fopen(fLogPath.String(), "w");
|
||||
fclose(f);
|
||||
break;
|
||||
case MSG_LOG: {
|
||||
if (!fLogConsoleFlag && !fLogFileFlag)
|
||||
break;
|
||||
|
||||
time_t time;
|
||||
in_addr_t address;
|
||||
rgb_color color;
|
||||
const void* pointer;
|
||||
ssize_t size;
|
||||
const char* msg;
|
||||
BString line;
|
||||
time_t time;
|
||||
in_addr_t address;
|
||||
rgb_color color;
|
||||
const void* pointer;
|
||||
ssize_t size;
|
||||
const char* msg;
|
||||
BString line;
|
||||
|
||||
if (message->FindString("cstring", &msg) != B_OK)
|
||||
break;
|
||||
if (message->FindData("time_t", B_TIME_TYPE, &pointer, &size) != B_OK)
|
||||
time = -1;
|
||||
else
|
||||
time = *static_cast<const time_t*>(pointer);
|
||||
if (message->FindString("cstring", &msg) != B_OK)
|
||||
break;
|
||||
if (message->FindData("time_t", B_TIME_TYPE, &pointer, &size) != B_OK)
|
||||
time = -1;
|
||||
else
|
||||
time = *static_cast<const time_t*>(pointer);
|
||||
|
||||
if (message->FindData("in_addr_t", B_ANY_TYPE, &pointer, &size) != B_OK)
|
||||
address = INADDR_NONE;
|
||||
else
|
||||
address = *static_cast<const in_addr_t*>(pointer);
|
||||
if (message->FindData("in_addr_t", B_ANY_TYPE, &pointer, &size) != B_OK)
|
||||
address = INADDR_NONE;
|
||||
else
|
||||
address = *static_cast<const in_addr_t*>(pointer);
|
||||
|
||||
if (message->FindData("rgb_color", B_RGB_COLOR_TYPE, &pointer, &size) != B_OK)
|
||||
color = BLACK;
|
||||
else
|
||||
color = *static_cast<const rgb_color*>(pointer);
|
||||
if (message->FindData("rgb_color", B_RGB_COLOR_TYPE, &pointer, &size) != B_OK)
|
||||
color = BLACK;
|
||||
else
|
||||
color = *static_cast<const rgb_color*>(pointer);
|
||||
|
||||
if (time != -1) {
|
||||
BString timeString;
|
||||
if (BLocale::Default()->FormatDateTime(&timeString, time,
|
||||
DATE_FORMAT, TIME_FORMAT) == B_OK) {
|
||||
line << '[' << timeString << "]: ";
|
||||
}
|
||||
}
|
||||
|
||||
if (address != INADDR_NONE) {
|
||||
char addr[INET_ADDRSTRLEN];
|
||||
struct in_addr sin_addr;
|
||||
sin_addr.s_addr = address;
|
||||
if (inet_ntop(AF_INET, &sin_addr, addr, sizeof(addr)) != NULL) {
|
||||
addr[strlen(addr)] = '\0';
|
||||
line << '(' << addr << ") ";
|
||||
}
|
||||
}
|
||||
|
||||
line << msg;
|
||||
|
||||
text_run run;
|
||||
text_run_array runs;
|
||||
|
||||
run.offset = 0;
|
||||
run.font = *fLogViewFont;
|
||||
run.color = color;
|
||||
|
||||
runs.count = 1;
|
||||
runs.runs[0] = run;
|
||||
|
||||
if (Lock()) {
|
||||
if (log_console_flag) {
|
||||
loggingView->Insert(loggingView->TextLength(),
|
||||
line.String(), line.Length(), &runs);
|
||||
loggingView->ScrollToOffset(loggingView->TextLength());
|
||||
}
|
||||
|
||||
if (log_file_flag) {
|
||||
if (pthread_rwlock_rdlock(&fLogFileLock) == 0) {
|
||||
fLogFile->Write(line.String(), line.Length());
|
||||
pthread_rwlock_unlock(&fLogFileLock);
|
||||
if (time != -1) {
|
||||
BString timeString;
|
||||
if (BLocale::Default()->FormatDateTime(&timeString, time,
|
||||
DATE_FORMAT, TIME_FORMAT) == B_OK) {
|
||||
line << '[' << timeString << "]: ";
|
||||
}
|
||||
}
|
||||
|
||||
Unlock();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
BWindow::MessageReceived(message);
|
||||
break;
|
||||
if (address != INADDR_NONE) {
|
||||
char addr[INET_ADDRSTRLEN];
|
||||
struct in_addr sin_addr;
|
||||
sin_addr.s_addr = address;
|
||||
if (inet_ntop(AF_INET, &sin_addr, addr, sizeof(addr)) != NULL) {
|
||||
addr[strlen(addr)] = '\0';
|
||||
line << '(' << addr << ") ";
|
||||
}
|
||||
}
|
||||
|
||||
line << msg;
|
||||
|
||||
text_run run;
|
||||
text_run_array runs;
|
||||
|
||||
run.offset = 0;
|
||||
run.color = color;
|
||||
|
||||
runs.count = 1;
|
||||
runs.runs[0] = run;
|
||||
|
||||
if (Lock()) {
|
||||
if (fLogConsoleFlag) {
|
||||
fLoggingView->Insert(fLoggingView->TextLength(),
|
||||
line.String(), line.Length(), &runs);
|
||||
fLoggingView->ScrollToOffset(fLoggingView->TextLength());
|
||||
}
|
||||
|
||||
if (fLogFileFlag) {
|
||||
if (pthread_rwlock_rdlock(&fLogFileLock) == 0) {
|
||||
fLogFile->Write(line.String(), line.Length());
|
||||
pthread_rwlock_unlock(&fLogFileLock);
|
||||
}
|
||||
}
|
||||
|
||||
Unlock();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
BWindow::MessageReceived(message);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -367,17 +294,17 @@ PoorManWindow::MessageReceived(BMessage* message)
|
||||
void
|
||||
PoorManWindow::FrameMoved(BPoint origin)
|
||||
{
|
||||
frame.left = origin.x;
|
||||
frame.top = origin.y;
|
||||
fFrame.left = origin.x;
|
||||
fFrame.top = origin.y;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
PoorManWindow::FrameResized(float width, float height)
|
||||
{
|
||||
if (is_zoomed) {
|
||||
last_width = width;
|
||||
last_height = height;
|
||||
if (fIsZoomed) {
|
||||
fLastWidth = width;
|
||||
fLastHeight = height;
|
||||
}
|
||||
}
|
||||
|
||||
@ -385,7 +312,7 @@ PoorManWindow::FrameResized(float width, float height)
|
||||
bool
|
||||
PoorManWindow::QuitRequested()
|
||||
{
|
||||
if (status) {
|
||||
if (fStatus) {
|
||||
time_t now = time(NULL);
|
||||
BString timeString;
|
||||
BLocale::Default()->FormatDateTime(&timeString, now,
|
||||
@ -395,21 +322,21 @@ PoorManWindow::QuitRequested()
|
||||
line << "[" << timeString << "]: " << B_TRANSLATE("Shutting down.")
|
||||
<< "\n";
|
||||
|
||||
if (log_console_flag) {
|
||||
loggingView->Insert(loggingView->TextLength(),
|
||||
line, line.Length());
|
||||
loggingView->ScrollToOffset(loggingView->TextLength());
|
||||
if (fLogConsoleFlag) {
|
||||
fLoggingView->Insert(fLoggingView->TextLength(),
|
||||
line, line.Length());
|
||||
fLoggingView->ScrollToOffset(fLoggingView->TextLength());
|
||||
}
|
||||
|
||||
if (log_file_flag) {
|
||||
if (fLogFileFlag) {
|
||||
if (pthread_rwlock_rdlock(&fLogFileLock) == 0) {
|
||||
fLogFile->Write(line, line.Length());
|
||||
pthread_rwlock_unlock(&fLogFileLock);
|
||||
fLogFile->Write(line, line.Length());
|
||||
pthread_rwlock_unlock(&fLogFileLock);
|
||||
}
|
||||
}
|
||||
|
||||
fServer->Stop();
|
||||
status = false;
|
||||
fStatus = false;
|
||||
UpdateStatusLabelAndMenuItem();
|
||||
}
|
||||
|
||||
@ -422,14 +349,14 @@ PoorManWindow::QuitRequested()
|
||||
void
|
||||
PoorManWindow::Zoom(BPoint origin, float width, float height)
|
||||
{
|
||||
if (is_zoomed) {
|
||||
if (fIsZoomed) {
|
||||
// Change to the Minimal size
|
||||
is_zoomed = false;
|
||||
fIsZoomed = false;
|
||||
ResizeTo(318, 53);
|
||||
} else {
|
||||
// Change to the Zoomed size
|
||||
is_zoomed = true;
|
||||
ResizeTo(last_width, last_height);
|
||||
fIsZoomed = true;
|
||||
ResizeTo(fLastWidth, fLastHeight);
|
||||
}
|
||||
}
|
||||
|
||||
@ -437,7 +364,7 @@ PoorManWindow::Zoom(BPoint origin, float width, float height)
|
||||
void
|
||||
PoorManWindow::SetHits(uint32 num)
|
||||
{
|
||||
hits = num;
|
||||
fHits = num;
|
||||
UpdateHitsLabel();
|
||||
}
|
||||
|
||||
@ -445,10 +372,10 @@ PoorManWindow::SetHits(uint32 num)
|
||||
// Private: Methods ------------------------------------------
|
||||
|
||||
|
||||
BMenu *
|
||||
BMenu*
|
||||
PoorManWindow::BuildFileMenu() const
|
||||
{
|
||||
BMenu * ptrFileMenu = new BMenu(STR_MNU_FILE);
|
||||
BMenu* ptrFileMenu = new BMenu(STR_MNU_FILE);
|
||||
|
||||
ptrFileMenu->AddItem(new BMenuItem(STR_MNU_FILE_SAVE_AS,
|
||||
new BMessage(MSG_MENU_FILE_SAVE_AS), CMD_FILE_SAVE_AS));
|
||||
@ -465,28 +392,28 @@ PoorManWindow::BuildFileMenu() const
|
||||
}
|
||||
|
||||
|
||||
BMenu *
|
||||
BMenu*
|
||||
PoorManWindow::BuildEditMenu() const
|
||||
{
|
||||
BMenu * ptrEditMenu = new BMenu(STR_MNU_EDIT);
|
||||
BMenu* ptrEditMenu = new BMenu(STR_MNU_EDIT);
|
||||
|
||||
BMenuItem * CopyMenuItem = new BMenuItem(STR_MNU_EDIT_COPY,
|
||||
BMenuItem* CopyMenuItem = new BMenuItem(STR_MNU_EDIT_COPY,
|
||||
new BMessage(B_COPY), CMD_EDIT_COPY);
|
||||
|
||||
ptrEditMenu->AddItem(CopyMenuItem);
|
||||
CopyMenuItem->SetTarget(loggingView, NULL);
|
||||
CopyMenuItem->SetTarget(fLoggingView, NULL);
|
||||
|
||||
ptrEditMenu->AddSeparatorItem();
|
||||
|
||||
BMenuItem * SelectAllMenuItem = new BMenuItem(STR_MNU_EDIT_SELECT_ALL,
|
||||
BMenuItem* SelectAllMenuItem = new BMenuItem(STR_MNU_EDIT_SELECT_ALL,
|
||||
new BMessage(B_SELECT_ALL), CMD_EDIT_SELECT_ALL);
|
||||
|
||||
ptrEditMenu->AddItem(SelectAllMenuItem);
|
||||
SelectAllMenuItem->SetTarget(loggingView, NULL);
|
||||
SelectAllMenuItem->SetTarget(fLoggingView, NULL);
|
||||
|
||||
ptrEditMenu->AddSeparatorItem();
|
||||
|
||||
BMenuItem * PrefMenuItem = new BMenuItem(STR_MNU_EDIT_PREF,
|
||||
BMenuItem* PrefMenuItem = new BMenuItem(STR_MNU_EDIT_PREF,
|
||||
new BMessage(MSG_MENU_EDIT_PREF));
|
||||
ptrEditMenu->AddItem(PrefMenuItem);
|
||||
|
||||
@ -494,27 +421,27 @@ PoorManWindow::BuildEditMenu() const
|
||||
}
|
||||
|
||||
|
||||
BMenu *
|
||||
BMenu*
|
||||
PoorManWindow::BuildControlsMenu() const
|
||||
{
|
||||
BMenu * ptrControlMenu = new BMenu(STR_MNU_CTRL);
|
||||
BMenu* ptrControlMenu = new BMenu(STR_MNU_CTRL);
|
||||
|
||||
BMenuItem * RunServerMenuItem = new BMenuItem(STR_MNU_CTRL_RUN_SERVER,
|
||||
BMenuItem* RunServerMenuItem = new BMenuItem(STR_MNU_CTRL_RUN_SERVER,
|
||||
new BMessage(MSG_MENU_CTRL_RUN));
|
||||
RunServerMenuItem->SetMarked(false);
|
||||
ptrControlMenu->AddItem(RunServerMenuItem);
|
||||
|
||||
BMenuItem * ClearHitCounterMenuItem = new BMenuItem(STR_MNU_CTRL_CLEAR_HIT_COUNTER,
|
||||
BMenuItem* ClearHitCounterMenuItem = new BMenuItem(STR_MNU_CTRL_CLEAR_HIT_COUNTER,
|
||||
new BMessage(MSG_MENU_CTRL_CLEAR_HIT));
|
||||
ptrControlMenu->AddItem(ClearHitCounterMenuItem);
|
||||
|
||||
ptrControlMenu->AddSeparatorItem();
|
||||
|
||||
BMenuItem * ClearConsoleLogMenuItem = new BMenuItem(STR_MNU_CTRL_CLEAR_CONSOLE,
|
||||
BMenuItem* ClearConsoleLogMenuItem = new BMenuItem(STR_MNU_CTRL_CLEAR_CONSOLE,
|
||||
new BMessage(MSG_MENU_CTRL_CLEAR_CONSOLE));
|
||||
ptrControlMenu->AddItem(ClearConsoleLogMenuItem);
|
||||
|
||||
BMenuItem * ClearLogFileMenuItem = new BMenuItem(STR_MNU_CTRL_CLEAR_LOG_FILE,
|
||||
BMenuItem* ClearLogFileMenuItem = new BMenuItem(STR_MNU_CTRL_CLEAR_LOG_FILE,
|
||||
new BMessage(MSG_MENU_CTRL_CLEAR_LOG));
|
||||
ptrControlMenu->AddItem(ClearLogFileMenuItem);
|
||||
|
||||
@ -523,13 +450,13 @@ PoorManWindow::BuildControlsMenu() const
|
||||
|
||||
|
||||
void
|
||||
PoorManWindow::SetDirLabel(const char * name)
|
||||
PoorManWindow::SetDirLabel(const char* name)
|
||||
{
|
||||
BString dirPath(B_TRANSLATE("Directory: "));
|
||||
dirPath.Append(name);
|
||||
|
||||
if (Lock()) {
|
||||
dirView->SetText(dirPath.String());
|
||||
fDirView->SetText(dirPath.String());
|
||||
Unlock();
|
||||
}
|
||||
}
|
||||
@ -539,11 +466,11 @@ void
|
||||
PoorManWindow::UpdateStatusLabelAndMenuItem()
|
||||
{
|
||||
if (Lock()) {
|
||||
if (status)
|
||||
statusView->SetText(B_TRANSLATE("Status: Running"));
|
||||
if (fStatus)
|
||||
fStatusView->SetText(B_TRANSLATE("Status: Running"));
|
||||
else
|
||||
statusView->SetText(B_TRANSLATE("Status: Stopped"));
|
||||
ControlsMenu->FindItem(STR_MNU_CTRL_RUN_SERVER)->SetMarked(status);
|
||||
fStatusView->SetText(B_TRANSLATE("Status: Stopped"));
|
||||
fControlsMenu->FindItem(STR_MNU_CTRL_RUN_SERVER)->SetMarked(fStatus);
|
||||
Unlock();
|
||||
}
|
||||
}
|
||||
@ -553,8 +480,8 @@ void
|
||||
PoorManWindow::UpdateHitsLabel()
|
||||
{
|
||||
if (Lock()) {
|
||||
sprintf(hitsLabel, B_TRANSLATE("Hits: %lu"), GetHits());
|
||||
hitsView->SetText(hitsLabel);
|
||||
sprintf(fHitsLabel, B_TRANSLATE("Hits: %lu"), GetHits());
|
||||
fHitsView->SetText(fHitsLabel);
|
||||
|
||||
Unlock();
|
||||
}
|
||||
@ -562,22 +489,25 @@ PoorManWindow::UpdateHitsLabel()
|
||||
|
||||
|
||||
status_t
|
||||
PoorManWindow::SaveConsole(BMessage * message, bool selection)
|
||||
PoorManWindow::SaveConsole(BMessage* message, bool selection)
|
||||
{
|
||||
entry_ref ref;
|
||||
const char * name;
|
||||
const char* name;
|
||||
BPath path;
|
||||
BEntry entry;
|
||||
status_t err = B_OK;
|
||||
FILE *f;
|
||||
FILE* f;
|
||||
|
||||
if ((err = message->FindRef("directory", &ref)) != B_OK)
|
||||
err = message->FindRef("directory", &ref);
|
||||
if (err != B_OK)
|
||||
return err;
|
||||
|
||||
if ((err = message->FindString("name", &name)) != B_OK)
|
||||
err = message->FindString("name", &name);
|
||||
if (err != B_OK)
|
||||
return err;
|
||||
|
||||
if ((err = entry.SetTo(&ref)) != B_OK)
|
||||
err = entry.SetTo(&ref);
|
||||
if (err != B_OK)
|
||||
return err;
|
||||
|
||||
entry.GetPath(&path);
|
||||
@ -588,20 +518,21 @@ PoorManWindow::SaveConsole(BMessage * message, bool selection)
|
||||
|
||||
if (!selection) {
|
||||
// write the data to the file
|
||||
err = fwrite(loggingView->Text(), 1, loggingView->TextLength(), f);
|
||||
err = fwrite(fLoggingView->Text(), 1, fLoggingView->TextLength(), f);
|
||||
} else {
|
||||
// find the selected text and write it to a file
|
||||
int32 start = 0, end = 0;
|
||||
loggingView->GetSelection(&start, &end);
|
||||
fLoggingView->GetSelection(&start, &end);
|
||||
|
||||
BString buffer;
|
||||
char * buffData = buffer.LockBuffer(end - start + 1);
|
||||
// copy the selected text from the TextView to the buffer
|
||||
loggingView->GetText(start, end - start, buffData);
|
||||
fLoggingView->GetText(start, end - start, buffData);
|
||||
buffer.UnlockBuffer(end - start + 1);
|
||||
|
||||
err = fwrite(buffer.String(), 1, end - start + 1, f);
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
|
||||
return err;
|
||||
@ -627,10 +558,10 @@ PoorManWindow::DefaultSettings()
|
||||
break;
|
||||
|
||||
case 1:
|
||||
prefWindow = new PoorManPreferencesWindow(
|
||||
setwindow_frame,
|
||||
fPrefWindow = new PoorManPreferencesWindow(
|
||||
fSetwindowFrame,
|
||||
STR_WIN_NAME_PREF);
|
||||
prefWindow->ShowWebDirFilePanel();
|
||||
fPrefWindow->ShowWebDirFilePanel();
|
||||
break;
|
||||
|
||||
case 2:
|
||||
@ -674,49 +605,49 @@ PoorManWindow::ReadSettings()
|
||||
return B_ERROR;
|
||||
|
||||
//site tab
|
||||
if (m.FindString("web_directory", &web_directory) != B_OK)
|
||||
web_directory.SetTo(STR_DEFAULT_WEB_DIRECTORY);
|
||||
if (m.FindString("index_file_name", &index_file_name) != B_OK)
|
||||
index_file_name.SetTo("index.html");
|
||||
if (m.FindBool("dir_list_flag", &dir_list_flag) != B_OK)
|
||||
dir_list_flag = false;
|
||||
if (m.FindString("fWebDirectory", &fWebDirectory) != B_OK)
|
||||
fWebDirectory.SetTo(STR_DEFAULT_WEB_DIRECTORY);
|
||||
if (m.FindString("fIndexFileName", &fIndexFileName) != B_OK)
|
||||
fIndexFileName.SetTo("index.html");
|
||||
if (m.FindBool("fDirListFlag", &fDirListFlag) != B_OK)
|
||||
fDirListFlag = false;
|
||||
|
||||
//logging tab
|
||||
if (m.FindBool("log_console_flag", &log_console_flag) != B_OK)
|
||||
log_console_flag = true;
|
||||
if (m.FindBool("log_file_flag", &log_file_flag) != B_OK)
|
||||
log_file_flag = false;
|
||||
if (m.FindString("log_path", &log_path) != B_OK)
|
||||
log_path.SetTo("");
|
||||
if (m.FindBool("fLogConsoleFlag", &fLogConsoleFlag) != B_OK)
|
||||
fLogConsoleFlag = true;
|
||||
if (m.FindBool("fLogFileFlag", &fLogFileFlag) != B_OK)
|
||||
fLogFileFlag = false;
|
||||
if (m.FindString("fLogPath", &fLogPath) != B_OK)
|
||||
fLogPath.SetTo("");
|
||||
|
||||
//advance tab
|
||||
if (m.FindInt16("max_connections", &max_connections) != B_OK)
|
||||
max_connections = (int16)32;
|
||||
if (m.FindInt16("fMaxConnections", &fMaxConnections) != B_OK)
|
||||
fMaxConnections = (int16)32;
|
||||
|
||||
//windows' position and size
|
||||
if (m.FindRect("frame", &frame) != B_OK)
|
||||
frame.Set(82.0f, 30.0f, 400.0f, 350.0f);
|
||||
if (m.FindRect("setwindow_frame", &setwindow_frame) != B_OK)
|
||||
setwindow_frame.Set(112.0f, 60.0f, 492.0f, 340.0f);
|
||||
if (m.FindBool("is_zoomed", &is_zoomed) != B_OK)
|
||||
is_zoomed = true;
|
||||
if (m.FindFloat("last_width", &last_width) != B_OK)
|
||||
last_width = 318.0f;
|
||||
if (m.FindFloat("last_height", &last_height) != B_OK)
|
||||
last_height = 320.0f;
|
||||
if (m.FindRect("frame", &fFrame) != B_OK)
|
||||
fFrame.Set(82.0f, 30.0f, 400.0f, 350.0f);
|
||||
if (m.FindRect("fSetwindowFrame", &fSetwindowFrame) != B_OK)
|
||||
fSetwindowFrame.Set(112.0f, 60.0f, 492.0f, 340.0f);
|
||||
if (m.FindBool("fIsZoomed", &fIsZoomed) != B_OK)
|
||||
fIsZoomed = true;
|
||||
if (m.FindFloat("fLastWidth", &fLastWidth) != B_OK)
|
||||
fLastWidth = 318.0f;
|
||||
if (m.FindFloat("fLastHeight", &fLastHeight) != B_OK)
|
||||
fLastHeight = 320.0f;
|
||||
|
||||
is_zoomed?ResizeTo(last_width, last_height):ResizeTo(318, 53);
|
||||
MoveTo(frame.left, frame.top);
|
||||
fIsZoomed?ResizeTo(fLastWidth, fLastHeight):ResizeTo(318, 53);
|
||||
MoveTo(fFrame.left, fFrame.top);
|
||||
|
||||
fLogFile = new BFile(log_path.String(), B_CREATE_FILE | B_WRITE_ONLY
|
||||
fLogFile = new BFile(fLogPath.String(), B_CREATE_FILE | B_WRITE_ONLY
|
||||
| B_OPEN_AT_END);
|
||||
if (fLogFile->InitCheck() != B_OK) {
|
||||
log_file_flag = false;
|
||||
fLogFileFlag = false;
|
||||
//log it to console, "log to file unavailable."
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
SetDirLabel(web_directory.String());
|
||||
SetDirLabel(fWebDirectory.String());
|
||||
|
||||
return B_OK;
|
||||
}
|
||||
@ -730,24 +661,24 @@ PoorManWindow::SaveSettings()
|
||||
BMessage m(MSG_PREF_FILE);
|
||||
|
||||
//site tab
|
||||
m.AddString("web_directory", web_directory);
|
||||
m.AddString("index_file_name", index_file_name);
|
||||
m.AddBool("dir_list_flag", dir_list_flag);
|
||||
m.AddString("fWebDirectory", fWebDirectory);
|
||||
m.AddString("fIndexFileName", fIndexFileName);
|
||||
m.AddBool("fDirListFlag", fDirListFlag);
|
||||
|
||||
//logging tab
|
||||
m.AddBool("log_console_flag", log_console_flag);
|
||||
m.AddBool("log_file_flag", log_file_flag);
|
||||
m.AddString("log_path", log_path);
|
||||
m.AddBool("fLogConsoleFlag", fLogConsoleFlag);
|
||||
m.AddBool("fLogFileFlag", fLogFileFlag);
|
||||
m.AddString("fLogPath", fLogPath);
|
||||
|
||||
//advance tab
|
||||
m.AddInt16("max_connections", max_connections);
|
||||
m.AddInt16("fMaxConnections", fMaxConnections);
|
||||
|
||||
//windows' position and size
|
||||
m.AddRect("frame", frame);
|
||||
m.AddRect("setwindow_frame", setwindow_frame);
|
||||
m.AddBool("is_zoomed", is_zoomed);
|
||||
m.AddFloat("last_width", last_width);
|
||||
m.AddFloat("last_height", last_height);
|
||||
m.AddRect("frame", fFrame);
|
||||
m.AddRect("fSetwindowFrame", fSetwindowFrame);
|
||||
m.AddBool("fIsZoomed", fIsZoomed);
|
||||
m.AddFloat("fLastWidth", fLastWidth);
|
||||
m.AddFloat("fLastHeight", fLastHeight);
|
||||
|
||||
if (find_directory(B_USER_SETTINGS_DIRECTORY, &p) != B_OK)
|
||||
return B_ERROR;
|
||||
@ -768,18 +699,15 @@ status_t
|
||||
PoorManWindow::StartServer()
|
||||
{
|
||||
if (fServer == NULL)
|
||||
fServer = new PoorManServer(
|
||||
web_directory.String(),
|
||||
max_connections,
|
||||
dir_list_flag,
|
||||
index_file_name.String());
|
||||
fServer = new PoorManServer(fWebDirectory.String(), fMaxConnections,
|
||||
fDirListFlag, fIndexFileName.String());
|
||||
|
||||
poorman_log(B_TRANSLATE("Starting up... "));
|
||||
if (fServer->Run() != B_OK) {
|
||||
return B_ERROR;
|
||||
}
|
||||
|
||||
status = true;
|
||||
fStatus = true;
|
||||
UpdateStatusLabelAndMenuItem();
|
||||
poorman_log(B_TRANSLATE("done.\n"), false, INADDR_NONE, GREEN);
|
||||
|
||||
@ -795,7 +723,7 @@ PoorManWindow::StopServer()
|
||||
|
||||
poorman_log(B_TRANSLATE("Shutting down.\n"));
|
||||
fServer->Stop();
|
||||
status = false;
|
||||
fStatus = false;
|
||||
UpdateStatusLabelAndMenuItem();
|
||||
return B_OK;
|
||||
}
|
||||
@ -804,7 +732,7 @@ PoorManWindow::StopServer()
|
||||
void
|
||||
PoorManWindow::SetLogPath(const char* str)
|
||||
{
|
||||
if (!strcmp(log_path, str))
|
||||
if (!strcmp(fLogPath, str))
|
||||
return;
|
||||
|
||||
BFile* temp = new BFile(str, B_CREATE_FILE | B_WRITE_ONLY | B_OPEN_AT_END);
|
||||
@ -823,5 +751,5 @@ PoorManWindow::SetLogPath(const char* str)
|
||||
return;
|
||||
}
|
||||
|
||||
log_path.SetTo(str);
|
||||
fLogPath.SetTo(str);
|
||||
}
|
||||
|
@ -33,125 +33,132 @@ class PoorManServer;
|
||||
class PoorManWindow: public BWindow
|
||||
{
|
||||
public:
|
||||
PoorManWindow(BRect frame);
|
||||
virtual ~PoorManWindow();
|
||||
virtual void MessageReceived(BMessage * message);
|
||||
PoorManWindow(BRect frame);
|
||||
virtual ~PoorManWindow();
|
||||
virtual void MessageReceived(BMessage* message);
|
||||
|
||||
virtual void FrameMoved(BPoint origin);
|
||||
virtual void FrameResized(float width, float height);
|
||||
virtual bool QuitRequested();
|
||||
virtual void Zoom(BPoint origin, float width, float height);
|
||||
virtual void FrameMoved(BPoint origin);
|
||||
virtual void FrameResized(float width, float height);
|
||||
virtual bool QuitRequested();
|
||||
virtual void Zoom(BPoint origin, float width, float height);
|
||||
|
||||
// -------------------------------------------
|
||||
// Public PoorMan Window Methods
|
||||
void SetDirLabel(const char * name);
|
||||
void SetHits(uint32 num);
|
||||
uint32 GetHits() { return hits; }
|
||||
status_t SaveConsole(BMessage * message, bool);
|
||||
void SetDirLabel(const char* name);
|
||||
void SetHits(uint32 num);
|
||||
uint32 GetHits() { return fHits; }
|
||||
status_t SaveConsole(BMessage* message, bool);
|
||||
|
||||
status_t SaveSettings();
|
||||
status_t ReadSettings();
|
||||
void DefaultSettings();
|
||||
status_t SaveSettings();
|
||||
status_t ReadSettings();
|
||||
void DefaultSettings();
|
||||
|
||||
status_t StartServer();
|
||||
status_t StopServer();
|
||||
status_t StartServer();
|
||||
status_t StopServer();
|
||||
|
||||
PoorManServer* GetServer()const{return fServer;}
|
||||
PoorManServer* GetServer() const { return fServer;}
|
||||
// -------------------------------------------
|
||||
// Preferences and Settings
|
||||
// Site Tab
|
||||
bool DirListFlag() { return dir_list_flag; }
|
||||
void SetDirListFlag(bool flag) { dir_list_flag = flag; }
|
||||
const char * IndexFileName() { return index_file_name.String(); }
|
||||
void SetIndexFileName(const char * str) { index_file_name.SetTo(str); }
|
||||
const char * WebDir() { return web_directory.String(); }
|
||||
void SetWebDir(const char * str) { web_directory.SetTo(str); }
|
||||
bool DirListFlag()
|
||||
{ return fDirListFlag; }
|
||||
void SetDirListFlag(bool flag)
|
||||
{ fDirListFlag = flag; }
|
||||
const char* IndexFileName()
|
||||
{ return fIndexFileName.String(); }
|
||||
void SetIndexFileName(const char* str)
|
||||
{ fIndexFileName.SetTo(str); }
|
||||
const char* WebDir()
|
||||
{ return fWebDirectory.String(); }
|
||||
void SetWebDir(const char* str)
|
||||
{ fWebDirectory.SetTo(str); }
|
||||
// Logging Tab
|
||||
bool LogConsoleFlag() { return log_console_flag; }
|
||||
void SetLogConsoleFlag(bool flag) { log_console_flag = flag; }
|
||||
bool LogFileFlag() { return log_file_flag; }
|
||||
void SetLogFileFlag(bool flag) { log_file_flag = flag; }
|
||||
const char * LogPath() { return log_path.String(); }
|
||||
void SetLogPath(const char * str);
|
||||
bool LogConsoleFlag()
|
||||
{ return fLogConsoleFlag; }
|
||||
void SetLogConsoleFlag(bool flag)
|
||||
{ fLogConsoleFlag = flag; }
|
||||
bool LogFileFlag()
|
||||
{ return fLogFileFlag; }
|
||||
void SetLogFileFlag(bool flag)
|
||||
{ fLogFileFlag = flag; }
|
||||
const char* LogPath()
|
||||
{ return fLogPath.String(); }
|
||||
void SetLogPath(const char* str);
|
||||
// Advanced Tab
|
||||
int16 MaxConnections() { return max_connections; }
|
||||
void SetMaxConnections(int16 num) { max_connections = num; }
|
||||
|
||||
int16 MaxConnections()
|
||||
{ return fMaxConnections; }
|
||||
void SetMaxConnections(int16 num)
|
||||
{ fMaxConnections = num; }
|
||||
|
||||
private:
|
||||
// -------------------------------------------
|
||||
// PoorMan Window Methods
|
||||
void UpdateStatusLabelAndMenuItem();
|
||||
void UpdateHitsLabel();
|
||||
void UpdateStatusLabelAndMenuItem();
|
||||
void UpdateHitsLabel();
|
||||
|
||||
private:
|
||||
// -------------------------------------------
|
||||
// PoorMan Window
|
||||
PoorManView * mainView;
|
||||
|
||||
// -------------------------------------------
|
||||
// Build Menu Methods
|
||||
BMenu * BuildFileMenu() const;
|
||||
BMenu * BuildEditMenu() const;
|
||||
BMenu * BuildControlsMenu() const;
|
||||
BMenu* BuildFileMenu() const;
|
||||
BMenu* BuildEditMenu() const;
|
||||
BMenu* BuildControlsMenu() const;
|
||||
|
||||
// --------------------------------------------
|
||||
// MenuBar & Menu items
|
||||
BMenuBar * FileMenuBar;
|
||||
BMenu * FileMenu;
|
||||
BMenu * EditMenu;
|
||||
BMenu * ControlsMenu;
|
||||
BMenuBar* fFileMenuBar;
|
||||
BMenu* fFileMenu;
|
||||
BMenu* fEditMenu;
|
||||
BMenu* fControlsMenu;
|
||||
|
||||
// --------------------------------------------
|
||||
// Status, Hits, Directory
|
||||
BStringView * statusView;
|
||||
BStringView * hitsView;
|
||||
BStringView * dirView;
|
||||
BStringView* fStatusView;
|
||||
BStringView* fHitsView;
|
||||
BStringView* fDirView;
|
||||
|
||||
bool status;
|
||||
uint32 hits;
|
||||
char hitsLabel[25];
|
||||
bool fStatus;
|
||||
uint32 fHits;
|
||||
char fHitsLabel[25];
|
||||
|
||||
// --------------------------------------------
|
||||
// Logging View
|
||||
BScrollView * scrollView;
|
||||
BTextView * loggingView;
|
||||
BScrollView* fScrollView;
|
||||
BTextView* fLoggingView;
|
||||
// use asctime() for format of [Date/Time]:
|
||||
|
||||
|
||||
// -------------------------------------------
|
||||
// PoorMan Preference Window
|
||||
PoorManPreferencesWindow * prefWindow;
|
||||
PoorManPreferencesWindow * fPrefWindow;
|
||||
|
||||
// site tab
|
||||
BString web_directory;
|
||||
BString index_file_name;
|
||||
bool dir_list_flag;
|
||||
BString fWebDirectory;
|
||||
BString fIndexFileName;
|
||||
bool fDirListFlag;
|
||||
|
||||
// logging tab
|
||||
bool log_console_flag;
|
||||
bool log_file_flag;
|
||||
BString log_path;
|
||||
bool fLogConsoleFlag;
|
||||
bool fLogFileFlag;
|
||||
BString fLogPath;
|
||||
|
||||
// advanced tab
|
||||
int16 max_connections;
|
||||
int16 fMaxConnections;
|
||||
|
||||
bool is_zoomed;
|
||||
float last_width;
|
||||
float last_height;
|
||||
BRect frame;
|
||||
BRect setwindow_frame;
|
||||
bool fIsZoomed;
|
||||
float fLastWidth;
|
||||
float fLastHeight;
|
||||
BRect fFrame;
|
||||
BRect fSetwindowFrame;
|
||||
|
||||
// File Panels
|
||||
BFilePanel * saveConsoleFilePanel;
|
||||
BFilePanel * saveConsoleSelectionFilePanel;
|
||||
BFilePanel* fSaveConsoleFilePanel;
|
||||
BFilePanel* fSaveConsoleSelectionFilePanel;
|
||||
|
||||
BFile* fLogFile;
|
||||
BFont* fLogViewFont;
|
||||
BFile* fLogFile;
|
||||
|
||||
PoorManServer* fServer;
|
||||
PoorManServer* fServer;
|
||||
|
||||
pthread_rwlock_t fLogFileLock;
|
||||
pthread_rwlock_t fLogFileLock;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -11,31 +11,19 @@
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
StatusSlider::StatusSlider (BRect frame,
|
||||
const char *name,
|
||||
const char *label,
|
||||
char *statusPrefix,
|
||||
BMessage *message,
|
||||
int32 minValue,
|
||||
int32 maxValue)
|
||||
|
||||
: BSlider(frame,
|
||||
name,
|
||||
label,
|
||||
message,
|
||||
minValue,
|
||||
maxValue
|
||||
),
|
||||
StatusPrefix(statusPrefix)
|
||||
StatusSlider::StatusSlider(const char* name, const char* label,
|
||||
char* statusPrefix, BMessage* message, int32 minValue, int32 maxValue)
|
||||
:
|
||||
BSlider(name, label, message, minValue, maxValue, B_HORIZONTAL),
|
||||
fStatusPrefix(statusPrefix)
|
||||
{
|
||||
temp = str;
|
||||
fTemp = fStr;
|
||||
}
|
||||
|
||||
const char*
|
||||
StatusSlider::UpdateText() const
|
||||
{
|
||||
|
||||
sprintf(temp, "%ld %s", Value(), StatusPrefix);
|
||||
|
||||
return temp;
|
||||
sprintf(fTemp, "%ld %s", Value(), fStatusPrefix);
|
||||
|
||||
return fTemp;
|
||||
}
|
||||
|
@ -13,21 +13,21 @@
|
||||
#include <Slider.h>
|
||||
|
||||
|
||||
class StatusSlider: public BSlider
|
||||
{
|
||||
class StatusSlider: public BSlider {
|
||||
public:
|
||||
StatusSlider(BRect frame,
|
||||
const char *name,
|
||||
const char *label,
|
||||
char *statusPrefix,
|
||||
BMessage *message,
|
||||
int32 minValue,
|
||||
int32 maxValue);
|
||||
virtual const char* UpdateText() const;
|
||||
StatusSlider(const char* name,
|
||||
const char* label,
|
||||
char* statusPrefix,
|
||||
BMessage* message,
|
||||
int32 minValue,
|
||||
int32 maxValue);
|
||||
|
||||
virtual const char* UpdateText() const;
|
||||
|
||||
private:
|
||||
char * StatusPrefix;
|
||||
char * temp;
|
||||
char str[128];
|
||||
char* fStatusPrefix;
|
||||
char* fTemp;
|
||||
char fStr[128];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user