示例#1
0
void WBoxLayout::insertItem(int index, WLayoutItem *item, int stretch,
			    WFlags<AlignmentFlag> alignment)
{
  switch (direction_) {
  case RightToLeft:
    index = grid_.columns_.size() - index;
  case LeftToRight:
    grid_.columns_.insert(grid_.columns_.begin() + index,
			  Impl::Grid::Column(stretch));
    if (grid_.items_.empty()) {
      grid_.items_.push_back(std::vector<Impl::Grid::Item>());
      grid_.rows_.push_back(Impl::Grid::Row());
      grid_.rows_[0].stretch_ = -1; // make height managed
    }
    grid_.items_[0].insert(grid_.items_[0].begin() + index,
			   Impl::Grid::Item(item, alignment));
    break;
  case BottomToTop:
    index = grid_.rows_.size() - index;
  case TopToBottom:
    if (grid_.columns_.empty()) {
      grid_.columns_.push_back(Impl::Grid::Column());
      grid_.columns_[0].stretch_ = -1; // make width managed
    }
    grid_.rows_.insert(grid_.rows_.begin() + index,
		       Impl::Grid::Row(stretch));
    grid_.items_.insert(grid_.items_.begin() + index,
			std::vector<Impl::Grid::Item>());
    grid_.items_[index].push_back(Impl::Grid::Item(item, alignment));
    break;
  }

  updateAddItem(item);
}
示例#2
0
文件: WFitLayout.C 项目: LifeGo/wt
void WFitLayout::addItem(WLayoutItem *item)
{
  if (grid_.items_[0][0].item_) {
    LOG_ERROR("addItem(): already have a widget");
    return;
  }

  grid_.items_[0][0].item_ = item;

  updateAddItem(item);
}
示例#3
0
void WGridLayout::addItem(WLayoutItem *item, int row, int column,
			  int rowSpan, int columnSpan,
			  WFlags<AlignmentFlag> alignment)
{
  columnSpan = std::max(1, columnSpan);
  rowSpan = std::max(1, rowSpan);

  expand(row, column, rowSpan, columnSpan);

  Impl::Grid::Item& gridItem = grid_.items_[row][column];

  if (gridItem.item_) {
    WLayoutItem *oldItem = gridItem.item_;
    gridItem.item_ = 0;
    updateRemoveItem(oldItem);
  }

  gridItem.item_ = item;
  gridItem.rowSpan_ = rowSpan;
  gridItem.colSpan_ = columnSpan;
  gridItem.alignment_ = alignment;

  updateAddItem(item);
}