diff --git a/headers/os/interface/InterfaceDefs.h b/headers/os/interface/InterfaceDefs.h index 0f85a486de..82c4bb72ce 100644 --- a/headers/os/interface/InterfaceDefs.h +++ b/headers/os/interface/InterfaceDefs.h @@ -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, diff --git a/headers/private/app/ServerReadOnlyMemory.h b/headers/private/app/ServerReadOnlyMemory.h index 6ceadfde25..821de0372d 100644 --- a/headers/private/app/ServerReadOnlyMemory.h +++ b/headers/private/app/ServerReadOnlyMemory.h @@ -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); } } diff --git a/src/add-ons/accelerants/radeon_hd/display.cpp b/src/add-ons/accelerants/radeon_hd/display.cpp index ecd15a444c..47e8a32fed 100644 --- a/src/add-ons/accelerants/radeon_hd/display.cpp +++ b/src/add-ons/accelerants/radeon_hd/display.cpp @@ -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); } } diff --git a/src/apps/debugger/Jamfile b/src/apps/debugger/Jamfile index 9d04f5baa3..193bc20961 100644 --- a/src/apps/debugger/Jamfile +++ b/src/apps/debugger/Jamfile @@ -200,6 +200,7 @@ Application Debugger : VariablesView.cpp # user_interface/gui/util + ActionMenuItem.cpp GUISettingsUtils.cpp SettingsMenu.cpp TargetAddressTableColumn.cpp diff --git a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp index 61636f8531..e4363313d2 100644 --- a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.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: diff --git a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp index 922d8d49b7..04ad5d457b 100644 --- a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp @@ -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 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 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( + 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( + 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 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 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 trackerReference(tracker); - if (tracker == NULL || tracker->Init(settings, settingsMenu) != B_OK) + + ContextActionList* preActionList = new(std::nothrow) ContextActionList; + if (preActionList == NULL) + return; + + BPrivate::ObjectDeleter 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 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 actionDeleter(item); + if (!actions->AddItem(item)) + return B_NO_MEMORY; + + actionDeleter.Detach(); + return B_OK; +} + + void VariablesView::_FinishContextMenu(bool force) { diff --git a/src/apps/debugger/user_interface/gui/team_window/VariablesView.h b/src/apps/debugger/user_interface/gui/team_window/VariablesView.h index 0310dbd4de..30f3149fa9 100644 --- a/src/apps/debugger/user_interface/gui/team_window/VariablesView.h +++ b/src/apps/debugger/user_interface/gui/team_window/VariablesView.h @@ -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 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( diff --git a/src/apps/debugger/user_interface/gui/util/ActionMenuItem.cpp b/src/apps/debugger/user_interface/gui/util/ActionMenuItem.cpp new file mode 100644 index 0000000000..27ca732de4 --- /dev/null +++ b/src/apps/debugger/user_interface/gui/util/ActionMenuItem.cpp @@ -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 + +#include + + +// #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() +{ +} diff --git a/src/apps/debugger/user_interface/gui/util/ActionMenuItem.h b/src/apps/debugger/user_interface/gui/util/ActionMenuItem.h new file mode 100644 index 0000000000..074f88d564 --- /dev/null +++ b/src/apps/debugger/user_interface/gui/util/ActionMenuItem.h @@ -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 + + +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 diff --git a/src/apps/debugger/value/value_nodes/CStringValueNode.cpp b/src/apps/debugger/value/value_nodes/CStringValueNode.cpp index dc967113b4..3b5f90ce9d 100644 --- a/src/apps/debugger/value/value_nodes/CStringValueNode.cpp +++ b/src/apps/debugger/value/value_nodes/CStringValueNode.cpp @@ -73,14 +73,24 @@ CStringValueNode::ResolvedLocationAndValue(ValueLoader* valueLoader, if (dynamic_cast(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(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 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; } diff --git a/src/apps/poorman/PoorManAdvancedView.cpp b/src/apps/poorman/PoorManAdvancedView.cpp index 10ef09a8ca..260da72b9c 100644 --- a/src/apps/poorman/PoorManAdvancedView.cpp +++ b/src/apps/poorman/PoorManAdvancedView.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #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); } diff --git a/src/apps/poorman/PoorManAdvancedView.h b/src/apps/poorman/PoorManAdvancedView.h index fd693a77f1..9b6dc58a0e 100644 --- a/src/apps/poorman/PoorManAdvancedView.h +++ b/src/apps/poorman/PoorManAdvancedView.h @@ -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 diff --git a/src/apps/poorman/PoorManLoggingView.cpp b/src/apps/poorman/PoorManLoggingView.cpp index 2f52c40a39..dacef76463 100644 --- a/src/apps/poorman/PoorManLoggingView.cpp +++ b/src/apps/poorman/PoorManLoggingView.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #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); } diff --git a/src/apps/poorman/PoorManLoggingView.h b/src/apps/poorman/PoorManLoggingView.h index 2ffa367606..4203505f79 100644 --- a/src/apps/poorman/PoorManLoggingView.h +++ b/src/apps/poorman/PoorManLoggingView.h @@ -14,28 +14,54 @@ #include -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 diff --git a/src/apps/poorman/PoorManPreferencesWindow.cpp b/src/apps/poorman/PoorManPreferencesWindow.cpp index 21a7137ee3..0095c82deb 100644 --- a/src/apps/poorman/PoorManPreferencesWindow.cpp +++ b/src/apps/poorman/PoorManPreferencesWindow.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -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(); } diff --git a/src/apps/poorman/PoorManPreferencesWindow.h b/src/apps/poorman/PoorManPreferencesWindow.h index 2aaace87ef..7758799dda 100644 --- a/src/apps/poorman/PoorManPreferencesWindow.h +++ b/src/apps/poorman/PoorManPreferencesWindow.h @@ -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 diff --git a/src/apps/poorman/PoorManSiteView.cpp b/src/apps/poorman/PoorManSiteView.cpp index 4214d6c01f..a31ce8584a 100644 --- a/src/apps/poorman/PoorManSiteView.cpp +++ b/src/apps/poorman/PoorManSiteView.cpp @@ -6,91 +6,73 @@ */ #include +#include #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(); } diff --git a/src/apps/poorman/PoorManSiteView.h b/src/apps/poorman/PoorManSiteView.h index 2fecd8f86c..8765347219 100644 --- a/src/apps/poorman/PoorManSiteView.h +++ b/src/apps/poorman/PoorManSiteView.h @@ -14,26 +14,52 @@ #include -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; }; diff --git a/src/apps/poorman/PoorManView.cpp b/src/apps/poorman/PoorManView.cpp index 492162c9b6..9a27f517e1 100644 --- a/src/apps/poorman/PoorManView.cpp +++ b/src/apps/poorman/PoorManView.cpp @@ -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) { } diff --git a/src/apps/poorman/PoorManView.h b/src/apps/poorman/PoorManView.h index 724dcadeb6..e4c40da3cc 100644 --- a/src/apps/poorman/PoorManView.h +++ b/src/apps/poorman/PoorManView.h @@ -12,11 +12,11 @@ #include #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 diff --git a/src/apps/poorman/PoorManWindow.cpp b/src/apps/poorman/PoorManWindow.cpp index 08eb8b83e8..019ecc1e8a 100644 --- a/src/apps/poorman/PoorManWindow.cpp +++ b/src/apps/poorman/PoorManWindow.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -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(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(pointer); - if (message->FindData("in_addr_t", B_ANY_TYPE, &pointer, &size) != B_OK) - address = INADDR_NONE; - else - address = *static_cast(pointer); + if (message->FindData("in_addr_t", B_ANY_TYPE, &pointer, &size) != B_OK) + address = INADDR_NONE; + else + address = *static_cast(pointer); - if (message->FindData("rgb_color", B_RGB_COLOR_TYPE, &pointer, &size) != B_OK) - color = BLACK; - else - color = *static_cast(pointer); + if (message->FindData("rgb_color", B_RGB_COLOR_TYPE, &pointer, &size) != B_OK) + color = BLACK; + else + color = *static_cast(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); } diff --git a/src/apps/poorman/PoorManWindow.h b/src/apps/poorman/PoorManWindow.h index bdbca27bcf..20367ec78e 100644 --- a/src/apps/poorman/PoorManWindow.h +++ b/src/apps/poorman/PoorManWindow.h @@ -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 diff --git a/src/apps/poorman/StatusSlider.cpp b/src/apps/poorman/StatusSlider.cpp index deaa1b03a1..694cda00c3 100644 --- a/src/apps/poorman/StatusSlider.cpp +++ b/src/apps/poorman/StatusSlider.cpp @@ -11,31 +11,19 @@ #include -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; } diff --git a/src/apps/poorman/StatusSlider.h b/src/apps/poorman/StatusSlider.h index b9003d7ccc..e7d0d27082 100644 --- a/src/apps/poorman/StatusSlider.h +++ b/src/apps/poorman/StatusSlider.h @@ -13,21 +13,21 @@ #include -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 diff --git a/src/bin/WindowShade.cpp b/src/bin/WindowShade.cpp index dcca8d2978..d8e29a64b1 100644 --- a/src/bin/WindowShade.cpp +++ b/src/bin/WindowShade.cpp @@ -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), diff --git a/src/kits/interface/ControlLook.cpp b/src/kits/interface/ControlLook.cpp index cc3e6869c1..a0d8a11ec8 100644 --- a/src/kits/interface/ControlLook.cpp +++ b/src/kits/interface/ControlLook.cpp @@ -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; diff --git a/src/kits/interface/InterfaceDefs.cpp b/src/kits/interface/InterfaceDefs.cpp index 1c53538c44..2a397a93a4 100644 --- a/src/kits/interface/InterfaceDefs.cpp +++ b/src/kits/interface/InterfaceDefs.cpp @@ -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 diff --git a/src/kits/interface/SpaceLayoutItem.cpp b/src/kits/interface/SpaceLayoutItem.cpp index ceadb8cf6e..a863780fe9 100644 --- a/src/kits/interface/SpaceLayoutItem.cpp +++ b/src/kits/interface/SpaceLayoutItem.cpp @@ -9,6 +9,7 @@ #include +#include #include @@ -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) { diff --git a/src/libs/compat/freebsd_network/Condvar.cpp b/src/libs/compat/freebsd_network/Condvar.cpp index c1343b3ce2..74499ef0cb 100644 --- a/src/libs/compat/freebsd_network/Condvar.cpp +++ b/src/libs/compat/freebsd_network/Condvar.cpp @@ -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); diff --git a/src/libs/compat/freebsd_network/callout.cpp b/src/libs/compat/freebsd_network/callout.cpp index f062da5824..1541580500 100644 --- a/src/libs/compat/freebsd_network/callout.cpp +++ b/src/libs/compat/freebsd_network/callout.cpp @@ -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; diff --git a/src/libs/compat/freebsd_network/clock.c b/src/libs/compat/freebsd_network/clock.c index aa3612c745..91a095429d 100644 --- a/src/libs/compat/freebsd_network/clock.c +++ b/src/libs/compat/freebsd_network/clock.c @@ -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; } diff --git a/src/libs/compat/freebsd_network/compat/sys/kernel.h b/src/libs/compat/freebsd_network/compat/sys/kernel.h index 6c8c545f7d..615b9f760d 100644 --- a/src/libs/compat/freebsd_network/compat/sys/kernel.h +++ b/src/libs/compat/freebsd_network/compat/sys/kernel.h @@ -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 *); diff --git a/src/libs/compat/freebsd_network/compat/sys/time.h b/src/libs/compat/freebsd_network/compat/sys/time.h index 1bbabb743a..4b061e3ad4 100644 --- a/src/libs/compat/freebsd_network/compat/sys/time.h +++ b/src/libs/compat/freebsd_network/compat/sys/time.h @@ -12,7 +12,7 @@ #include -#define time_uptime system_time() / 1000000 +#define time_uptime (system_time() / 1000000) int ppsratecheck(struct timeval*, int*, int); diff --git a/src/preferences/appearance/ColorSet.cpp b/src/preferences/appearance/ColorSet.cpp index 757f711d8a..ccd6728f18 100644 --- a/src/preferences/appearance/ColorSet.cpp +++ b/src/preferences/appearance/ColorSet.cpp @@ -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") }, diff --git a/src/preferences/appearance/ColorWhichItem.cpp b/src/preferences/appearance/ColorWhichItem.cpp index 23edda4f6d..7da8529d67 100644 --- a/src/preferences/appearance/ColorWhichItem.cpp +++ b/src/preferences/appearance/ColorWhichItem.cpp @@ -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