History log of /haiku/src/libs/alm/ALMLayout.cpp
Revision Date Author Comments
# 779ab335 09-Dec-2020 X512 <danger_mail@list.ru>

use .IsSet() instead if .Get() != NULL

Change-Id: Ia2b7a719fd398e78cc3b11d4f7b02cb81179f65f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3488
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 6c4a44e3 31-Aug-2012 czeidler <haiku@clemens-zeidler.de>

Add a list of constraints which can be associated with a BALMLayout.

- Add Get{X,Y}Tabs methods.
- Remove SaveLayout and RestoreLayout. These can be implemented outside of BALMLayout.


# d10cb215 26-Apr-2012 Alex Wilson <yourpalal2@gmail.com>

in BALMLayout::DefaultPolicy, call printf instead of debugger.

This is more user friendly, debugger() was a bit drastic.


# df2ad520 01-Feb-2012 Alex Wilson <yourpalal2@gmail.com>

Archive more details about areas in BALMLayout.


# 0a5e1307 01-Feb-2012 Alex Wilson <yourpalal2@gmail.com>

Make SharedSolver BArchivable to save extra user constraints.


# 015e5f06 31-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Make BALMLayout::BadLayoutPolicy archivable.


# 35bf0b5c 31-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Add initial support for archiving a BALMLayout.

What's supported:
* basic archive/instantiate
* friend layouts
coming soon:
* saving of custom restraints
* archiving of BadLayoutPolicy


# bc7956c7 25-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Use const overloading on BALMLayout::{X|Y}TabAt().


# d7568eab 17-Mar-2012 czeidler <czei002@aucklanduni.ac.nz>

Add IndexOf methods.


# 35babcf0 19-Jan-2012 czeidler <haiku@clemens-zeidler.de>

Allow left and top tab to be NULL.


# 681f48fc 23-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Replace BALMLayout::Ordered*Tabs() method with *TabAt(int, bool sorted).


# 3ade12dd 22-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Make BALMLayout::BasePreferredSize() useful again.


# 09e87fa3 22-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Pass more information to BadLayoutPolicy.

Also, re-add BadLayoutPolicy invocations, which were lost while creating
SharedSolver.


# 82a09653 22-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Improve efficiency when validating an ALM layout.


# 419fe0b8 22-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Introduce SharedSolver class to improve BALMLayout's friend feature.


# a9761aed 18-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Refactor BALMLayout::AddItem to reduce repitition.


# 93977272 18-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

When adding tabs to a BALMLayout, ensure they are fully added.


# c761a8a6 18-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Let BALM::{X|Y}Tabs be in multiple BALMLayouts, if they are friendly.


# f9cabdd0 17-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Use BReferenceable properties of LinearSpec in BALMLayout.

This saves us from a potential use-afte-free bug.


# f6db102e 19-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Make BALMLayout respect its position when nested.


# 2bbf8b1f 17-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Add the ability to handle bad layouts to BALMLayout.


# 3479e516 17-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Compose spacing given to BALMLayout constructor.


# f0307e76 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Fix spacing before first header in src/libs/alm.

Also add copyright header in ALMGroup.cpp.


# 324ce285 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Add FBC padding to ALM classes.


# 7e021d45 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Make BALM::InsetForTab() methods const.


# 0da6f2e9 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Rename BALM::GroupItem to BALM::ALMGroup, and move it to its own files.

Also make ALMGroup totally self-contained, i.e. BALMLayout no longer
does the parsing, and is completely unaware of ALMGroup. A small touch
of refactoring as well.


# a25ffa4f 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Style cleanup in alm: mostly clean includes.


# d8145930 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Remove BALMLayout::Add*To* methods, which are availabe in the builder.


# b50d4ed8 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Add new methods to BALMLayout for adding multiple x/y tabs at once.


# 574533ef 15-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

In BALMLayout, make AddView(...) consistent with other layouts.

If a BView is added which has a BLayout, use the layout as a BLayoutItem
to represent that view, as other layouts do.


# 75e2dcf8 15-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

In BALMLayout, allow for more flexibility in spacing and insets.

* allow for independent left, top, right and bottom insets
* allow for independent vertical and horizontal spacing between tabs
* allow for the usage of Haiku's spacing constants such as B_USE_WINDOW_INSETS


# fefa17f4 11-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Remove unused 'PerformancePath' stuff.


# c3e57dc3 10-Jan-2012 czeidler <haiku@clemens-zeidler.de>

Give the area an id.


# b7630c4c 09-Jan-2012 czeidler <haiku@clemens-zeidler.de>

Save and restore layout.


# 8cfe0f45 07-Dec-2011 czeidler <haiku@clemens-zeidler.de>

When calculating the min, max and pref size, relax the range of the right and bottom tab. These tabs are set to the layout borders again when solving the layout.


# 57014d1f 29-Nov-2011 czeidler <haiku@clemens-zeidler.de>

Make tabs BReferenceable. Maintain a list of tabs.


# 17499672 22-Oct-2011 Alex Wilson <yourpalal2@gmail.com>

Bring BALMLayout in line with changes to BLayout.


# ef93b55d 13-Mar-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Areas with same tabs are put in a column/row automtically. Move preferred size constraint from Area to the column/row. This avoids a "spring" effect of the
quadratic solver if multiple Areas are in the same column/row.
- Replace GetString by ToString.
- some clean up



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40941 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7583db5a 24-Jan-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add an alternative solver to lp_solve. The solver based on Ingo's active set solver but is able to handle arbitrary hard and soft constraints. The advantage to lp_solve is that the active set solver can optimize variable in respect to a quadratic objective function. This makes it possible to minimise the quadratic derivation to a desired value e.g. \Sum_i(x_i - x_{i,pref})^2 -> min.

The solver part has been refactored in this way that both solver can be used with the same layout specifications. The active set solver is default now; the performance is not as good as lp_solve, though.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40285 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f108cdbf 13-Dec-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Merge all linear programming types in one file an rename them.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39832 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5440f6fe 13-Dec-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Refactor the linear programming class to use a minimal solver interface class and implement the interface for lp_solve. As a result lp_solve is not visible to the outside any more. This interface could be used to use other solvers as well. Rename operator constants to no clash with lp_solve constants.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39829 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 59c32631 29-Nov-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Replace new by new(std::nothrow).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39678 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8fa4fd37 25-Nov-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Keep the preferred size ratio into account. This make layout behaviour much more intuitive when resizing a window. Thanks Christof.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39641 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b23e9af5 21-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Thanks to anevilyak, the previous approach was not thread safe. You can specify a friend layout now if you want to connect tabs of different BALMLayout's.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39041 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 56187df6 21-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Use a global solver per application. This make it possible to wire different BALMLayout's.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39040 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c2f0a314 12-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Rename ReplaceObjectiveFunction to SwapObjectiveFunction I think this makes it more clear that the old function is not deleted.
Cleanup Jamfile.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38960 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fc691d7d 05-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Remove lp_solve dependencies form Variable class and put everything into LinearSpec. As a side effect Variable management is a bit more consistence now. We want to replace lp_solve soon so it will be easier to replace it just in LinearSpec.
- Update copyrights.
- Lot of small things related to the Variable refactoring.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38892 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cad0c434 04-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Refactor LinearSpec a bit, make it more difficult to leak the objective function.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38888 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6751b488 04-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix gcc2 build + warnings.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38885 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 37344020 03-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Add a alternative method to setup a group layout. BLayoutItem / BView are wrapped into a GroupItem. GroupItem overloads the | (horizontal tiling) and / (vertical tiling) operators. In this manner you can create a group layout using these operators, e.g. GroupItem item = GroupItem(button1) | (GroupItem(button2) / GroupItem(button3)); would layout button1 at the left and button2 and button3 at the right in a vertical layout. All the layout information is stored in the GroupItem item, to setup the final layout you have to call BuildLayout(item). If you like it it could also be added to the BGroupLayout.
- Add operator test app.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38877 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 70e20761 29-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Add helper functions to get the tabs of a view or a layout item.
- AddView only require the top, left tabs now.
- Remove the TwoViews test and replace it with a slightly more complex test.
- Merge XTab and YTab files into one header file.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38860 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5b6fca06 28-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Rework the ALM layout api. The AddItemTo* function are now related to the current Area. On default the current Area is the last added Area.
- Add some more const where appreciated.
- Fix some style issues and a leak in Row and Column.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38842 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 19ddd4f1 23-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

SetDefaultBehavior is not needed since all views handled in this function have min and max size equal the pref size (despite of the status bar length, which is ok). As a result they don't grow or shrink undesirable as assumed previously. As a result also the AutoPreferredContentSize is not needed.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38795 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 21f083af 23-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Implement all Add* function of the BLayout class properly. If the Add* functions of the BLayout class are called add the item to the right upper corner of the previous area. That is at least better than ignore this functions.
- Add more convenience AddViewTo{Right, Left, Top, Bottom} functions to add a item to the sides of an existing area.
- Need to add the Jamfile hack again to include the ViewLayoutItem.h header. I thing about to add the ALMLayout.* files to the interface dir when its a little bit more matured. Then the problem will be solved. Till I made a decision or somebody tell me its a bad idea to add the ALMLayout to the official interface stuff or the ViewLayoutItem.h should be in a shared header dir I will keep this hack.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38793 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 96e2013e 22-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add inset and spacing to BALMLayout. Each Area is able to overwrite this global values and use his own inset. Add spacing and inset to the tests.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38792 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9503cf19 22-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Don't pass a min size in the Area _Init function. The min size is updated before solving the layout so we don't have to set it in the beginning. This also simplifies the BALMLayout api.
- Header include style fixes.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38788 a95241bf-73f2-0310-859d-f6bbb57e9c96


# eb4dd1a2 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Clean up Area header a bit more and remove unused functions.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38780 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0871de7b 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

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


# 5f15562e 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Use the AlignInFrame BLayoutItem function to do the item alignment. The child area is not needed any more.
Don't leak the fConstraints list.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38775 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3a3c1d82 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Removed unused min, max, pref variables.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38774 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8d9b6ef4 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Rename BALMLayout.* file to ALMLayout.*.
- Fix some copyrights.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38771 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6c4a44e36ba846c54467103f884d65dfa13e7fcb 31-Aug-2012 czeidler <haiku@clemens-zeidler.de>

Add a list of constraints which can be associated with a BALMLayout.

- Add Get{X,Y}Tabs methods.
- Remove SaveLayout and RestoreLayout. These can be implemented outside of BALMLayout.


# d10cb215dc1f3812f4a7b3d59c94efc72d5706d1 26-Apr-2012 Alex Wilson <yourpalal2@gmail.com>

in BALMLayout::DefaultPolicy, call printf instead of debugger.

This is more user friendly, debugger() was a bit drastic.


# df2ad5204067ff611bc87a453aafa2f005c1e145 01-Feb-2012 Alex Wilson <yourpalal2@gmail.com>

Archive more details about areas in BALMLayout.


# 0a5e130725e2e8997bc0d9db9717f0a7874da8f3 01-Feb-2012 Alex Wilson <yourpalal2@gmail.com>

Make SharedSolver BArchivable to save extra user constraints.


# 015e5f06d8ef8f719a69ee03779ae30192b9e46b 31-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Make BALMLayout::BadLayoutPolicy archivable.


# 35bf0b5c1c5f89dac389efde9bcf19e880fa04e4 31-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Add initial support for archiving a BALMLayout.

What's supported:
* basic archive/instantiate
* friend layouts
coming soon:
* saving of custom restraints
* archiving of BadLayoutPolicy


# bc7956c7cf99bd57a7a1da96d08c71daa426b8b0 25-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Use const overloading on BALMLayout::{X|Y}TabAt().


# d7568eabd2d523e465efeb763e7644ea81af4ae7 17-Mar-2012 czeidler <czei002@aucklanduni.ac.nz>

Add IndexOf methods.


# 35babcf06de19176daff46ec7c5226bf10d989bf 19-Jan-2012 czeidler <haiku@clemens-zeidler.de>

Allow left and top tab to be NULL.


# 681f48fcbccfa556fe01eab457ca1d549736b19e 23-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Replace BALMLayout::Ordered*Tabs() method with *TabAt(int, bool sorted).


# 3ade12dd15a6bca049e0b24f9523d65d6ec70450 22-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Make BALMLayout::BasePreferredSize() useful again.


# 09e87fa352d105abd802b98ac6a842cb726d9d2d 22-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Pass more information to BadLayoutPolicy.

Also, re-add BadLayoutPolicy invocations, which were lost while creating
SharedSolver.


# 82a0965357f6e9d59ddd9f3d4b01af9590df404c 22-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Improve efficiency when validating an ALM layout.


# 419fe0b8ae0e16d798868eeebf0282978deb224d 22-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Introduce SharedSolver class to improve BALMLayout's friend feature.


# a9761aedbf6ec7f30c9b9d3521796b97c7029182 18-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Refactor BALMLayout::AddItem to reduce repitition.


# 93977272f4854e506ecfa0e007eae791415418d0 18-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

When adding tabs to a BALMLayout, ensure they are fully added.


# c761a8a6d40be981d18141bfc6eae56b168bcf52 18-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Let BALM::{X|Y}Tabs be in multiple BALMLayouts, if they are friendly.


# f9cabdd00949d006252087a791c5d458fbfb5291 17-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Use BReferenceable properties of LinearSpec in BALMLayout.

This saves us from a potential use-afte-free bug.


# f6db102e4762ea9b85e9de9add21f6e5adb5b99c 19-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Make BALMLayout respect its position when nested.


# 2bbf8b1fbce74bf6e72aa5f5a223de4948e67afc 17-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Add the ability to handle bad layouts to BALMLayout.


# 3479e516b76c6af5acd98fd7f4dda3732dde47fd 17-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Compose spacing given to BALMLayout constructor.


# f0307e765ed63a07ff0ad29df44b8d5d2f354acb 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Fix spacing before first header in src/libs/alm.

Also add copyright header in ALMGroup.cpp.


# 324ce2851d93d3f1311498517b4cc67fb3d9ebfd 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Add FBC padding to ALM classes.


# 7e021d45dad8e78bce48a81a5524ed6497715ba1 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Make BALM::InsetForTab() methods const.


# 0da6f2e916c5912ab5b2bd2d8aa271cf31a3300a 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Rename BALM::GroupItem to BALM::ALMGroup, and move it to its own files.

Also make ALMGroup totally self-contained, i.e. BALMLayout no longer
does the parsing, and is completely unaware of ALMGroup. A small touch
of refactoring as well.


# a25ffa4f046fb495c316d29f0645bd00c82751c8 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Style cleanup in alm: mostly clean includes.


# d814593064e55136518eb8d7749682ffb67f05cd 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Remove BALMLayout::Add*To* methods, which are availabe in the builder.


# b50d4ed8bd6368b5b72169c5ab92101d62a593d0 16-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Add new methods to BALMLayout for adding multiple x/y tabs at once.


# 574533ef124f30d7710ce46ade1ca5f05935e083 15-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

In BALMLayout, make AddView(...) consistent with other layouts.

If a BView is added which has a BLayout, use the layout as a BLayoutItem
to represent that view, as other layouts do.


# 75e2dcf8fe478ac43fecff5b72049fe500c804dc 15-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

In BALMLayout, allow for more flexibility in spacing and insets.

* allow for independent left, top, right and bottom insets
* allow for independent vertical and horizontal spacing between tabs
* allow for the usage of Haiku's spacing constants such as B_USE_WINDOW_INSETS


# fefa17f47eaee07bf273786495d7a7b7e9ee85b1 11-Jan-2012 Alex Wilson <yourpalal2@gmail.com>

Remove unused 'PerformancePath' stuff.


# c3e57dc36d5d18673ed9c49d9a3790091852fa0a 10-Jan-2012 czeidler <haiku@clemens-zeidler.de>

Give the area an id.


# b7630c4c985e7b351678608448aa1d61ec7ff6b5 09-Jan-2012 czeidler <haiku@clemens-zeidler.de>

Save and restore layout.


# 8cfe0f458c553fcc761d7c5a939d877ea6fcff8a 07-Dec-2011 czeidler <haiku@clemens-zeidler.de>

When calculating the min, max and pref size, relax the range of the right and bottom tab. These tabs are set to the layout borders again when solving the layout.


# 57014d1ff77c40a32732075f23a322c2ce32a4d7 29-Nov-2011 czeidler <haiku@clemens-zeidler.de>

Make tabs BReferenceable. Maintain a list of tabs.


# 17499672a049515fff0e536ab70f50d0d55833f1 22-Oct-2011 Alex Wilson <yourpalal2@gmail.com>

Bring BALMLayout in line with changes to BLayout.


# ef93b55df49f5296bdb03867215cb1793596e845 13-Mar-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Areas with same tabs are put in a column/row automtically. Move preferred size constraint from Area to the column/row. This avoids a "spring" effect of the
quadratic solver if multiple Areas are in the same column/row.
- Replace GetString by ToString.
- some clean up



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40941 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7583db5a1ec81636829331e5fc7cae81ca7a7ba7 24-Jan-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add an alternative solver to lp_solve. The solver based on Ingo's active set solver but is able to handle arbitrary hard and soft constraints. The advantage to lp_solve is that the active set solver can optimize variable in respect to a quadratic objective function. This makes it possible to minimise the quadratic derivation to a desired value e.g. \Sum_i(x_i - x_{i,pref})^2 -> min.

The solver part has been refactored in this way that both solver can be used with the same layout specifications. The active set solver is default now; the performance is not as good as lp_solve, though.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40285 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f108cdbfab0a9d2aed098ea7a737b40baec04937 13-Dec-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Merge all linear programming types in one file an rename them.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39832 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5440f6fee398073e8359b992a17b0943d39e6ff0 13-Dec-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Refactor the linear programming class to use a minimal solver interface class and implement the interface for lp_solve. As a result lp_solve is not visible to the outside any more. This interface could be used to use other solvers as well. Rename operator constants to no clash with lp_solve constants.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39829 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 59c3263165908e945b0b4df6626af8e95d69aded 29-Nov-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Replace new by new(std::nothrow).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39678 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8fa4fd37b76486e5baa22f594c883a7f94ce3c61 25-Nov-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Keep the preferred size ratio into account. This make layout behaviour much more intuitive when resizing a window. Thanks Christof.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39641 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b23e9af5b5e7d7e87b90ce5b1f9535332f7eb2e0 21-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Thanks to anevilyak, the previous approach was not thread safe. You can specify a friend layout now if you want to connect tabs of different BALMLayout's.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39041 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 56187df6ebd9d1fb16bf954fce8df0999e9e3048 21-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Use a global solver per application. This make it possible to wire different BALMLayout's.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39040 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c2f0a314a012bea8e4ebb35b8ce9e1a85c798727 12-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Rename ReplaceObjectiveFunction to SwapObjectiveFunction I think this makes it more clear that the old function is not deleted.
Cleanup Jamfile.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38960 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fc691d7de2182d23659b86d87c9c36b0feaa6b40 05-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Remove lp_solve dependencies form Variable class and put everything into LinearSpec. As a side effect Variable management is a bit more consistence now. We want to replace lp_solve soon so it will be easier to replace it just in LinearSpec.
- Update copyrights.
- Lot of small things related to the Variable refactoring.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38892 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cad0c434c7585bd21548499b2fcdf347c44b8074 04-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Refactor LinearSpec a bit, make it more difficult to leak the objective function.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38888 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6751b48834620dd17d380ec679a80fcbddf323af 04-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix gcc2 build + warnings.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38885 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 37344020ef592f58c61b7de8cd2c83dd31203aca 03-Oct-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Add a alternative method to setup a group layout. BLayoutItem / BView are wrapped into a GroupItem. GroupItem overloads the | (horizontal tiling) and / (vertical tiling) operators. In this manner you can create a group layout using these operators, e.g. GroupItem item = GroupItem(button1) | (GroupItem(button2) / GroupItem(button3)); would layout button1 at the left and button2 and button3 at the right in a vertical layout. All the layout information is stored in the GroupItem item, to setup the final layout you have to call BuildLayout(item). If you like it it could also be added to the BGroupLayout.
- Add operator test app.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38877 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 70e207613508fb5b562405c4edc33ddfe77fbfdf 29-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Add helper functions to get the tabs of a view or a layout item.
- AddView only require the top, left tabs now.
- Remove the TwoViews test and replace it with a slightly more complex test.
- Merge XTab and YTab files into one header file.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38860 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5b6fca06392320a9c32d542b519d8f4fe876aef2 28-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Rework the ALM layout api. The AddItemTo* function are now related to the current Area. On default the current Area is the last added Area.
- Add some more const where appreciated.
- Fix some style issues and a leak in Row and Column.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38842 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 19ddd4f1cbfa94c7ef0cd23c1de1f12077036a46 23-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

SetDefaultBehavior is not needed since all views handled in this function have min and max size equal the pref size (despite of the status bar length, which is ok). As a result they don't grow or shrink undesirable as assumed previously. As a result also the AutoPreferredContentSize is not needed.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38795 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 21f083af820b453b24eab10bb8134e2c0e48d0e4 23-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Implement all Add* function of the BLayout class properly. If the Add* functions of the BLayout class are called add the item to the right upper corner of the previous area. That is at least better than ignore this functions.
- Add more convenience AddViewTo{Right, Left, Top, Bottom} functions to add a item to the sides of an existing area.
- Need to add the Jamfile hack again to include the ViewLayoutItem.h header. I thing about to add the ALMLayout.* files to the interface dir when its a little bit more matured. Then the problem will be solved. Till I made a decision or somebody tell me its a bad idea to add the ALMLayout to the official interface stuff or the ViewLayoutItem.h should be in a shared header dir I will keep this hack.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38793 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 96e2013e70880101f5b2324ae73cb5b9bf88a972 22-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add inset and spacing to BALMLayout. Each Area is able to overwrite this global values and use his own inset. Add spacing and inset to the tests.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38792 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9503cf19be94b5a8297ecd73ab50e7acd92a98f6 22-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Don't pass a min size in the Area _Init function. The min size is updated before solving the layout so we don't have to set it in the beginning. This also simplifies the BALMLayout api.
- Header include style fixes.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38788 a95241bf-73f2-0310-859d-f6bbb57e9c96


# eb4dd1a2a9728c1b653cecc3d474d99548a30bab 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Clean up Area header a bit more and remove unused functions.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38780 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0871de7bdf1714ec860242852684e3acc9ba00cb 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

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


# 5f15562e7047a59ee579ee58a0d8ed3a72fcaa72 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Use the AlignInFrame BLayoutItem function to do the item alignment. The child area is not needed any more.
Don't leak the fConstraints list.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38775 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3a3c1d82225e8d82d3317548a8faf7aec13834e6 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Removed unused min, max, pref variables.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38774 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8d9b6ef4284d47e3bea44ba8c64e4e8c84be4e1a 21-Sep-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Rename BALMLayout.* file to ALMLayout.*.
- Fix some copyrights.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38771 a95241bf-73f2-0310-859d-f6bbb57e9c96