def add_rect(self, rect, color=None, row=None, col=None, draggable_edge=True, draggable_corner=True, draggable_region=True, invisible_region=False, invisible_edge=False, invisible_corner=False): """ Add rectangle to object as another region """ rec_ps = [None] * 4 ulX, ulY = rect[0][0], rect[0][1] lrX, lrY = rect[1][0], rect[1][1] sr = SelectRegion(self, rect=[(ulX,ulY),(lrX,lrY)], draggable=draggable_region, invisible=invisible_region, color=color, row=row, col=col) self.regions.append(sr) # Add region self.add_part(sr) rec_ps[0] = (ulX, ulY) rec_ps[1] = (lrX, ulY) rec_ps[2] = (lrX, lrY) rec_ps[3] = (ulX, lrY) for pi1 in range(0, 3+1): pi2 = pi1 + 1 if pi2 >= len(rec_ps): pi2 = 0 # Ends at first pt1 = rec_ps[pi1] pt2 = rec_ps[pi2] self.add_edge(sr, pt1, pt2, draggable_edge=draggable_edge, draggable_corner=draggable_corner, invisible_edge=invisible_edge, invisible_corner=invisible_corner)
def add_rect(self, rect): """ Add rectangle to object as another region """ rec_ps = [None] * 4 ulX, ulY = rect[0][0], rect[0][1] lrX, lrY = rect[1][0], rect[1][1] sr = SelectRegion(rect=[(ulX, ulY), (lrX, lrY)]) # Just one region now self.regions.append(sr) # Add region self.add_part(sr) rec_ps[0] = (ulX, ulY) rec_ps[1] = (lrX, ulY) rec_ps[2] = (lrX, lrY) rec_ps[3] = (ulX, lrY) for pi1 in range(0, 3 + 1): pi2 = pi1 + 1 if pi2 >= len(rec_ps): pi2 = 0 # Ends at first pt1 = rec_ps[pi1] pt2 = rec_ps[pi2] self.add_edge(sr, pt1, pt2)
def set_figure_button(): global frame, sr, figure_new, sar global width, height, nx, ny global n_rearrange_cycles, rearrange_cycle SlTrace.lg("srtest Set Button", "button") ### if canvas is not None: ### SlTrace.lg("delete canvas") ### canvas.delete() ### canvas = None if frame is not None: SlTrace.lg("destroy frame", "destroy frame") frame.destroy() frame = None app.update_form() n_rearrange_cycles = app.get_current_val("arrange_number", 1) rearrange_cycle = 1 width = app.get_current_val("window_width", width) width = int(width) height = app.get_current_val("window_height", height) height = int(height) nx = app.get_current_val("figure_columns", nx) if nx == 0: new_nx = 1 SlTrace.lg("nx:%d is too low - set to %d" % (nx, new_nx), "adjust_size") nx = new_nx ny = app.get_current_val("figure_rows", ny) if ny == 0: new_ny = 1 SlTrace.lg("ny:%d is too low - set to %d" % (ny, new_ny), "adjust_size") ny = new_ny rects = [] rects_rows = [] # So we can pass row, col rects_cols = [] min_xlen = app.get_component_val("figure_size", "min", 10) min_xlen = float(min_xlen) min_xlen = str(min_xlen) min_ylen = min_xlen ###rects.append(rect1) ###rects.append(rect2) xmin = .1*float(width) xmax = .9*float(width) xlen = (xmax-xmin)/float(nx) min_xlen = float(min_xlen) if xlen < min_xlen: SlTrace.lg("xlen(%.0f) set to %.0f" % (xlen, min_xlen)) xlen = min_xlen ymin = .1*float(height) ymax = .9*float(height) ylen = (ymax-ymin)/float(ny) min_ylen = float(min_ylen) if ylen < min_ylen: SlTrace.lg("ylen(%.0f) set to %.0f" % (ylen, min_ylen)) ylen = min_ylen def rn(val): return int(round(val)) min_side = min(xlen, ylen) corner_width = max(min_side/15., 4) for i in range(int(nx)): col = i+1 x1 = xmin + i*xlen x2 = x1 + xlen for j in range(int(ny)): row = j+1 y1 = ymin + j*ylen y2 = y1 + ylen rect = ((rn(x1), rn(y1)), (rn(x2), rn(y2))) rects.append(rect) rects_rows.append(row) rects_cols.append(col) im = Image.new("RGB", (width, height)) frame = Frame(mw, width=width, height=height, bg="", colormap="new") frame.pack() canvas = Canvas(frame, width=width, height=height) canvas.pack() sr = SelectArea(canvas, image=im) color_spec = app.get_current_val("color_spec", default= "freq") color_prog = app.get_current_val("color_prog", default="ascend") color_min = None # Use internal defaults color_max = None ###if color_spec == "freq": ### color_min = app.get_component_val("color_value", "min", default=400) ### color_max = app.get_component_val("color_value", "max", default=700) reg_cc = SelectColor(ncolor=len(rects), spec=color_spec, prog=color_prog, cmin=color_min, cmax=color_max) SlTrace.lg("ncolor=%d" % len(rects), "get_color") SelectRegion.reset() for i, rect in enumerate(rects): row = rects_rows[i] col = rects_cols[i] col_rect = reg_cc.get_color() sr.add_rect(rect, color=col_rect, row=row, col=col) s_width = 20 for part in sr.get_parts(): if part.is_corner(): part.set(display_shape="circle", ###part.set(display_shape="dot", color="blue", edge_width_display=corner_width, edge_width_select=corner_width, edge_width_enlarge=corner_width*.1, ) elif part.is_edge(): part.set( edge_width_select=s_width, edge_width_enlarge=s_width*.1, ) sr.display() app.set_call("run", run_button) app.set_call("set", set_figure_button) app.set_call("pause", pause_button) app.set_call("step", step_button) app.set_call("step_down", step_down_button) if SlTrace.trace("step_button"): SlTrace.lg("color_spec: %s color_prog: %s color_min: %d color_max: %d") sar = SelectArrange(arc, sr, n_major_cycle = n_arrange, mw=mw) # Setup for color rearrangement figure_new = False