За ефективно използване на който и да е GUI инструментариум, трябва да разберете неговия мениджър за оформление (или мениджър по геометрия). В Qt имате HBoxes и VBoxes, в Tk имате Packer и в Shoes имате стекове и потоци. Звучи загадъчно, но четете нататък - много е просто.
Един стек прави точно както подсказва името. Те подреждат нещата вертикално. Ако поставите три бутона в стека, те ще бъдат подредени вертикално, един върху друг. Ако ви изтече място в прозореца, лентата за превъртане ще се появи от дясната страна на прозореца, за да ви позволи да видите всички елементи в прозореца.
Обърнете внимание, че когато се казва, че бутоните са "вътре" в стека, това просто означава, че са създадени вътре в блока, предаден на стека метод. В този случай трите бутона се създават, докато вътрешността на блока премина към метода на стека, така че те са "вътре" на стека.
Поток опакова нещата хоризонтално. Ако вътре в потока се създадат три бутона, те ще се появят един до друг.
Има още едно важно нещо за разбиране на потоците. Ако ви липсва място хоризонтално, Shoes никога няма да създаде хоризонтална лента за превъртане. Вместо това, Shoes ще създаде елементите по-надолу в "следващия ред" на приложението. Това е като когато стигнете края на реда в текстов процесор. Текстовият процесор не създава лента за превъртане и ви позволява да продължавате да пишете от страницата, вместо това поставя думите на следващия ред.
Досега не сме дали никакви измерения при създаването на стекове и потоци; те просто са взели толкова място, колкото е необходимо. Въпреки това, размерите могат да бъдат дадени по същия начин, като размерите се дават на Shoes.app метод повикване. Този пример създава поток, който не е широк като прозореца и добавя бутони към него. На нея се дава и граничен стил, който визуално да идентифицира къде е потока.
От червената рамка можете да видите, че потокът не се простира до края на прозореца. Когато ще бъде създаден третият бутон, няма достатъчно място за него, така че Shoes се придвижва надолу към следващия ред.
Потоците и стековете не съдържат само визуалните елементи на приложение, те могат да съдържат и други потоци и стекове. Комбинирайки потоци и стекове, можете да създавате сложни оформления на визуални елементи с относителна лекота.
Ако сте уеб програмист, може да забележите, че това е много подобно на двигателя за оформление на CSS. Това е умишлено. Обувките са силно повлияни от мрежата. Всъщност един от основните визуални елементи в Shoes е „Link“ и дори можете да подреждате приложенията за обувки в „страници“.
В този пример се създава поток, съдържащ 3 стека. Това ще създаде оформление на 3 колони, като елементите във всяка колона ще бъдат показани вертикално (защото всяка колона е стек). Ширината на стековете не е пикселова ширина, както в предишните примери, а по-скоро 33%. Това означава, че всяка колона ще заеме 33% от наличното хоризонтално пространство в приложението.