From 0871de7bdf1714ec860242852684e3acc9ba00cb Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Wed, 22 Sep 2010 05:29:50 +0000 Subject: [PATCH] Remove unsupported reverse engineering feature. Further clean up. Also remove LayoutStyle feature because resizing the parent view might not be a good idea. If the parent view should be resized you should better but it into a BLayout too. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38779 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/libs/alm/ALMLayout.h | 19 +--- headers/libs/alm/LayoutStyleType.h | 26 ----- src/libs/alm/ALMLayout.cpp | 168 +++++++++-------------------- 3 files changed, 58 insertions(+), 155 deletions(-) delete mode 100644 headers/libs/alm/LayoutStyleType.h diff --git a/headers/libs/alm/ALMLayout.h b/headers/libs/alm/ALMLayout.h index e5376889ce..f1a863eff0 100644 --- a/headers/libs/alm/ALMLayout.h +++ b/headers/libs/alm/ALMLayout.h @@ -14,7 +14,6 @@ #include "Area.h" #include "Column.h" -#include "LayoutStyleType.h" #include "LinearSpec.h" #include "Row.h" #include "XTab.h" @@ -31,8 +30,6 @@ public: BALMLayout(); virtual ~BALMLayout(); - void SolveLayout(); - XTab* AddXTab(); YTab* AddYTab(); Row* AddRow(); @@ -54,11 +51,6 @@ public: XTab* Right() const; YTab* Top() const; YTab* Bottom() const; - - void RecoverLayout(BView* parent); - - LayoutStyleType LayoutStyle() const; - void SetLayoutStyle(LayoutStyleType style); virtual BSize BaseMinSize(); virtual BSize BaseMaxSize(); @@ -77,16 +69,15 @@ public: LinearSpec* Solver(); private: + void _SolveLayout(); + Area* _AreaForItem(BLayoutItem* item) const; void _UpdateAreaConstraints(); - BSize CalculateMinSize(); - BSize CalculateMaxSize(); - BSize CalculatePreferredSize(); + BSize _CalculateMinSize(); + BSize _CalculateMaxSize(); + BSize _CalculatePreferredSize(); -private: - LayoutStyleType fLayoutStyle; - bool fActivated; LinearSpec fSolver; diff --git a/headers/libs/alm/LayoutStyleType.h b/headers/libs/alm/LayoutStyleType.h deleted file mode 100644 index 5c50904ad8..0000000000 --- a/headers/libs/alm/LayoutStyleType.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2007-2008, Christof Lutteroth, lutteroth@cs.auckland.ac.nz - * Copyright 2007-2008, James Kim, jkim202@ec.auckland.ac.nz - * Distributed under the terms of the MIT License. - */ - -#ifndef LAYOUT_STYLE_TYPE_H -#define LAYOUT_STYLE_TYPE_H - - -namespace BALM { - -/** - * The possibilities for adjusting a GUI's layout. - * Either change the child controls so that they fit into their parent control, or adjust - * the size of the parent control so that the children have as much space as they want. - */ -enum LayoutStyleType { - FIT_TO_SIZE, ADJUST_SIZE -}; - -} // namespace BALM - -using BALM::LayoutStyleType; - -#endif diff --git a/src/libs/alm/ALMLayout.cpp b/src/libs/alm/ALMLayout.cpp index 786ad1a6c8..57008836b2 100644 --- a/src/libs/alm/ALMLayout.cpp +++ b/src/libs/alm/ALMLayout.cpp @@ -31,9 +31,6 @@ BALMLayout::BALMLayout() : BAbstractLayout() { - fLayoutStyle = FIT_TO_SIZE; - fActivated = true; - fLeft = new XTab(&fSolver); fRight = new XTab(&fSolver); fTop = new YTab(&fSolver); @@ -59,47 +56,6 @@ BALMLayout::~BALMLayout() } -/** - * Solves the layout. - */ -void -BALMLayout::SolveLayout() -{ - // if autoPreferredContentSize is set on an area, - // readjust its preferredContentSize and penalties settings - for (int32 i = 0; i < CountItems(); i++) { - Area* currentArea = _AreaForItem(ItemAt(i)); - if (currentArea && currentArea->AutoPreferredContentSize()) - currentArea->SetDefaultBehavior(); - } - - // Try to solve the layout until the result is OPTIMAL or INFEASIBLE, - // maximally 15 tries sometimes the solving algorithm encounters numerical - // problems (NUMFAILURE), and repeating the solving often helps to overcome - // them. - BFile* file = NULL; - if (fPerformancePath != NULL) { - file = new BFile(fPerformancePath, - B_READ_WRITE | B_CREATE_FILE | B_OPEN_AT_END); - } - - ResultType result; - for (int32 tries = 0; tries < 15; tries++) { - result = fSolver.Solve(); - if (fPerformancePath != NULL) { - /*char buffer [100]; - file->Write(buffer, sprintf(buffer, "%d\t%fms\t#vars=%ld\t" - "#constraints=%ld\n", result, fSolver.SolvingTime(), - fSolver.Variables()->CountItems(), - fSolver.Constraints()->CountItems()));*/ - } - if (result == OPTIMAL || result == INFEASIBLE) - break; - } - delete file; -} - - /** * Adds a new x-tab to the specification. * @@ -338,41 +294,13 @@ BALMLayout::Bottom() const } -/** - * Reverse engineers a GUI and recovers an ALM specification. - * @param parent the parent container of the GUI - */ -void -BALMLayout::RecoverLayout(BView* parent) {} // Still working on it. - - -/** - * Gets the current layout style. - */ -LayoutStyleType -BALMLayout::LayoutStyle() const -{ - return fLayoutStyle; -} - - -/** - * Sets the current layout style. - */ -void -BALMLayout::SetLayoutStyle(LayoutStyleType style) -{ - fLayoutStyle = style; -} - - /** * Gets minimum size. */ BSize BALMLayout::BaseMinSize() { if (fMinSize == kUnsetSize) - fMinSize = CalculateMinSize(); + fMinSize = _CalculateMinSize(); return fMinSize; } @@ -384,7 +312,7 @@ BSize BALMLayout::BaseMaxSize() { if (fMaxSize == kUnsetSize) - fMaxSize = CalculateMaxSize(); + fMaxSize = _CalculateMaxSize(); return fMaxSize; } @@ -396,7 +324,7 @@ BSize BALMLayout::BasePreferredSize() { if (fPreferredSize == kUnsetSize) - fPreferredSize = CalculatePreferredSize(); + fPreferredSize = _CalculatePreferredSize(); return fPreferredSize; } @@ -453,37 +381,18 @@ BALMLayout::ItemRemoved(BLayoutItem* item, int32 fromIndex) void BALMLayout::DerivedLayoutItems() { - // TODO: modify to allow for viewlessness - // make sure that layout events occuring during layout are ignored - // i.e. activated is set to false during layout calculation - if (!fActivated) - return; - fActivated = false; - - if (Owner() == NULL) - return; - _UpdateAreaConstraints(); - // reverse engineer a layout specification if none was given - //~ if (this == NULL) RecoverLayout(View()); + // Enforced absolute positions of Right and Bottom + BRect area(LayoutArea()); + Right()->SetRange(area.right, area.right); + Bottom()->SetRange(area.bottom, area.bottom); - // if the layout engine is set to fit the GUI to the given size, - // then the given size is enforced by setting absolute positions - // for Right and Bottom - if (fLayoutStyle == FIT_TO_SIZE) { - BRect area(LayoutArea()); - Right()->SetRange(area.right, area.right); - Bottom()->SetRange(area.bottom, area.bottom); - } - - SolveLayout(); + _SolveLayout(); // if new layout is infasible, use previous layout - if (fSolver.Result() == INFEASIBLE) { - fActivated = true; // now layout calculation is allowed to run again + if (fSolver.Result() == INFEASIBLE) return; - } if (fSolver.Result() != OPTIMAL) { fSolver.Save("failed-layout.txt"); @@ -492,18 +401,9 @@ BALMLayout::DerivedLayoutItems() printf("Saved specification in file failed-layout.txt\n"); } - // change the size of the GUI according to the calculated size - // if the layout engine was configured to do so - if (fLayoutStyle == ADJUST_SIZE) { - Owner()->ResizeTo(floor(Right()->Value() - Left()->Value() + 0.5), - floor(Bottom()->Value() - Top()->Value() + 0.5)); - } - // set the calculated positions and sizes for every area for (int32 i = 0; i < CountItems(); i++) _AreaForItem(ItemAt(i))->DoLayout(); - - fActivated = true; } @@ -538,11 +438,49 @@ BALMLayout::Solver() } +void +BALMLayout::_SolveLayout() +{ + // if autoPreferredContentSize is set on an area, + // readjust its preferredContentSize and penalties settings + for (int32 i = 0; i < CountItems(); i++) { + Area* currentArea = _AreaForItem(ItemAt(i)); + if (currentArea && currentArea->AutoPreferredContentSize()) + currentArea->SetDefaultBehavior(); + } + + // Try to solve the layout until the result is OPTIMAL or INFEASIBLE, + // maximally 15 tries sometimes the solving algorithm encounters numerical + // problems (NUMFAILURE), and repeating the solving often helps to overcome + // them. + BFile* file = NULL; + if (fPerformancePath != NULL) { + file = new BFile(fPerformancePath, + B_READ_WRITE | B_CREATE_FILE | B_OPEN_AT_END); + } + + ResultType result; + for (int32 tries = 0; tries < 15; tries++) { + result = fSolver.Solve(); + if (fPerformancePath != NULL) { + /*char buffer [100]; + file->Write(buffer, sprintf(buffer, "%d\t%fms\t#vars=%ld\t" + "#constraints=%ld\n", result, fSolver.SolvingTime(), + fSolver.Variables()->CountItems(), + fSolver.Constraints()->CountItems()));*/ + } + if (result == OPTIMAL || result == INFEASIBLE) + break; + } + delete file; +} + + /** * Caculates the miminum size. */ BSize -BALMLayout::CalculateMinSize() +BALMLayout::_CalculateMinSize() { _UpdateAreaConstraints(); @@ -551,7 +489,7 @@ BALMLayout::CalculateMinSize() newObjFunction->AddItem(new Summand(1.0, fRight)); newObjFunction->AddItem(new Summand(1.0, fBottom)); fSolver.SetObjFunction(newObjFunction); - SolveLayout(); + _SolveLayout(); fSolver.SetObjFunction(oldObjFunction); fSolver.UpdateObjFunction(); delete newObjFunction->ItemAt(0); @@ -575,7 +513,7 @@ BALMLayout::CalculateMinSize() * Caculates the maximum size. */ BSize -BALMLayout::CalculateMaxSize() +BALMLayout::_CalculateMaxSize() { _UpdateAreaConstraints(); @@ -584,7 +522,7 @@ BALMLayout::CalculateMaxSize() newObjFunction->AddItem(new Summand(-1.0, fRight)); newObjFunction->AddItem(new Summand(-1.0, fBottom)); fSolver.SetObjFunction(newObjFunction); - SolveLayout(); + _SolveLayout(); fSolver.SetObjFunction(oldObjFunction); fSolver.UpdateObjFunction(); delete newObjFunction->ItemAt(0); @@ -608,11 +546,11 @@ BALMLayout::CalculateMaxSize() * Caculates the preferred size. */ BSize -BALMLayout::CalculatePreferredSize() +BALMLayout::_CalculatePreferredSize() { _UpdateAreaConstraints(); - SolveLayout(); + _SolveLayout(); if (fSolver.Result() != OPTIMAL) { fSolver.Save("failed-layout.txt"); printf("Could not solve the layout specification (%d). "