Merge branch 'master' of ssh://git.haiku-os.org/haiku
This commit is contained in:
commit
816e3cb649
@ -294,6 +294,7 @@ enum color_which {
|
||||
B_CONTROL_TEXT_COLOR = 14,
|
||||
B_CONTROL_BORDER_COLOR = 15,
|
||||
B_CONTROL_HIGHLIGHT_COLOR = 16,
|
||||
B_CONTROL_MARK_COLOR = 27,
|
||||
B_NAVIGATION_BASE_COLOR = 4,
|
||||
B_NAVIGATION_PULSE_COLOR = 17,
|
||||
B_SHINE_COLOR = 18,
|
||||
|
@ -26,23 +26,24 @@ static inline int32
|
||||
color_which_to_index(color_which which)
|
||||
{
|
||||
// NOTE: this must be kept in sync with InterfaceDefs.h color_which!
|
||||
if (which <= B_WINDOW_INACTIVE_BORDER_COLOR)
|
||||
if (which <= B_CONTROL_MARK_COLOR)
|
||||
return which - 1;
|
||||
if (which >= B_SUCCESS_COLOR && which <= B_FAILURE_COLOR)
|
||||
return which - B_SUCCESS_COLOR + B_WINDOW_INACTIVE_BORDER_COLOR;
|
||||
return which - B_SUCCESS_COLOR + B_CONTROL_MARK_COLOR;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
static inline color_which
|
||||
index_to_color_which(int32 index)
|
||||
{
|
||||
if (index >= 0 && index < kNumColors) {
|
||||
if ((color_which)index < B_WINDOW_INACTIVE_BORDER_COLOR)
|
||||
if ((color_which)index < B_CONTROL_MARK_COLOR)
|
||||
return (color_which)(index + 1);
|
||||
else {
|
||||
return (color_which)(index + B_SUCCESS_COLOR
|
||||
- B_WINDOW_INACTIVE_BORDER_COLOR);
|
||||
- B_CONTROL_MARK_COLOR);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -257,6 +257,12 @@ detect_displays()
|
||||
if (displayIndex >= MAX_DISPLAY)
|
||||
continue;
|
||||
|
||||
if (gConnector[id]->type == VIDEO_CONNECTOR_9DIN) {
|
||||
TRACE("%s: Skipping 9DIN connector (not yet supported)\n",
|
||||
__func__);
|
||||
continue;
|
||||
}
|
||||
|
||||
// TODO: As DP aux transactions don't work yet, just use LVDS as a hack
|
||||
#if 0
|
||||
if (gConnector[id]->encoderExternal.isDPBridge == true) {
|
||||
@ -310,9 +316,11 @@ detect_displays()
|
||||
TRACE("%s: connector %" B_PRIu32 " has digital EDID "
|
||||
"and is not a analog encoder.\n", __func__, id);
|
||||
} else {
|
||||
// ???, shouldn't happen... I think.
|
||||
TRACE("%s: Warning: connector %" B_PRIu32 " has neither "
|
||||
"digital EDID nor is an analog encoder?\n",
|
||||
// This generally means the monitor is of poor design
|
||||
// Since we *know* there is no load on the analog encoder
|
||||
// we assume that it is a digital display.
|
||||
TRACE("%s: Warning: monitor on connector %" B_PRIu32 " has "
|
||||
"false digital EDID flag and unloaded analog encoder!\n",
|
||||
__func__, id);
|
||||
}
|
||||
}
|
||||
|
@ -200,6 +200,7 @@ Application Debugger :
|
||||
VariablesView.cpp
|
||||
|
||||
# user_interface/gui/util
|
||||
ActionMenuItem.cpp
|
||||
GUISettingsUtils.cpp
|
||||
SettingsMenu.cpp
|
||||
TargetAddressTableColumn.cpp
|
||||
|
@ -218,20 +218,26 @@ TeamWindow::MessageReceived(BMessage* message)
|
||||
{
|
||||
if (fInspectorWindow) {
|
||||
fInspectorWindow->Activate(true);
|
||||
break;
|
||||
} else {
|
||||
try {
|
||||
fInspectorWindow = InspectorWindow::Create(fTeam,
|
||||
fListener, this);
|
||||
if (fInspectorWindow != NULL) {
|
||||
BMessage settings;
|
||||
fInspectorWindow->LoadSettings(fUISettings);
|
||||
fInspectorWindow->Show();
|
||||
}
|
||||
} catch (...) {
|
||||
// TODO: notify user
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
fInspectorWindow = InspectorWindow::Create(fTeam, fListener,
|
||||
this);
|
||||
if (fInspectorWindow != NULL) {
|
||||
BMessage settings;
|
||||
fInspectorWindow->LoadSettings(fUISettings);
|
||||
fInspectorWindow->Show();
|
||||
}
|
||||
} catch (...) {
|
||||
// TODO: notify user
|
||||
}
|
||||
target_addr_t address;
|
||||
if (message->FindUInt64("address", &address) == B_OK) {
|
||||
BMessage addressMessage(MSG_INSPECT_ADDRESS);
|
||||
addressMessage.AddUInt64("address", address);
|
||||
fInspectorWindow->PostMessage(&addressMessage);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MSG_INSPECTOR_WINDOW_CLOSED:
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
||||
* Copyright 2011, Rene Gollent, rene@gollent.com.
|
||||
* Copyright 2011-2012, Rene Gollent, rene@gollent.com.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
|
||||
#include "table/TableColumns.h"
|
||||
|
||||
#include "ActionMenuItem.h"
|
||||
#include "Architecture.h"
|
||||
#include "FunctionID.h"
|
||||
#include "FunctionInstance.h"
|
||||
@ -36,6 +37,7 @@
|
||||
#include "Value.h"
|
||||
#include "ValueHandler.h"
|
||||
#include "ValueHandlerRoster.h"
|
||||
#include "ValueLocation.h"
|
||||
#include "ValueNode.h"
|
||||
#include "ValueNodeContainer.h"
|
||||
#include "Variable.h"
|
||||
@ -487,34 +489,77 @@ public:
|
||||
}
|
||||
|
||||
status_t Init(Settings* rendererSettings,
|
||||
SettingsMenu* rendererSettingsMenu)
|
||||
SettingsMenu* rendererSettingsMenu,
|
||||
ContextActionList* preSettingsActions = NULL,
|
||||
ContextActionList* postSettingsActions = NULL)
|
||||
{
|
||||
fRendererSettings = rendererSettings;
|
||||
fRendererSettings->AcquireReference();
|
||||
if (rendererSettings == NULL && preSettingsActions == NULL
|
||||
&& postSettingsActions == NULL) {
|
||||
return B_BAD_VALUE;
|
||||
}
|
||||
|
||||
fRendererSettingsMenu = rendererSettingsMenu;
|
||||
fRendererSettingsMenu->AcquireReference();
|
||||
if (rendererSettings != NULL) {
|
||||
fRendererSettings = rendererSettings;
|
||||
fRendererSettings->AcquireReference();
|
||||
|
||||
|
||||
fRendererSettingsMenu = rendererSettingsMenu;
|
||||
fRendererSettingsMenu->AcquireReference();
|
||||
}
|
||||
|
||||
fContextMenu = new(std::nothrow) ContextMenu(fParent,
|
||||
"table cell settings popup");
|
||||
if (fContextMenu == NULL)
|
||||
return B_NO_MEMORY;
|
||||
|
||||
status_t error = fRendererSettingsMenu->AddToMenu(fContextMenu, 0);
|
||||
if (error != B_OK)
|
||||
return error;
|
||||
status_t error = B_OK;
|
||||
if (preSettingsActions != NULL
|
||||
&& preSettingsActions->CountItems() > 0) {
|
||||
error = _AddActionItems(preSettingsActions);
|
||||
if (error != B_OK)
|
||||
return error;
|
||||
|
||||
AutoLocker<Settings> settingsLocker(fRendererSettings);
|
||||
fRendererSettings->AddListener(this);
|
||||
if (fRendererSettingsMenu != NULL || postSettingsActions != NULL)
|
||||
fContextMenu->AddSeparatorItem();
|
||||
}
|
||||
|
||||
fRendererMenuAdded = true;
|
||||
if (fRendererSettingsMenu != NULL) {
|
||||
error = fRendererSettingsMenu->AddToMenu(fContextMenu,
|
||||
fContextMenu->CountItems());
|
||||
if (error != B_OK)
|
||||
return error;
|
||||
|
||||
if (postSettingsActions != NULL)
|
||||
fContextMenu->AddSeparatorItem();
|
||||
}
|
||||
|
||||
if (postSettingsActions != NULL) {
|
||||
error = _AddActionItems(postSettingsActions);
|
||||
if (error != B_OK)
|
||||
return error;
|
||||
|
||||
}
|
||||
|
||||
if (fRendererSettings != NULL) {
|
||||
AutoLocker<Settings> settingsLocker(fRendererSettings);
|
||||
fRendererSettings->AddListener(this);
|
||||
fRendererMenuAdded = true;
|
||||
}
|
||||
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
void ShowMenu(BPoint screenWhere)
|
||||
{
|
||||
fRendererSettingsMenu->PrepareToShow(fParentLooper);
|
||||
if (fRendererMenuAdded)
|
||||
fRendererSettingsMenu->PrepareToShow(fParentLooper);
|
||||
|
||||
for (int32 i = 0; i < fContextMenu->CountItems(); i++) {
|
||||
ActionMenuItem* item = dynamic_cast<ActionMenuItem*>(
|
||||
fContextMenu->ItemAt(i));
|
||||
if (item != NULL)
|
||||
item->PrepareToShow(fParentLooper, fParent.Target(NULL));
|
||||
}
|
||||
|
||||
fMenuPreparedToShow = true;
|
||||
|
||||
@ -528,7 +573,18 @@ public:
|
||||
bool stillActive = false;
|
||||
|
||||
if (fMenuPreparedToShow) {
|
||||
stillActive = fRendererSettingsMenu->Finish(fParentLooper, force);
|
||||
if (fRendererMenuAdded)
|
||||
stillActive = fRendererSettingsMenu->Finish(fParentLooper,
|
||||
force);
|
||||
for (int32 i = 0; i < fContextMenu->CountItems(); i++) {
|
||||
ActionMenuItem* item = dynamic_cast<ActionMenuItem*>(
|
||||
fContextMenu->ItemAt(i));
|
||||
if (item != NULL) {
|
||||
stillActive |= item->Finish(fParentLooper,
|
||||
fParent.Target(NULL), force);
|
||||
}
|
||||
}
|
||||
|
||||
fMenuPreparedToShow = stillActive;
|
||||
}
|
||||
|
||||
@ -559,6 +615,24 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
status_t _AddActionItems(ContextActionList* actions)
|
||||
{
|
||||
if (fContextMenu == NULL)
|
||||
return B_BAD_VALUE;
|
||||
|
||||
int32 index = fContextMenu->CountItems();
|
||||
for (int32 i = 0; ActionMenuItem* item = actions->ItemAt(i); i++) {
|
||||
if (!fContextMenu->AddItem(item, index + i)) {
|
||||
for (i--; i >= 0; i--)
|
||||
fContextMenu->RemoveItem(fContextMenu->ItemAt(index + i));
|
||||
|
||||
return B_NO_MEMORY;
|
||||
}
|
||||
}
|
||||
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
private:
|
||||
ModelNode* fNode;
|
||||
BLooper* fParentLooper;
|
||||
@ -1412,6 +1486,15 @@ void
|
||||
VariablesView::MessageReceived(BMessage* message)
|
||||
{
|
||||
switch (message->what) {
|
||||
case MSG_SHOW_INSPECTOR_WINDOW:
|
||||
{
|
||||
// TODO: it'd probably be more ideal to extend the context
|
||||
// action mechanism to allow one to specify an explicit
|
||||
// target for each action rather than them all defaulting
|
||||
// to targetting here.
|
||||
Looper()->PostMessage(message);
|
||||
break;
|
||||
}
|
||||
case MSG_VALUE_NODE_CHANGED:
|
||||
{
|
||||
ValueNodeChild* nodeChild;
|
||||
@ -1594,25 +1677,39 @@ VariablesView::TreeTableCellMouseDown(TreeTable* table,
|
||||
if (node == NULL)
|
||||
return;
|
||||
|
||||
Settings* settings = NULL;
|
||||
SettingsMenu* settingsMenu = NULL;
|
||||
BReference<SettingsMenu> settingsMenuReference;
|
||||
status_t error = B_OK;
|
||||
TableCellValueRenderer* cellRenderer = node->TableCellRenderer();
|
||||
if (cellRenderer == NULL)
|
||||
return;
|
||||
|
||||
Settings* settings = cellRenderer->GetSettings();
|
||||
if (settings == NULL)
|
||||
return;
|
||||
|
||||
SettingsMenu* settingsMenu;
|
||||
status_t error = node->GetValueHandler()->CreateTableCellValueSettingsMenu(
|
||||
node->GetValue(), settings, settingsMenu);
|
||||
BReference<SettingsMenu> settingsMenuReference(settingsMenu, true);
|
||||
if (error != B_OK)
|
||||
return;
|
||||
if (cellRenderer != NULL) {
|
||||
settings = cellRenderer->GetSettings();
|
||||
if (settings != NULL) {
|
||||
error = node->GetValueHandler()
|
||||
->CreateTableCellValueSettingsMenu(node->GetValue(), settings,
|
||||
settingsMenu);
|
||||
settingsMenuReference.SetTo(settingsMenu, true);
|
||||
if (error != B_OK)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
TableCellContextMenuTracker* tracker = new(std::nothrow)
|
||||
TableCellContextMenuTracker(node, Looper(), this);
|
||||
BReference<TableCellContextMenuTracker> trackerReference(tracker);
|
||||
if (tracker == NULL || tracker->Init(settings, settingsMenu) != B_OK)
|
||||
|
||||
ContextActionList* preActionList = new(std::nothrow) ContextActionList;
|
||||
if (preActionList == NULL)
|
||||
return;
|
||||
|
||||
BPrivate::ObjectDeleter<ContextActionList> preActionListDeleter(
|
||||
preActionList);
|
||||
|
||||
error = _GetContextActionsForNode(node, preActionList);
|
||||
if (error != B_OK)
|
||||
return;
|
||||
|
||||
if (tracker == NULL || tracker->Init(settings, settingsMenu, preActionList) != B_OK)
|
||||
return;
|
||||
|
||||
fTableCellContextMenuTracker = trackerReference.Detach();
|
||||
@ -1679,6 +1776,39 @@ VariablesView::_RequestNodeValue(ModelNode* node)
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
VariablesView::_GetContextActionsForNode(ModelNode* node,
|
||||
ContextActionList* actions)
|
||||
{
|
||||
ValueLocation* location = node->NodeChild()->Location();
|
||||
|
||||
// if the location's stored somewhere other than in memory,
|
||||
// then we won't be able to inspect it this way.
|
||||
if (location->PieceAt(0).type != VALUE_PIECE_LOCATION_MEMORY)
|
||||
return B_OK;
|
||||
|
||||
BMessage* message = new BMessage(MSG_SHOW_INSPECTOR_WINDOW);
|
||||
if (message == NULL)
|
||||
return B_NO_MEMORY;
|
||||
|
||||
ObjectDeleter<BMessage> messageDeleter(message);
|
||||
message->AddUInt64("address", location->PieceAt(0).address);
|
||||
|
||||
ActionMenuItem* item = new(std::nothrow) ActionMenuItem("Inspect",
|
||||
message);
|
||||
if (item == NULL)
|
||||
return B_NO_MEMORY;
|
||||
|
||||
messageDeleter.Detach();
|
||||
ObjectDeleter<ActionMenuItem> actionDeleter(item);
|
||||
if (!actions->AddItem(item))
|
||||
return B_NO_MEMORY;
|
||||
|
||||
actionDeleter.Detach();
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
VariablesView::_FinishContextMenu(bool force)
|
||||
{
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "table/TreeTable.h"
|
||||
|
||||
|
||||
class ActionMenuItem;
|
||||
class CpuState;
|
||||
class SettingsMenu;
|
||||
class StackFrame;
|
||||
@ -61,13 +62,15 @@ private:
|
||||
class VariableTableModel;
|
||||
class ContextMenu;
|
||||
class TableCellContextMenuTracker;
|
||||
typedef BObjectList<ActionMenuItem> ContextActionList;
|
||||
|
||||
private:
|
||||
void _Init();
|
||||
|
||||
void _RequestNodeValue(ModelNode* node);
|
||||
status_t _GetContextActionsForNode(ModelNode* node,
|
||||
ContextActionList* actions);
|
||||
void _FinishContextMenu(bool force);
|
||||
|
||||
void _SaveViewState() const;
|
||||
void _RestoreViewState();
|
||||
status_t _AddViewStateDescendentNodeInfos(
|
||||
|
56
src/apps/debugger/user_interface/gui/util/ActionMenuItem.cpp
Normal file
56
src/apps/debugger/user_interface/gui/util/ActionMenuItem.cpp
Normal file
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright 2012, Rene Gollent, rene@gollent.com.
|
||||
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
|
||||
|
||||
#include "ActionMenuItem.h"
|
||||
|
||||
#include <new>
|
||||
|
||||
#include <Looper.h>
|
||||
|
||||
|
||||
// #pragma mark - ActionMenuItem
|
||||
|
||||
|
||||
ActionMenuItem::ActionMenuItem(const char* label, BMessage* message,
|
||||
char shortcut, uint32 modifiers)
|
||||
:
|
||||
BMenuItem(label, message, shortcut, modifiers)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
ActionMenuItem::ActionMenuItem(BMenu* menu, BMessage* message)
|
||||
:
|
||||
BMenuItem(menu, message)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
ActionMenuItem::~ActionMenuItem()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ActionMenuItem::PrepareToShow(BLooper* parentLooper, BHandler* targetHandler)
|
||||
{
|
||||
SetTarget(targetHandler);
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
ActionMenuItem::Finish(BLooper* parentLooper, BHandler* targetHandler,
|
||||
bool force)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ActionMenuItem::ItemSelected()
|
||||
{
|
||||
}
|
31
src/apps/debugger/user_interface/gui/util/ActionMenuItem.h
Normal file
31
src/apps/debugger/user_interface/gui/util/ActionMenuItem.h
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright 2012, Rene Gollent, rene@gollent.com.
|
||||
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef ACTION_MENU_ITEM_H
|
||||
#define ACTION_MENU_ITEM_H
|
||||
|
||||
|
||||
#include <MenuItem.h>
|
||||
|
||||
|
||||
class ActionMenuItem : public BMenuItem {
|
||||
public:
|
||||
ActionMenuItem(const char* label,
|
||||
BMessage* message, char shortcut = 0,
|
||||
uint32 modifiers = 0);
|
||||
ActionMenuItem(BMenu* menu,
|
||||
BMessage* message = NULL);
|
||||
virtual ~ActionMenuItem();
|
||||
|
||||
virtual void PrepareToShow(BLooper* parentLooper,
|
||||
BHandler* targetHandler);
|
||||
virtual bool Finish(BLooper* parentLooper,
|
||||
BHandler* targetHandler, bool force);
|
||||
|
||||
virtual void ItemSelected();
|
||||
};
|
||||
|
||||
|
||||
#endif // ACTION_MENU_ITEM_H
|
@ -73,14 +73,24 @@ CStringValueNode::ResolvedLocationAndValue(ValueLoader* valueLoader,
|
||||
if (dynamic_cast<AddressType*>(fType) != NULL) {
|
||||
error = valueLoader->LoadValue(location, valueType, false,
|
||||
addressData);
|
||||
if (error != B_OK)
|
||||
return error;
|
||||
} else {
|
||||
addressData.SetTo(location->PieceAt(0).address);
|
||||
maxSize = dynamic_cast<ArrayType*>(fType)
|
||||
->DimensionAt(0)->CountElements();
|
||||
}
|
||||
|
||||
if (error != B_OK)
|
||||
return error;
|
||||
ValuePieceLocation piece;
|
||||
piece.SetToMemory(addressData.ToUInt64());
|
||||
|
||||
ValueLocation* stringLocation = new(std::nothrow) ValueLocation(
|
||||
valueLoader->GetArchitecture()->IsBigEndian(), piece);
|
||||
|
||||
if (stringLocation == NULL)
|
||||
return B_NO_MEMORY;
|
||||
|
||||
BReference<ValueLocation> locationReference(stringLocation, true);
|
||||
|
||||
error = valueLoader->LoadStringValue(addressData, maxSize, valueData);
|
||||
if (error != B_OK)
|
||||
@ -91,8 +101,8 @@ CStringValueNode::ResolvedLocationAndValue(ValueLoader* valueLoader,
|
||||
if (value == NULL)
|
||||
return B_NO_MEMORY;
|
||||
|
||||
location->AcquireReference();
|
||||
_location = location;
|
||||
NodeChild()->SetLocation(stringLocation, B_OK);
|
||||
_location = locationReference.Detach();
|
||||
_value = value;
|
||||
return B_OK;
|
||||
}
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
#include <Box.h>
|
||||
#include <Catalog.h>
|
||||
#include <LayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
|
||||
#include "constants.h"
|
||||
@ -19,46 +20,43 @@
|
||||
#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);
|
||||
|
||||
// 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);
|
||||
|
||||
|
||||
BGroupLayout* connectionOptionsLayout = new BGroupLayout(B_VERTICAL, 0);
|
||||
connectionOptions->SetLayout(connectionOptionsLayout);
|
||||
|
||||
BLayoutBuilder::Group<>(this, B_VERTICAL)
|
||||
.AddGroup(connectionOptionsLayout)
|
||||
.SetInsets(B_USE_ITEM_INSETS)
|
||||
.AddStrut(B_USE_ITEM_SPACING)
|
||||
.Add(fMaxConnections)
|
||||
.End()
|
||||
.AddGlue()
|
||||
.SetInsets(B_USE_ITEM_INSETS);
|
||||
}
|
||||
|
||||
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 <LayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
|
||||
#include "constants.h"
|
||||
@ -19,80 +20,63 @@
|
||||
#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);
|
||||
|
||||
// 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);
|
||||
|
||||
BGroupLayout* consoleLoggingLayout = new BGroupLayout(B_VERTICAL, 0);
|
||||
consoleLogging->SetLayout(consoleLoggingLayout);
|
||||
|
||||
BGroupLayout* fileLoggingLayout = new BGroupLayout(B_VERTICAL,
|
||||
B_USE_SMALL_SPACING);
|
||||
fileLogging->SetLayout(fileLoggingLayout);
|
||||
|
||||
BLayoutBuilder::Group<>(this, B_VERTICAL)
|
||||
.SetInsets(B_USE_ITEM_INSETS)
|
||||
.AddGroup(consoleLoggingLayout)
|
||||
.SetInsets(B_USE_ITEM_INSETS)
|
||||
.AddGroup(B_HORIZONTAL)
|
||||
.SetInsets(0, B_USE_ITEM_INSETS, 0, 0)
|
||||
.Add(fLogConsole)
|
||||
.AddGlue()
|
||||
.End()
|
||||
.End()
|
||||
.AddGroup(fileLoggingLayout)
|
||||
.SetInsets(B_USE_ITEM_INSETS)
|
||||
.AddGrid(B_USE_SMALL_SPACING, B_USE_SMALL_SPACING)
|
||||
.SetInsets(0, B_USE_ITEM_INSETS, 0, 0)
|
||||
.Add(fLogFile, 0, 0)
|
||||
.AddTextControl(fLogFileName, 0, 1, B_ALIGN_LEFT, 1, 2)
|
||||
.Add(fCreateLogFile, 2, 2);
|
||||
}
|
||||
|
@ -14,28 +14,54 @@
|
||||
#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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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,6 +9,7 @@
|
||||
#include <Catalog.h>
|
||||
#include <Debug.h>
|
||||
#include <Directory.h>
|
||||
#include <LayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
#include <Window.h>
|
||||
|
||||
@ -25,110 +26,71 @@
|
||||
|
||||
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();
|
||||
|
||||
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);
|
||||
|
||||
|
||||
BLayoutBuilder::Group<>(this, B_VERTICAL)
|
||||
.SetInsets(B_USE_WINDOW_INSETS)
|
||||
.Add(fPrefTabView)
|
||||
.AddGroup(B_HORIZONTAL)
|
||||
.AddGlue()
|
||||
.Add(fCancelButton)
|
||||
.Add(fDoneButton);
|
||||
}
|
||||
|
||||
|
||||
PoorManPreferencesWindow::~PoorManPreferencesWindow()
|
||||
{
|
||||
delete logFilePanel;
|
||||
delete webDirFilePanel;
|
||||
delete fLogFilePanel;
|
||||
delete fWebDirFilePanel;
|
||||
}
|
||||
|
||||
|
||||
@ -139,38 +101,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();
|
||||
@ -180,12 +142,15 @@ PoorManPreferencesWindow::MessageReceived(BMessage* message)
|
||||
Quit();
|
||||
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);
|
||||
BMessage webDirSelectedMsg(MSG_FILE_PANEL_SELECT_WEB_DIR);
|
||||
fWebDirFilePanel->SetMessage(&webDirSelectedMsg);
|
||||
if (!fWebDirFilePanel->IsShowing())
|
||||
fWebDirFilePanel->Show();
|
||||
break;
|
||||
}
|
||||
case MSG_FILE_PANEL_SELECT_WEB_DIR:
|
||||
// handle the open BMessage from the Select Web Directory File Panel
|
||||
PRINT(("Select Web Directory:\n"));
|
||||
@ -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,30 +177,27 @@ PoorManPreferencesWindow::MessageReceived(BMessage* message)
|
||||
|
||||
|
||||
void
|
||||
PoorManPreferencesWindow::SelectWebDir(BMessage * message)
|
||||
PoorManPreferencesWindow::SelectWebDir(BMessage* message)
|
||||
{
|
||||
entry_ref ref;
|
||||
const char * name;
|
||||
BPath path;
|
||||
BEntry entry;
|
||||
|
||||
if (message->FindRef("refs", &ref) != B_OK
|
||||
|| message->FindString("name", &name) != B_OK
|
||||
|| entry.SetTo(&ref) != B_OK) {
|
||||
if (message->FindRef("refs", &ref) != B_OK || entry.SetTo(&ref) != B_OK) {
|
||||
return;
|
||||
}
|
||||
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 +208,7 @@ PoorManPreferencesWindow::SelectWebDir(BMessage * message)
|
||||
|
||||
|
||||
void
|
||||
PoorManPreferencesWindow::CreateLogFile(BMessage * message)
|
||||
PoorManPreferencesWindow::CreateLogFile(BMessage* message)
|
||||
{
|
||||
entry_ref ref;
|
||||
const char * name;
|
||||
@ -268,8 +230,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 +245,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,73 @@
|
||||
*/
|
||||
|
||||
#include <Box.h>
|
||||
#include <LayoutBuilder.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");
|
||||
// Web Site Options BBox
|
||||
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);
|
||||
|
||||
|
||||
BGroupLayout* webSiteLocationLayout = new BGroupLayout(B_VERTICAL, 0);
|
||||
webSiteLocation->SetLayout(webSiteLocationLayout);
|
||||
|
||||
BGroupLayout* webSiteOptionsLayout = new BGroupLayout(B_VERTICAL, 0);
|
||||
webSiteOptions->SetLayout(webSiteOptionsLayout);
|
||||
|
||||
BLayoutBuilder::Group<>(this, B_VERTICAL)
|
||||
.SetInsets(B_USE_ITEM_INSETS)
|
||||
.AddGroup(webSiteLocationLayout)
|
||||
.SetInsets(B_USE_ITEM_INSETS)
|
||||
.AddGrid(B_USE_SMALL_SPACING, B_USE_SMALL_SPACING)
|
||||
.SetInsets(0, B_USE_ITEM_INSETS, 0, 0)
|
||||
.AddTextControl(fWebDir, 0, 0, B_ALIGN_LEFT, 1, 2)
|
||||
.Add(fSelectWebDir, 2, 1)
|
||||
.AddTextControl(fIndexFileName, 0, 2, B_ALIGN_LEFT, 1, 2)
|
||||
.SetColumnWeight(1, 10.f)
|
||||
.End()
|
||||
.End()
|
||||
.AddGroup(webSiteOptionsLayout)
|
||||
.SetInsets(B_USE_ITEM_INSETS)
|
||||
.AddStrut(B_USE_ITEM_SPACING)
|
||||
.AddGroup(B_HORIZONTAL)
|
||||
.SetInsets(0)
|
||||
.Add(fSendDir)
|
||||
.AddGlue()
|
||||
.End()
|
||||
.AddGlue();
|
||||
}
|
||||
|
@ -14,26 +14,52 @@
|
||||
#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);
|
||||
}
|
||||
|
||||
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 <LayoutBuilder.h>
|
||||
#include <Locale.h>
|
||||
#include <Menu.h>
|
||||
#include <MenuBar.h>
|
||||
@ -43,182 +44,112 @@
|
||||
|
||||
|
||||
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);
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
// 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);
|
||||
BLayoutBuilder::Group<>(this, B_VERTICAL, 0)
|
||||
.SetInsets(0)
|
||||
.Add(fFileMenuBar)
|
||||
.AddGroup(B_VERTICAL, B_USE_SMALL_SPACING)
|
||||
.SetInsets(B_USE_WINDOW_INSETS)
|
||||
.AddGroup(B_HORIZONTAL)
|
||||
.Add(fStatusView)
|
||||
.AddGlue()
|
||||
.Add(fHitsView)
|
||||
.End()
|
||||
.AddGroup(B_HORIZONTAL)
|
||||
.Add(fDirView)
|
||||
.AddGlue()
|
||||
.End()
|
||||
.Add(fScrollView);
|
||||
|
||||
pthread_rwlock_init(&fLogFileLock, NULL);
|
||||
}
|
||||
@ -227,7 +158,6 @@ PoorManWindow::PoorManWindow(BRect frame)
|
||||
PoorManWindow::~PoorManWindow()
|
||||
{
|
||||
delete fServer;
|
||||
delete fLogViewFont;
|
||||
delete fLogFile;
|
||||
pthread_rwlock_destroy(&fLogFileLock);
|
||||
}
|
||||
@ -237,129 +167,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 +295,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 +313,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 +323,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 +350,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 +365,7 @@ PoorManWindow::Zoom(BPoint origin, float width, float height)
|
||||
void
|
||||
PoorManWindow::SetHits(uint32 num)
|
||||
{
|
||||
hits = num;
|
||||
fHits = num;
|
||||
UpdateHitsLabel();
|
||||
}
|
||||
|
||||
@ -445,10 +373,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 +393,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 +422,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 +451,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 +467,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 +481,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 +490,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 +519,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 +559,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 +606,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 +662,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 +700,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 +724,7 @@ PoorManWindow::StopServer()
|
||||
|
||||
poorman_log(B_TRANSLATE("Shutting down.\n"));
|
||||
fServer->Stop();
|
||||
status = false;
|
||||
fStatus = false;
|
||||
UpdateStatusLabelAndMenuItem();
|
||||
return B_OK;
|
||||
}
|
||||
@ -804,7 +733,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 +752,5 @@ PoorManWindow::SetLogPath(const char* str)
|
||||
return;
|
||||
}
|
||||
|
||||
log_path.SetTo(str);
|
||||
fLogPath.SetTo(str);
|
||||
}
|
||||
|
@ -33,125 +33,172 @@ 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); }
|
||||
// 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);
|
||||
// Advanced Tab
|
||||
int16 MaxConnections() { return max_connections; }
|
||||
void SetMaxConnections(int16 num) { max_connections = num; }
|
||||
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 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 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
|
||||
|
@ -43,6 +43,7 @@ static struct option const kLongOptions[] = {
|
||||
I(control_text_color, B_CONTROL_TEXT_COLOR),
|
||||
I(control_border_color, B_CONTROL_BORDER_COLOR),
|
||||
I(control_highlight_color, B_CONTROL_HIGHLIGHT_COLOR),
|
||||
I(control_mark_color, B_CONTROL_MARK_COLOR)
|
||||
I(navigation_base_color, B_NAVIGATION_BASE_COLOR),
|
||||
I(navigation_pulse_color, B_NAVIGATION_PULSE_COLOR),
|
||||
I(shine_color, B_SHINE_COLOR),
|
||||
|
@ -3197,10 +3197,7 @@ BControlLook::_RadioButtonAndCheckBoxMarkColor(const rgb_color& base,
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO: Get from UI settings
|
||||
color.red = 27;
|
||||
color.green = 82;
|
||||
color.blue = 140;
|
||||
color = ui_color(B_CONTROL_MARK_COLOR);
|
||||
|
||||
float mix = 1.0;
|
||||
|
||||
|
@ -96,6 +96,7 @@ static const rgb_color _kDefaultColors[kNumColors] = {
|
||||
{80, 80, 80, 255}, // B_WINDOW_INACTIVE_TEXT_COLOR
|
||||
{224, 224, 224, 255}, // B_WINDOW_BORDER_COLOR
|
||||
{232, 232, 232, 255}, // B_WINDOW_INACTIVE_BORDER_COLOR
|
||||
{27, 82, 140, 255}, // B_CONTROL_MARK_COLOR
|
||||
// 100...
|
||||
{0, 255, 0, 255}, // B_SUCCESS_COLOR
|
||||
{255, 0, 0, 255}, // B_FAILURE_COLOR
|
||||
|
@ -9,6 +9,7 @@
|
||||
|
||||
#include <new>
|
||||
|
||||
#include <ControlLook.h>
|
||||
#include <Message.h>
|
||||
|
||||
|
||||
@ -18,6 +19,13 @@ namespace {
|
||||
const char* const kAlignmentField = "BSpaceLayoutItem:alignment";
|
||||
const char* const kFrameField = "BSpaceLayoutItem:frame";
|
||||
const char* const kVisibleField = "BSpaceLayoutItem:visible";
|
||||
|
||||
BSize& ComposeSpacingInPlace(BSize& size)
|
||||
{
|
||||
size.width = BControlLook::ComposeSpacing(size.width);
|
||||
size.height = BControlLook::ComposeSpacing(size.height);
|
||||
return size;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -25,9 +33,9 @@ BSpaceLayoutItem::BSpaceLayoutItem(BSize minSize, BSize maxSize,
|
||||
BSize preferredSize, BAlignment alignment)
|
||||
:
|
||||
fFrame(),
|
||||
fMinSize(minSize),
|
||||
fMaxSize(maxSize),
|
||||
fPreferredSize(preferredSize),
|
||||
fMinSize(ComposeSpacingInPlace(minSize)),
|
||||
fMaxSize(ComposeSpacingInPlace(maxSize)),
|
||||
fPreferredSize(ComposeSpacingInPlace(preferredSize)),
|
||||
fAlignment(alignment),
|
||||
fVisible(true)
|
||||
{
|
||||
|
@ -12,9 +12,6 @@ extern "C" {
|
||||
#include "Condvar.h"
|
||||
|
||||
|
||||
#define ticks_to_usecs(t) (1000000*((bigtime_t)t) / hz)
|
||||
|
||||
|
||||
void
|
||||
conditionInit(struct cv* variable, const char* description)
|
||||
{
|
||||
@ -23,7 +20,7 @@ conditionInit(struct cv* variable, const char* description)
|
||||
|
||||
|
||||
void
|
||||
conditionPublish(struct cv* variable, const void* waitChannel,
|
||||
conditionPublish(struct cv* variable, const void* waitChannel,
|
||||
const char* description)
|
||||
{
|
||||
variable->condition.Publish(waitChannel, description);
|
||||
|
@ -62,9 +62,9 @@ callout_thread(void* /*data*/)
|
||||
|
||||
if (mutex != NULL)
|
||||
mtx_lock(mutex);
|
||||
|
||||
|
||||
c->c_func(c->c_arg);
|
||||
|
||||
|
||||
if (mutex != NULL)
|
||||
mtx_unlock(mutex);
|
||||
|
||||
@ -116,7 +116,7 @@ init_callout(void)
|
||||
}
|
||||
|
||||
sThread = spawn_kernel_thread(callout_thread, "fbsd callout",
|
||||
B_URGENT_DISPLAY_PRIORITY, NULL);
|
||||
B_DISPLAY_PRIORITY, NULL);
|
||||
if (sThread < 0) {
|
||||
status = sThread;
|
||||
goto err2;
|
||||
|
@ -5,10 +5,7 @@
|
||||
|
||||
|
||||
#include "device.h"
|
||||
|
||||
|
||||
#define CONVERT_HZ_TO_USECS(hertz) (1000000LL / (hertz))
|
||||
#define FREEBSD_CLOCK_FREQUENCY_IN_HZ 1000
|
||||
#include "kernel.h"
|
||||
|
||||
|
||||
int ticks;
|
||||
@ -27,24 +24,15 @@ hardClock(timer* hardClockTimer)
|
||||
|
||||
|
||||
/*!
|
||||
* Initialization of the hardclock timer.
|
||||
*
|
||||
* Note: We are not using the FreeBSD variable hz as the invocation frequency
|
||||
* as it is the case in FreeBSD's hardclock function. This is due to lower
|
||||
* system load. The hz (see compat/sys/kernel.h) variable in the compat layer is
|
||||
* set to 1000000 Hz, whereas it is usually set to 1000 Hz for FreeBSD.
|
||||
* Initialization of the hardclock timer which ticks according to hz defined in
|
||||
* compat/sys/kernel.h.
|
||||
*/
|
||||
status_t
|
||||
init_hard_clock()
|
||||
{
|
||||
status_t status;
|
||||
|
||||
ticks = 0;
|
||||
status = add_timer(&sHardClockTimer, hardClock,
|
||||
CONVERT_HZ_TO_USECS(FREEBSD_CLOCK_FREQUENCY_IN_HZ),
|
||||
return add_timer(&sHardClockTimer, hardClock, ticks_to_usecs(1),
|
||||
B_PERIODIC_TIMER);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
|
@ -17,18 +17,18 @@
|
||||
|
||||
/*
|
||||
*
|
||||
* In FreeBSD hz holds the count of how often the thread scheduler is invoked
|
||||
* per second. Moreover this is the rate at which FreeBSD can generate callouts
|
||||
* (kind of timeout mechanism).
|
||||
* For FreeBSD 8 this is typically 1000 times per second. This value is defined
|
||||
* in a file called subr_param.c
|
||||
* The rate at which FreeBSD can generate callouts (kind of timeout mechanism).
|
||||
* For FreeBSD 8 this is typically 1000 times per second (100 for ARM).
|
||||
* This value is defined in a file called subr_param.c
|
||||
*
|
||||
* For Haiku this value is much higher, due to using another timeout scheduling
|
||||
* mechanism, which has a resolution of 1 MHz. So hz for Haiku is set to
|
||||
* 1000000. Suffixing LL prevents integer overflows during calculations.
|
||||
* WHile Haiku can have a much higher granularity, it is not a good idea to have
|
||||
* this since FreeBSD tries to do certain tasks based on ticks, for instance
|
||||
* autonegotiation and wlan scanning.
|
||||
* Suffixing LL prevents integer overflows during calculations.
|
||||
* as it defines a long long constant.*/
|
||||
#define hz 1000000LL
|
||||
#define hz 1000LL
|
||||
|
||||
#define ticks_to_usecs(t) (1000000*((bigtime_t)t) / hz)
|
||||
|
||||
typedef void (*system_init_func_t)(void *);
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include <sys/types.h>
|
||||
|
||||
|
||||
#define time_uptime system_time() / 1000000
|
||||
#define time_uptime (system_time() / 1000000)
|
||||
|
||||
|
||||
int ppsratecheck(struct timeval*, int*, int);
|
||||
|
@ -34,6 +34,7 @@ static ColorDescription sColorDescriptionTable[] =
|
||||
{ B_CONTROL_TEXT_COLOR, B_TRANSLATE_MARK("Control text") },
|
||||
{ B_CONTROL_BORDER_COLOR, B_TRANSLATE_MARK("Control border") },
|
||||
{ B_CONTROL_HIGHLIGHT_COLOR, B_TRANSLATE_MARK("Control highlight") },
|
||||
{ B_CONTROL_MARK_COLOR, B_TRANSLATE_MARK("Control mark") },
|
||||
{ B_NAVIGATION_BASE_COLOR, B_TRANSLATE_MARK("Navigation base") },
|
||||
{ B_NAVIGATION_PULSE_COLOR, B_TRANSLATE_MARK("Navigation pulse") },
|
||||
{ B_SHINE_COLOR, B_TRANSLATE_MARK("Shine") },
|
||||
|
@ -40,19 +40,23 @@ ColorWhichItem::DrawItem(BView *owner, BRect frame, bool complete)
|
||||
owner->FillRect(frame);
|
||||
}
|
||||
|
||||
rgb_color black = {0, 0, 0, 255};
|
||||
rgb_color border = (rgb_color){ 184, 184, 184, 255 };
|
||||
|
||||
BRect colorRect(frame);
|
||||
colorRect.InsetBy(2, 2);
|
||||
colorRect.right = colorRect.left + colorRect.Height();
|
||||
owner->SetHighColor(fColor);
|
||||
owner->FillRect(colorRect);
|
||||
owner->SetHighColor(black);
|
||||
owner->SetHighColor(border);
|
||||
owner->StrokeRect(colorRect);
|
||||
|
||||
owner->MovePenTo(frame.left + colorRect.Width() + 8, frame.top
|
||||
+ BaselineOffset());
|
||||
|
||||
// TODO: Don't hardcode black here, calculate based on background
|
||||
// color or use B_CONTROL_TEXT_COLOR constant.
|
||||
rgb_color black = (rgb_color){ 0, 0, 0, 255 };
|
||||
|
||||
if (!IsEnabled())
|
||||
owner->SetHighColor(tint_color(black, B_LIGHTEN_2_TINT));
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user