def render(self, is_lock): bimpy.set_next_tree_node_open(True, bimpy.Condition.FirstUseEver) if not bimpy.tree_node('convex points##convex_component'): return bimpy.same_line() bimpy_tools.help_marker('Convex points should be presented in counter-clockwise order') flags = bimpy.InputTextFlags.EnterReturnsTrue if is_lock: flags |= bimpy.InputTextFlags.ReadOnly last_convex_number_value = self._convex_number.value if bimpy.input_int('number##convex_component', self._convex_number, 1, 1, flags): self._convex_number.value = max(3, self._convex_number.value) if last_convex_number_value > self._convex_number.value: self._convex_data = self._convex_data[:self._convex_number.value] # cut back points else: self._convex_data.extend([ [bimpy.Float(0), bimpy.Float(0)] for _ in range(last_convex_number_value, self._convex_number.value) ]) # show convex value setting bimpy.set_next_tree_node_open(self._convex_number.value < 10, bimpy.Condition.FirstUseEver) if bimpy.tree_node('convex value ({})##convex_component'.format(self._convex_number.value)): for index in range(self._convex_number.value): bimpy.push_item_width(210) bimpy.input_float2( '{:<3d}'.format(index), self._convex_data[index][0], self._convex_data[index][1], flags=flags ) bimpy.pop_item_width() bimpy.tree_pop() # draw part bimpy.new_line() if bimpy.button('draw convex##convex_component') and not is_lock: self._convex_data_backup = [[item[0].value, item[1].value] for item in self._convex_data] self._convex_draw_flag = True self._convex_data = [] self._convex_number.value = 0 bimpy.tree_pop()
def render(self): bimpy.set_next_tree_node_open(True, bimpy.Condition.FirstUseEver) if not bimpy.tree_node('result##train_result_component'): return for item in ['loss', 'acc']: for name in self._measure_value: bimpy.text('{:<6} {:<6}: {:.8f}'.format( name, item, self._measure_value[name][item], )) bimpy.new_line() bimpy.tree_pop()
def render(self): bimpy.set_next_window_pos(bimpy.Vec2(765, 30), bimpy.Condition.FirstUseEver) bimpy.set_next_window_size(bimpy.Vec2(410, 750), bimpy.Condition.FirstUseEver) if not bimpy.begin('dash window'): # open fail bimpy.end() return is_lock = any([ self.train_phase_component.if_is_trainning(), self.lines_componnet.if_is_drawing(), self.convex_component.if_is_drawing(), ]) # dash board if bimpy.collapsing_header('convex setting', bimpy.TreeNodeFlags.DefaultOpen): self.convex_component.render(is_lock) bimpy.new_line() if bimpy.collapsing_header('train setting', bimpy.TreeNodeFlags.DefaultOpen): self.lines_componnet.render(is_lock) bimpy.new_line() self.generator_component.render(is_lock) bimpy.new_line() self.optimizer_component.render(is_lock) bimpy.new_line() self.loss_function_component.render(is_lock) bimpy.new_line() self.train_component.render(is_lock) bimpy.new_line() if bimpy.collapsing_header('train phase', bimpy.TreeNodeFlags.DefaultOpen): self.train_phase_component.render(self._is_tranning_runner_running) bimpy.new_line() self.train_result_component.render() bimpy.new_line() # padding for _ in range(5): bimpy.new_line() # trainning runner if self.train_phase_component.if_is_trainning_start(): self.trainning_runner = TrainningRunner() line_data = self.lines_componnet.get_line_data() self.trainning_runner.create_net(width=len(line_data)) self.trainning_runner.set_net_value(line_data) generator = self.generator_component.build_generator() generator.set_data( raw_points=[], convex_points=self.convex_component.get_convex_data()) self.trainning_runner.set_generator(generator) self.trainning_runner.set_optimizer( self.optimizer_component.build_optimizer( self.trainning_runner.get_net())) self.trainning_runner.set_loss_function( self.loss_function_component.build_loss_function()) self.trainning_runner.set_trainning_params( self.train_component.get_train_setting()) self._is_tranning_runner_running = True self.trainning_runner.start() # if self.train_phase_component.if_is_trainning(): if self._is_tranning_runner_running: # self.trainning_runner.run_once() line_data = self.trainning_runner.get_net_value() self.lines_componnet.set_line_data(line_data) # if self.trainning_runner is not None: self.train_phase_component.set_trainning_progress( self.trainning_runner.get_trainning_progress()) self.train_result_component.set_trainning_result( self.trainning_runner.get_tranning_result()) if self.train_phase_component.if_is_trainning_stop(): self.trainning_runner.try_to_stop() if self._is_tranning_runner_running: self.trainning_runner.join(1e-2) self._is_tranning_runner_running = self.trainning_runner.is_alive() bimpy.end()
def render(self, is_lock): bimpy.set_next_tree_node_open(True, bimpy.Condition.FirstUseEver) if not bimpy.tree_node('lines##lines_component'): return # number setting flags = bimpy.InputTextFlags.EnterReturnsTrue if is_lock: flags |= bimpy.InputTextFlags.ReadOnly if bimpy.input_int('number##lines_component', self._line_number, 1, 1, flags): self._line_number.value = max(3, self._line_number.value) if self._last_line_number_value > self._line_number.value: self._line_data = self._line_data[:self._line_number.value] # cut back points else: self._line_data.extend([ [bimpy.Float(0), bimpy.Float(0), bimpy.Float(0)] for _ in range(self._last_line_number_value, self._line_number.value) ]) self._last_line_number_value = self._line_number.value # print('line number change to {}'.format(self._line_number.value)) # show line value setting bimpy.set_next_tree_node_open(self._line_number.value < 10, bimpy.Condition.FirstUseEver) self._highlight_line_index = None if bimpy.tree_node('line value ({})'.format(self._line_number.value)): for index in range(self._line_number.value): bimpy.push_item_width(210) bimpy.input_float3( '{:<3d}'.format(index), self._line_data[index][0], self._line_data[index][1], self._line_data[index][2], flags=flags ) bimpy.pop_item_width() if bimpy.is_item_hovered(): self._highlight_line_index = index bimpy.same_line() if bimpy.button('rev##lines_component{}'.format(index)) and not is_lock: for j in range(3): self._line_data[index][j].value = -self._line_data[index][j].value if bimpy.is_item_hovered(): self._highlight_line_index = index bimpy.same_line() if bimpy.button('draw##lines_component{}'.format(index)) and not is_lock: self._waitting_draw_line_index = index bimpy.set_window_focus('canvas window##canvas') if bimpy.is_item_hovered(): self._highlight_line_index = index bimpy.tree_pop() # random setting bimpy.new_line() if bimpy.button('random##lines_component') and not is_lock: initializer = self.initializer_component.build_initializer() random_lines = initializer.random(self._line_number.value) for index in range(self._line_number.value): self._line_data[index][0].value = random_lines[index].a self._line_data[index][1].value = random_lines[index].b self._line_data[index][2].value = random_lines[index].c self.initializer_component.render(is_lock) bimpy.tree_pop()
def draw_gui(self, config_server): frames = [] if bimpy.button("Load Profile"): with open('config.txt', 'r') as f: lines = f.readlines() for index, server in enumerate(servers): items = lines[index].split(' ') server.orientation = int(items[0]) server.process = int(items[1]) bimpy.same_line() if bimpy.button("Save Profile"): with open('config.txt', 'w') as f: for server in servers: f.write('%d %d\n' % (server.orientation, server.process)) bimpy.same_line() if bimpy.button("Identify"): self.identify = not self.identify bimpy.same_line() if bimpy.button("Print ports"): print(available_ports) bimpy.slider_float("Min Aspect Ratio", self.min_aspect_ratio, 0.0, 10.0) bimpy.new_line() for server in servers: bimpy.slider_float("Stream Width %d" % server.cam_id, server.stream_width, 0, 640) bimpy.slider_float("Stream Height %d" % server.cam_id, server.stream_height, 0, 480) if bimpy.button("Update %d" % server.cam_id): server.update_settings() bimpy.same_line() if bimpy.button("Add Processing %d" % server.cam_id): server.process = True bimpy.same_line() if bimpy.button("Remove Processing %d" % server.cam_id): server.process = False if bimpy.button("Rotate 90 %d" % server.cam_id): server.orientation += 90 bimpy.same_line() if bimpy.button("Rotate -90 %d" % server.cam_id): server.orientation -= 90 bimpy.same_line() if bimpy.button("Rotate 180 %d" % server.cam_id): server.orientation += 180 ''' if bimpy.button("V+ %d" % server.cam_id): server.V += 1 bimpy.same_line() if bimpy.button("V- %d" % server.cam_id): server.V -= 1 bimpy.same_line() if bimpy.button("H+ %d" % server.cam_id): server.H += 1 bimpy.same_line() if bimpy.button("H- %d" % server.cam_id): server.H -= 1 ''' bimpy.new_line() bimpy.new_line()
if bimpy.button("Forward", bimpy.Vec2(140,80)): move_forward() bimpy.next_column() bimpy.next_column() if bimpy.button("Left", bimpy.Vec2(140,80)): turn_left() bimpy.next_column() bimpy.next_column() if bimpy.button("Right", bimpy.Vec2(140,80)): turn_right() bimpy.next_column() bimpy.next_column() if bimpy.button("Back", bimpy.Vec2(140,80)): move_backwards() bimpy.columns(1) bimpy.new_line() if bimpy.button("Spin Me", bimpy.Vec2(150,50)): spinMe() bimpy.end() # setup the 3rd window bimpy.set_next_window_pos(bimpy.Vec2(800, 460), bimpy.Condition.Once) bimpy.set_next_window_size(bimpy.Vec2(winWidth - 820, winHeight-480), bimpy.Condition.Once) bimpy.begin("Window Settings", flags=bimpy.NoMove | bimpy.NoCollapse) bimpy.text("Borders") #bimpy.checkbox("horizontal", borders_horizontal) #bimpy.same_line() #bimpy.checkbox("vertical", borders_vertical) bimpy.end() bimpy.show_demo_window() # render the context window