def on_gui(self): # --------------------------------------------------- # Scene Hierarchy # --------------------------------------------------- imgui.begin("Scene Hierarchy") # draw all entities for entity in self.scene: self._draw_entity_node(entity) # clear selection if imgui.is_mouse_down(0) and imgui.is_window_hovered(): self.selected_entity = None # create new entity if imgui.begin_popup_context_window(): if menu_item_clicked("Create Empty Entity"): self.scene.create_entity("Empty Entity") imgui.end_popup() imgui.end() # --------------------------------------------------- # Properties # --------------------------------------------------- imgui.begin("Properties") if self.selected_entity: self._draw_entity_components(self.selected_entity) imgui.end()
def draw(self): imgui.new_frame() imgui.set_next_window_position(16, 32, imgui.ONCE) imgui.set_next_window_size(512, 512, imgui.ONCE) imgui.begin("Example: popup context window") if imgui.begin_popup_context_window(mouse_button=0): imgui.selectable("Clear") imgui.end_popup() imgui.end() imgui.end_frame() imgui.render() self.renderer.render(imgui.get_draw_data())
def draw(self): imgui.begin("Example: popup context window") if imgui.begin_popup_context_window(): imgui.selectable("Clear") imgui.end_popup() imgui.end()
def draw(imgui) -> None: global show_sendable_debug global show_demo global active_widgets if imgui.begin_main_menu_bar(): if imgui.begin_menu("Help"): clicked, _ = imgui.menu_item( "Hide Demo" if show_demo else "Show Demo") if clicked: show_demo = not show_demo imgui.end_menu() imgui.end_main_menu_bar() if show_demo: imgui.show_test_window() if imgui.begin('All Entries'): if imgui.begin_popup_context_window(): clicked, do_debug = imgui.checkbox('Show Chooser Debug Info', show_sendable_debug) if clicked: show_sendable_debug = do_debug imgui.end_popup() def table_tree(table: EntryGroup): for key, entry in table.items(): if isinstance(entry, NetworkTableEntry): imgui.text(entry_name(key) + ': ' + str(entry.value)) imgui.same_line() imgui.push_id(key) if imgui.button('Add'): active_widgets[key] = Widget(entry) imgui.pop_id() else: t = NetworkTables.getTable(key) if '.type' in t.getKeys(): name = t.getString('.name', '') imgui.text(name) imgui.same_line() imgui.push_id(key) if imgui.button('Add'): active_widgets[key] = Widget(t, EntryType.Chooser) imgui.pop_id() if show_sendable_debug: if imgui.tree_node('Chooser Debug (' + key + ')'): table_tree(entry) imgui.tree_pop() elif imgui.tree_node(entry_name(key), imgui.TREE_NODE_DEFAULT_OPEN): # nothing fancy, just a subtable table_tree(entry) imgui.tree_pop() entries = buildList( sorted(NetworkTables.getEntries('', 0), key=lambda e: e.getName())) table_tree(entries) imgui.end() to_close: List[str] = [] for key, widget in active_widgets.items(): expanded, opened = imgui.begin(entry_name(key), True) if not opened: to_close.append(key) if ((widget.tipe.is_entry() and widget.entry is None) or (not widget.tipe.is_entry() and widget.table is None)): imgui.text_colored('WARNING! Disconnected!', 1, 0, 0) imgui.end() continue if widget.tipe == EntryType.Boolean: assert widget.entry is not None if widget.show_indicator: imgui.push_item_width(-1) r, g, b = (0, 1, 0) if widget.entry.value else (1, 0, 0) imgui.color_button(key + '/indicator', r, g, b, width=imgui.get_window_width(), height=100) clicked, new_val = imgui.checkbox('on', widget.entry.value) if clicked: widget.entry.setValue(new_val) elif widget.tipe == EntryType.Double: assert widget.entry is not None val = str(widget.entry.getDouble(0)) changed, new_val = imgui.input_text('', val, 64, imgui.INPUT_TEXT_CHARS_DECIMAL) if changed: try: widget.entry.setDouble(float(new_val)) except ValueError: pass elif widget.tipe == EntryType.String: assert widget.entry is not None changed, new_val = imgui.input_text('', widget.entry.getString(''), 256) if changed: widget.entry.setString(new_val) elif widget.tipe == EntryType.Chooser: assert widget.table is not None values = widget.table.getStringArray('options', []) try: selected = values.index(widget.table.getString('active', '')) except ValueError: selected = 0 changed, current = imgui.combo('', selected, values) if changed: widget.table.putString('active', values[current]) else: try: assert widget.entry is not None imgui.text(str(widget.entry.value)) except AttributeError: imgui.text('Could not view contents.') if imgui.begin_popup_context_window(): if widget.tipe == EntryType.Boolean: clicked, new_val = imgui.checkbox('Show Indicator', widget.show_indicator) if clicked: widget.show_indicator = new_val imgui.end_popup() # imgui.button('Options') imgui.end() for key in to_close: active_widgets.pop(key)
def frame_commands(): io = imgui.get_io() if io.key_ctrl and io.keys_down[glfw.KEY_Q]: sys.exit(0) with imgui.begin_main_menu_bar() as main_menu_bar: if main_menu_bar.opened: with imgui.begin_menu("File", True) as file_menu: if file_menu.opened: clicked_quit, selected_quit = imgui.menu_item( "Quit", "Ctrl+Q") if clicked_quit: sys.exit(0) # turn examples on/off with imgui.begin("Active examples"): for label, enabled in active.copy().items(): _, enabled = imgui.checkbox(label, enabled) active[label] = enabled if active["window"]: with imgui.begin("Hello, Imgui!"): imgui.text("Hello, World!") if active["child"]: with imgui.begin("Example: child region"): with imgui.begin_child("region", 150, -50, border=True): imgui.text("inside region") imgui.text("outside region") if active["tooltip"]: with imgui.begin("Example: tooltip"): imgui.button("Click me!") if imgui.is_item_hovered(): with imgui.begin_tooltip(): imgui.text("This button is clickable.") if active["menu bar"]: try: flags = imgui.WINDOW_MENU_BAR with imgui.begin("Child Window - File Browser", flags=flags): with imgui.begin_menu_bar() as menu_bar: if menu_bar.opened: with imgui.begin_menu('File') as file_menu: if file_menu.opened: clicked, state = imgui.menu_item('Close') if clicked: active["menu bar"] = False raise Exception except Exception: print("exception handled") if active["popup"]: with imgui.begin("Example: simple popup"): if imgui.button("select"): imgui.open_popup("select-popup") imgui.same_line() with imgui.begin_popup("select-popup") as popup: if popup.opened: imgui.text("Select one") imgui.separator() imgui.selectable("One") imgui.selectable("Two") imgui.selectable("Three") if active["popup modal"]: with imgui.begin("Example: simple popup modal"): if imgui.button("Open Modal popup"): imgui.open_popup("select-popup-modal") imgui.same_line() with imgui.begin_popup_modal("select-popup-modal") as popup: if popup.opened: imgui.text("Select an option:") imgui.separator() imgui.selectable("One") imgui.selectable("Two") imgui.selectable("Three") if active["popup context item"]: with imgui.begin("Example: popup context view"): imgui.text("Right-click to set value.") with imgui.begin_popup_context_item("Item Context Menu") as popup: if popup.opened: imgui.selectable("Set to Zero") if active["popup context window"]: with imgui.begin("Example: popup context window"): with imgui.begin_popup_context_window() as popup: if popup.opened: imgui.selectable("Clear") if active["popup context void"]: with imgui.begin_popup_context_void() as popup: if popup.opened: imgui.selectable("Clear") if active["drag drop"]: with imgui.begin("Example: drag and drop"): imgui.button('source') with imgui.begin_drag_drop_source() as src: if src.dragging: imgui.set_drag_drop_payload('itemtype', b'payload') imgui.button('dragged source') imgui.button('dest') with imgui.begin_drag_drop_target() as dst: if dst.hovered: payload = imgui.accept_drag_drop_payload('itemtype') if payload is not None: print('Received:', payload) if active["group"]: with imgui.begin("Example: item groups"): with imgui.begin_group(): imgui.text("First group (buttons):") imgui.button("Button A") imgui.button("Button B") imgui.same_line(spacing=50) with imgui.begin_group(): imgui.text("Second group (text and bullet texts):") imgui.bullet_text("Bullet A") imgui.bullet_text("Bullet B") if active["tab bar"]: with imgui.begin("Example Tab Bar"): with imgui.begin_tab_bar("MyTabBar") as tab_bar: if tab_bar.opened: with imgui.begin_tab_item("Item 1") as item1: if item1.opened: imgui.text("Here is the tab content!") with imgui.begin_tab_item("Item 2") as item2: if item2.opened: imgui.text("Another content...") global opened_state with imgui.begin_tab_item("Item 3", opened=opened_state) as item3: opened_state = item3.opened if item3.selected: imgui.text("Hello Saylor!") if active["list box"]: with imgui.begin("Example: custom listbox"): with imgui.begin_list_box("List", 200, 100) as list_box: if list_box.opened: imgui.selectable("Selected", True) imgui.selectable("Not Selected", False) if active["table"]: with imgui.begin("Example: table"): with imgui.begin_table("data", 2) as table: if table.opened: imgui.table_next_column() imgui.table_header("A") imgui.table_next_column() imgui.table_header("B") imgui.table_next_row() imgui.table_next_column() imgui.text("123") imgui.table_next_column() imgui.text("456") imgui.table_next_row() imgui.table_next_column() imgui.text("789") imgui.table_next_column() imgui.text("111") imgui.table_next_row() imgui.table_next_column() imgui.text("222") imgui.table_next_column() imgui.text("333")