def _fill_rows_cols_sizes(self): cols, rows = self._cols, self._rows cols_sh, rows_sh = self._cols_sh, self._rows_sh cols_sh_min, rows_sh_min = self._cols_sh_min, self._rows_sh_min cols_sh_max, rows_sh_max = self._cols_sh_max, self._rows_sh_max self._cols_count = cols_count = [defaultdict(int) for _ in cols] # !! bottom-to-top, the opposite of the other attributes. self._rows_count = rows_count = [defaultdict(int) for _ in rows] # calculate minimum size for each columns and rows col_and_row_indices = self._col_and_row_indices has_bound_y = has_bound_x = False for i, opt in enumerate(self.view_opts): (shw, shh), (w, h) = opt['size_hint'], opt['size'] shw_min, shh_min = opt['size_hint_min'] shw_max, shh_max = opt['size_hint_max'] col, row = col_and_row_indices[i] if shw is None: cols_count[col][w] += 1 if shh is None: rows_count[row][h] += 1 # compute minimum size / maximum stretch needed if shw is None: cols[col] = nmax(cols[col], w) else: cols_sh[col] = nmax(cols_sh[col], shw) if shw_min is not None: has_bound_x = True cols_sh_min[col] = nmax(cols_sh_min[col], shw_min) if shw_max is not None: has_bound_x = True cols_sh_max[col] = nmin(cols_sh_max[col], shw_max) if shh is None: rows[row] = nmax(rows[row], h) else: rows_sh[row] = nmax(rows_sh[row], shh) if shh_min is not None: has_bound_y = True rows_sh_min[row] = nmax(rows_sh_min[row], shh_min) if shh_max is not None: has_bound_y = True rows_sh_max[row] = nmin(rows_sh_max[row], shh_max) self._has_hint_bound_x = has_bound_x self._has_hint_bound_y = has_bound_y
def _fill_rows_cols_sizes(self): cols, rows = self._cols, self._rows cols_sh, rows_sh = self._cols_sh, self._rows_sh cols_sh_min, rows_sh_min = self._cols_sh_min, self._rows_sh_min cols_sh_max, rows_sh_max = self._cols_sh_max, self._rows_sh_max self._cols_count = cols_count = [defaultdict(int) for _ in cols] self._rows_count = rows_count = [defaultdict(int) for _ in rows] # calculate minimum size for each columns and rows n_cols = len(cols) has_bound_y = has_bound_x = False for i, opt in enumerate(self.view_opts): (shw, shh), (w, h) = opt['size_hint'], opt['size'] shw_min, shh_min = opt['size_hint_min'] shw_max, shh_max = opt['size_hint_max'] row, col = divmod(i, n_cols) if shw is None: cols_count[col][w] += 1 if shh is None: rows_count[row][h] += 1 # compute minimum size / maximum stretch needed if shw is None: cols[col] = nmax(cols[col], w) else: cols_sh[col] = nmax(cols_sh[col], shw) if shw_min is not None: has_bound_x = True cols_sh_min[col] = nmax(cols_sh_min[col], shw_min) if shw_max is not None: has_bound_x = True cols_sh_max[col] = nmin(cols_sh_max[col], shw_max) if shh is None: rows[row] = nmax(rows[row], h) else: rows_sh[row] = nmax(rows_sh[row], shh) if shh_min is not None: has_bound_y = True rows_sh_min[row] = nmax(rows_sh_min[row], shh_min) if shh_max is not None: has_bound_y = True rows_sh_max[row] = nmin(rows_sh_max[row], shh_max) self._has_hint_bound_x = has_bound_x self._has_hint_bound_y = has_bound_y