def make_symbols(): buf = "" x0 = y0 = 10 dx = dy = 35 ty = 17 n = 7 xsep = 15 ysep = 5 w = 2 * x0 + n * dx + (n - 1) * xsep print("w", w) tmpval = not (N % n) h = 2 * y0 + (1 + N // n - int(tmpval)) * (dy + ty + ysep) print("h", h) pform = xfl.fl_bgn_form(xfl.FL_FLAT_BOX, w, h) pobj0 = xfl.fl_add_button(xfl.FL_HIDDEN_BUTTON, 0, 0, w, h, "") xfl.fl_set_object_callback(pobj0, done_cb, 0) x = y = j = 0 for i in range(0, len(symbols)): if not symbols[i]: break if (i % n) == 0: x = x0 y = y0 + j * (dy + ty + ysep + 1) j += 1 else: x += dx + xsep pobj = xfl.fl_add_box(xfl.FL_UP_BOX, x, y, dx, dy, symbols[i]) xfl.fl_set_object_lcol(pobj, xfl.FL_BOTTOM_BCOL) buf = "@" + symbols[i] pboxobj = xfl.fl_add_box(xfl.FL_FLAT_BOX, x, y + dy, dx, ty, buf) txt_x, txt_y, txt_w, txt_h = xfl.fl_get_object_geometry(pboxobj) w = xfl.fl_get_string_width(xfl.fl_get_object_lstyle(pboxobj), \ xfl.fl_get_object_lsize(pboxobj), symbols[i], len(symbols[i])) \ + 2 * xfl.fl_get_object_bw(pboxobj) xfl.fl_set_object_geometry(pboxobj, txt_x + (txt_w - w) / 2, txt_y, \ w, txt_h) xfl.fl_end_form() return pform
def reset_callback(self, obj, data): g = self.gd[data] # FD_grav_data *g = (FD_grav_data * ) data xfl.fl_set_form_size(g.box.contents.form, self.w, self.h) xfl.fl_set_object_geometry(g.box, (self.w - self.bw) / 2, \ (self.h - self.bh) / 2, self.bw, self.bh)