def __init__(self, parent=None, width=200, height=200): LUIFrame.__init__(self, parent=parent, width=width, height=height, padding=10, innerPadding=0) self.topmost = True self.borderSize = 33 self.content.bind("click", self._on_content_click)
def __init__(self, interpreter): self.interpreter = interpreter self.history_objects = [] skin = LUIDefaultSkin() skin.load() region = LUIRegion.make("LUI", base.win) handler = LUIInputHandler() base.mouseWatcher.attach_new_node(handler) region.set_input_handler(handler) self.console_frame = LUIFrame( parent=region.root, pos=(0, 0), width=base.win.get_x_size() - 10, height=base.win.get_y_size() * 0.75, style=LUIFrame.FS_raised, #style = LUIFrame.FS_sunken, margin=(5, 5, 5, 5), ) console = LUIVerticalLayout(parent=self.console_frame, spacing=3) #console.use_dividers = True console.margin = (0, 0, 0, 0) console.width = self.console_frame.width self.history_region = LUIScrollableRegion(margin=0, width=console.width - 10) console.add(self.history_region) self.history = LUIVerticalLayout( parent=self.history_region.content_node, spacing=2) self.history.margin = (0, 0, 0, 0) self.history.width = self.history_region.width self.command_line = LUIInputField(width=console.width - 10) console.add(self.command_line) self.command_line.bind("tab", self.tab) self.command_line.bind("enter", self.enter) self.command_line.bind("control-c", self.copy) self.command_line.bind("control-v", self.paste) self.command_line.bind("control-x", self.cut) self.command_line.bind("control-u", self.kill_to_start) self.command_line.bind("control-k", self.kill_to_end) self.command_line.bind("control-l", self.kill_line)
def __init__(self, interpreter): self.interpreter = interpreter self.history_objects = [] skin = LUIDefaultSkin() skin.load() region = LUIRegion.make("LUI", base.win) handler = LUIInputHandler() base.mouseWatcher.attach_new_node(handler) region.set_input_handler(handler) self.console_frame = LUIFrame(parent = region.root, pos = (0, 0), width = base.win.get_x_size() - 10, height = base.win.get_y_size() * 0.75, style = LUIFrame.FS_raised, #style = LUIFrame.FS_sunken, margin = (5, 5, 5, 5), ) console = LUIVerticalLayout(parent = self.console_frame, spacing = 3) #console.use_dividers = True console.margin = (0, 0, 0, 0) console.width = self.console_frame.width self.history_region = LUIScrollableRegion(margin = 0, width = console.width - 10) console.add(self.history_region) self.history = LUIVerticalLayout(parent = self.history_region.content_node, spacing = 2) self.history.margin = (0, 0, 0, 0) self.history.width = self.history_region.width self.command_line = LUIInputField(width = console.width - 10) console.add(self.command_line) self.command_line.bind("tab", self.tab) self.command_line.bind("enter", self.enter) self.command_line.bind("control-c", self.copy) self.command_line.bind("control-v", self.paste) self.command_line.bind("control-x", self.cut) self.command_line.bind("control-u", self.kill_to_start) self.command_line.bind("control-k", self.kill_to_end) self.command_line.bind("control-l", self.kill_line)
def prepare_demo(self, demo_title=u"Some Demo"): # Background self._background = LUISprite(self._root, "res/DemoBackground.png") # Make the background solid and recieve events self._background.solid = True # Logo self._logo = LUISprite(self._root, "res/LUILogo.png") self._logo.top_left = 15, 20 # Title self._title_label = LUILabel(parent=self._root, text=demo_title, font_size=40, font="header", pos=(120, 27)) self._subtitle_label = LUILabel(parent=self._root, text="Widget Demo", font_size=14, font="default", pos=(121, 70), alpha=0.3) # Right bar self._right_bar = LUIVerticalLayout(parent=self._root) self._left_bar = LUIVerticalLayout(parent=self._root) self._right_bar.width = 350 self._right_bar.pos = (410, 120) self._right_bar.spacing = 10 self._left_bar.width = 350 self._left_bar.pos = (20, 120) self._left_bar.spacing = 10 # Public functions self._public_functions = LUIFrame(width=340, style=LUIFrame.FS_sunken) self._functions_label = LUILabel(text=U"Additional Public functions") self._functions_layout = LUIVerticalLayout( parent=self._public_functions) self._functions_layout.add(self._functions_label, 30) # Events self._events = LUIFrame(width=340, style=LUIFrame.FS_sunken) self._events_label = LUILabel(text=U"Additional Events") self._events_layout = LUIVerticalLayout(parent=self._events) self._events_layout.add(self._events_label, 30) # Actions self._actions = LUIFrame(width=340, style=LUIFrame.FS_sunken) self._actions_label = LUILabel(parent=self._actions, text=U"Demo-Actions") self._actions_select = LUISelectbox(parent=self._actions, width=225, top=30) self._actions_btn = LUIButton(parent=self._actions, right=0, top=30, text=u"Execute", template="ButtonGreen") self._actions_btn.bind("click", self._exec_action) # Properties self._properties = LUIFrame(width=340, style=LUIFrame.FS_sunken) self._properties_label = LUILabel(text=u"Additional Properties") self._properties_layout = LUIVerticalLayout(parent=self._properties) self._properties_layout.add(self._properties_label, 30) self._right_bar.add(self._actions) self._right_bar.add(self._public_functions) self._right_bar.add(self._properties) self._right_bar.add(self._events) # Widget self._widget_container = LUIFrame(width=360, height=250, style=LUIFrame.FS_sunken) self._widget_label = LUILabel(parent=self._widget_container, text=u"Widget Demo") self._left_bar.add(self._widget_container) # Source Code self._source_container = LUIFrame(width=360, height=190, style=LUIFrame.FS_sunken) self._source_label = LUILabel(parent=self._source_container, text=u"Default Constructor") self._copy_code_button = LUIButton(parent=self._source_container, text=u"Copy to Clipboard", template="ButtonGreen", bottom_right=(0, 0)) self._source_content = LUIObject(self._source_container) self._source_content.top = 40 self._left_bar.add(self._source_container) self._widget_node = LUIObject(self._widget_container, x=0, y=40)
base.win.set_clear_color(Vec4(0.1, 0.0, 0.0, 1)) skin.load() # Initialize LUI region = LUIRegion.make("LUI", base.win) handler = LUIInputHandler() base.mouseWatcher.attach_new_node(handler) region.set_input_handler(handler) # Title title_label = LUILabel(parent=region.root, text="LUI Console Example", font_size=40, font="header", pos=(25, 17)) # Container container = LUIFrame(parent = region.root, width=700, height=500, style=LUIFrame.FS_sunken, margin=30, top=50) text_container = LUIScrollableRegion(parent=container, width=675, height=440, padding=0) base.win.set_clear_color(Vec4(0.1, 0.1, 0.1, 1.0)) layout = LUIVerticalLayout(parent=text_container.content_node) def send_command(event): """ Called when the user presses enter in the input field, submits the command and prints something on the console """ label = LUIFormattedLabel() color = (0.9, 0.9, 0.9, 1.0) if event.message.startswith(u"/"): color = (0.35, 0.65, 0.24, 1.0) label.add(text=">>> ", color=(0.35, 0.65, 0.24, 1.0))
base.win.set_clear_color(Vec4(0.05, 0.05, 0.05, 1.0)) skin = LUIDefaultSkin() skin.load() region = LUIRegion.make("LUI", base.win) handler = LUIInputHandler() base.mouseWatcher.attach_new_node(handler) region.set_input_handler(handler) # bg = LUISprite(region.root, "blank", "skin") # bg.pos = 200, 200 # bg.size = 200, 300 container = LUIFrame(parent=region.root, pos=(200, 200), height=300, style=LUIFrame.FS_sunken) # label_tl = LUILabel(parent=container, text="Top Left", top_left=(0,0)) # label_tr = LUILabel(parent=container, text="Top Right", top_right=(0,0)) # label_bl = LUILabel(parent=container, text="Bottom Left", bottom_left=(0,0)) # label_br = LUILabel(parent=container, text="Bottom Right", bottom_right=(0,0)) # button = LUIButton(parent=container, top_left=(0, 0), text="Well this one .. is a long button! (A really long one!) ............ really long!") # button.bind("click", lambda event: button.set_text("Hello!")) container.size = 300, 300 # group = LUIRadioboxGroup() # box = LUIRadiobox(parent=container, group=group, top=50) # box2 = LUICheckbox(parent=container, top=100) layout = LUIVerticalLayout(parent=container)
f.prepare_demo("LUIFrame") # Constructor f.add_constructor_parameter("width", "200") f.add_constructor_parameter("height", "200") f.add_constructor_parameter("innerPadding", "5") f.add_constructor_parameter("scrollable", "False") f.add_constructor_parameter("style", "UIFrame.Raised") # Functions # Events f.construct_sourcecode("LUIFrame") # Construct a new frame frame = LUIFrame(parent=f.get_widget_node()) layout = LUIVerticalLayout(parent=frame, spacing=5) layout.add(LUILabel(text="This is some frame ..", color=(0.2, 0.6, 1.0, 1.0), font_size=20)) layout.add(LUILabel(text="It can contain arbitrary elements.")) layout.add(LUILabel(text="For example this button:")) layout.add(LUIButton(text="Fancy button")) # frame.fit_to_children() f.set_actions({ "Resize to 300x160": lambda: frame.set_size(300, 160), "Fit to children": lambda: frame.clear_size(), }) run()
def prepare_demo(self, demo_title=u"Some Demo"): # Background self.background = LUISprite(self.root, "res/DemoBackground.png") # Make the background solid and recieve events self.background.bind("click", lambda event: self.background.request_focus()) self.background.solid = True # Logo self.logo = LUISprite(self.root, "res/LUILogo.png") self.logo.top = 15 self.logo.left = 20 # Title self.titleLabel = LUILabel(parent=self.root, text=demo_title, font_size=40, font="header") self.titleLabel.pos = (120, 20) self.subtitleLabel = LUILabel(parent=self.root, text="Widget Demo", font_size=14, font="default") self.subtitleLabel.pos = (121, 65) self.subtitleLabel.color = (1,1,1,0.5) # Right bar self.rightBar = LUIVerticalLayout(parent=self.root, width=350, spacing=20) self.rightBar.pos = (410, 120) # Constructor parameters # self.constructorParameters = LUIFrame(width=340, style=LUIFrame.Sunken) # self.constructorLabel = LUILabel(parent=self.constructorParameters, text=u"Additional Constructor Parameters") # self.constructorLayout = UIVerticalLayout(parent=self.constructorParameters, spacing=10, use_dividers=True) # self.constructorLayout.top = 30 # Public functions self.publicFunctions = LUIFrame(width=340, style=LUIFrame.Sunken) self.functionsLabel = LUILabel(parent=self.publicFunctions, text=U"Additional Public functions") self.functionsLayout = LUIVerticalLayout(parent=self.publicFunctions,spacing=10, use_dividers=True) self.functionsLayout.top = 30 # Events self.events = LUIFrame(width=340,style=LUIFrame.Sunken) self.eventsLabel = LUILabel(parent=self.events, text=U"Additional Events") self.eventsLayout = LUIVerticalLayout(parent=self.events, spacing=10, use_dividers=True) self.eventsLayout.top = 30 # Actions self.actions = LUIFrame(width=340,style=LUIFrame.Sunken, height=80) self.actionsLabel = LUILabel(parent=self.actions, text=U"Demo-Actions") self.actionsSelect = LUISelectbox(parent=self.actions, width=245, top=30) self.actionsBtn = LUIButton(parent=self.actions, right=0, top=30, text=u"Execute", template="ButtonMagic") self.actionsBtn.bind("click", self._exec_action) self.rightBar.add_row(self.actions) # self.rightBar.add_row(self.constructorParameters) self.rightBar.add_row(self.publicFunctions) self.rightBar.add_row(self.events) # Widget self.widgetContainer = LUIFrame(parent=self.root, width=360, height=250, style=LUIFrame.Sunken) self.widgetLabel = LUILabel(parent=self.widgetContainer, text=u"Widget Demo") self.widgetContainer.left = 26 self.widgetContainer.top = 120 # Source Code self.sourceContainer = LUIFrame(parent=self.root, width=360, height=200, style=LUIFrame.Sunken) self.sourceLabel = LUILabel(parent=self.sourceContainer, text=u"Default Constructor") self.copyCodeButton = LUIButton(parent=self.sourceContainer, text=u"Copy to Clipboard", template="ButtonMagic", right=-5, bottom=-5) self.sourceContainer.left = 26 self.sourceContainer.top = 390 self.sourceContent = LUIObject(self.sourceContainer) self.sourceContent.top = 40 self.widgetNode = LUIObject(self.widgetContainer, x=0, y=40)
class DemoFramework: """ This is a small helper class to setup common stuff for the demos """ def __init__(self): base.win.set_clear_color(Vec4(0, 0, 0, 1)) self.skin = LUIDefaultSkin() self.skin.load() # Construct the LUIRegion region = LUIRegion.make("LUI", base.win) handler = LUIInputHandler() base.mouseWatcher.attach_new_node(handler) region.set_input_handler(handler) self.root = region.root() self.constructorParams = [] def prepare_demo(self, demo_title=u"Some Demo"): # Background self.background = LUISprite(self.root, "res/DemoBackground.png") # Make the background solid and recieve events self.background.bind("click", lambda event: self.background.request_focus()) self.background.solid = True # Logo self.logo = LUISprite(self.root, "res/LUILogo.png") self.logo.top = 15 self.logo.left = 20 # Title self.titleLabel = LUILabel(parent=self.root, text=demo_title, font_size=40, font="header") self.titleLabel.pos = (120, 20) self.subtitleLabel = LUILabel(parent=self.root, text="Widget Demo", font_size=14, font="default") self.subtitleLabel.pos = (121, 65) self.subtitleLabel.color = (1,1,1,0.5) # Right bar self.rightBar = LUIVerticalLayout(parent=self.root, width=350, spacing=20) self.rightBar.pos = (410, 120) # Constructor parameters # self.constructorParameters = LUIFrame(width=340, style=LUIFrame.Sunken) # self.constructorLabel = LUILabel(parent=self.constructorParameters, text=u"Additional Constructor Parameters") # self.constructorLayout = UIVerticalLayout(parent=self.constructorParameters, spacing=10, use_dividers=True) # self.constructorLayout.top = 30 # Public functions self.publicFunctions = LUIFrame(width=340, style=LUIFrame.Sunken) self.functionsLabel = LUILabel(parent=self.publicFunctions, text=U"Additional Public functions") self.functionsLayout = LUIVerticalLayout(parent=self.publicFunctions,spacing=10, use_dividers=True) self.functionsLayout.top = 30 # Events self.events = LUIFrame(width=340,style=LUIFrame.Sunken) self.eventsLabel = LUILabel(parent=self.events, text=U"Additional Events") self.eventsLayout = LUIVerticalLayout(parent=self.events, spacing=10, use_dividers=True) self.eventsLayout.top = 30 # Actions self.actions = LUIFrame(width=340,style=LUIFrame.Sunken, height=80) self.actionsLabel = LUILabel(parent=self.actions, text=U"Demo-Actions") self.actionsSelect = LUISelectbox(parent=self.actions, width=245, top=30) self.actionsBtn = LUIButton(parent=self.actions, right=0, top=30, text=u"Execute", template="ButtonMagic") self.actionsBtn.bind("click", self._exec_action) self.rightBar.add_row(self.actions) # self.rightBar.add_row(self.constructorParameters) self.rightBar.add_row(self.publicFunctions) self.rightBar.add_row(self.events) # Widget self.widgetContainer = LUIFrame(parent=self.root, width=360, height=250, style=LUIFrame.Sunken) self.widgetLabel = LUILabel(parent=self.widgetContainer, text=u"Widget Demo") self.widgetContainer.left = 26 self.widgetContainer.top = 120 # Source Code self.sourceContainer = LUIFrame(parent=self.root, width=360, height=200, style=LUIFrame.Sunken) self.sourceLabel = LUILabel(parent=self.sourceContainer, text=u"Default Constructor") self.copyCodeButton = LUIButton(parent=self.sourceContainer, text=u"Copy to Clipboard", template="ButtonMagic", right=-5, bottom=-5) self.sourceContainer.left = 26 self.sourceContainer.top = 390 self.sourceContent = LUIObject(self.sourceContainer) self.sourceContent.top = 40 self.widgetNode = LUIObject(self.widgetContainer, x=0, y=40) def _exec_action(self, event): selected = self.actionsSelect.get_selected_option() if selected is not None: selected() def set_actions(self, actions): opts = [] for name, action in actions.items(): opts.append((action, name)) self.actionsSelect.set_options(opts) def add_public_function(self, name, parameters=None, return_type="void"): label = LUIFormattedLabel() label.add_text(text=return_type + " ", color = (102/255.0, 217/255.0, 239/255.0)) label.add_text(text=name + " ", color = (166/255.0, 226/255.0, 46/255.0)) label.add_text(text="( ", color=(0.9,0.9,0.9)) if parameters is not None: for index, (pname, ptype) in enumerate(parameters): label.add_text(text=pname, color=(255/255.0, 151/255.0, 31/255.0)) label.add_text(text=" : ", color=(0.9,0.9,0.9)) label.add_text(text=ptype, color=(102/255.0, 217/255.0, 239/255.0)) if index < len(parameters) - 1: label.add_text(text=",", color=(0.9,0.9,0.9)) label.add_text(text=" )", color=(0.9,0.9,0.9)) self.functionsLayout.add_row(label) self.update_layouts() def add_constructor_parameter(self, name, default): # label = UIFormattedLabel() # label.add_text(text=name, color=(255/255.0, 151/255.0, 31/255.0)) # label.add_text(text=" = ", color=(249/255.0, 38/255.0, 114/255.0)) # label.add_text(text=default, color=(153/255.0, 129/255.0, 255/255.0)) # self.constructorLayout.add_row(label) self.constructorParams.append((name, default)) self.update_layouts() def add_event(self, event_name): label = LUILabel(text=event_name) label.color = (1,1,1,0.5) self.eventsLayout.add_row(label) self.update_layouts() def update_layouts(self): self.publicFunctions.fit_height_to_children() # self.constructorParameters.fit_height_to_children() self.events.fit_height_to_children() self.rightBar.update() def construct_sourcecode(self, classname): self.sourceContent.remove_all_children() label = LUIFormattedLabel(parent=self.sourceContent) label.add_text(text="element ", color=(0.9,0.9,0.9)) label.add_text(text="= ", color=(249/255.0, 38/255.0, 114/255.0)) label.add_text(text=classname, color=(166/255.0, 226/255.0, 46/255.0)) label.add_text(text="(", color=(0.9,0.9,0.9)) for index, (pname, pvalue) in enumerate(self.constructorParams): label.br() label.add_text(text=" " * 15) label.add_text(text=pname, color=(255/255.0, 151/255.0, 31/255.0)) label.add_text(text=" = ") label.add_text(text=pvalue, color=(153/255.0, 129/255.0, 255/255.0)) if index < len(self.constructorParams) - 1: label.add_text(text=",") label.add_text(text=")") self.sourceContent.fit_height_to_children() self.sourceContainer.fit_height_to_children() self.sourceContainer.height += 40 def get_widget_node(self): return self.widgetNode
class ConsoleGUI: def __init__(self, interpreter): self.interpreter = interpreter self.history_objects = [] skin = LUIDefaultSkin() skin.load() region = LUIRegion.make("LUI", base.win) handler = LUIInputHandler() base.mouseWatcher.attach_new_node(handler) region.set_input_handler(handler) self.console_frame = LUIFrame( parent=region.root, pos=(0, 0), width=base.win.get_x_size() - 10, height=base.win.get_y_size() * 0.75, style=LUIFrame.FS_raised, #style = LUIFrame.FS_sunken, margin=(5, 5, 5, 5), ) console = LUIVerticalLayout(parent=self.console_frame, spacing=3) #console.use_dividers = True console.margin = (0, 0, 0, 0) console.width = self.console_frame.width self.history_region = LUIScrollableRegion(margin=0, width=console.width - 10) console.add(self.history_region) self.history = LUIVerticalLayout( parent=self.history_region.content_node, spacing=2) self.history.margin = (0, 0, 0, 0) self.history.width = self.history_region.width self.command_line = LUIInputField(width=console.width - 10) console.add(self.command_line) self.command_line.bind("tab", self.tab) self.command_line.bind("enter", self.enter) self.command_line.bind("control-c", self.copy) self.command_line.bind("control-v", self.paste) self.command_line.bind("control-x", self.cut) self.command_line.bind("control-u", self.kill_to_start) self.command_line.bind("control-k", self.kill_to_end) self.command_line.bind("control-l", self.kill_line) def set_visible(self, state): if state: self.console_frame.show() self.command_line.request_focus() else: self.console_frame.hide() # FIXME: Un-focus def write(self, text, color="font_color_entry"): self.history_objects.append( ConsoleHistoryItem(self.history, text, color=color)) #self.history_region.scroll_to_bottom() def enter(self, event): print("text was entered. " + str(event)) should_continue = self.interpreter.command( self.command_line.get_value() + "\n") if not should_continue: self.command_line.set_value("") def tab(self, event): # FIXME: Implement print("tab!") self.copy(event) def copy(self, event): # FIXME: If text is selected, limit to that. tk_window = tk.Tk() tk_window.withdraw() tk_window.clipboard_clear() tk_window.clipboard_append(self.command_line.get_value()) print(tk_window, self.command_line.get_value(), tk_window.clipboard_get()) tk_window.destroy() def cut(self, event): # FIXME: If text is selected, limit to that. self.copy(event) self.command_line.set_value("") def paste(self, event): # FIXME: Add text at cursor position. tk_window = tk.Tk() tk_window.withdraw() print(tk_window.clipboard_get()) tk_window.destroy() def kill_to_start(self): # FIXME: Implement print("kill_to_start") def kill_to_end(self): # FIXME: Implement print("kill_to_end") def kill_line(self): # FIXME: Implement print("kill_line")
from DemoFramework import DemoFramework from LUIFrame import LUIFrame import random f = DemoFramework() f.prepare_demo("LUIFrame") # Constructor f.add_constructor_parameter("width", "200") f.add_constructor_parameter("height", "200") f.add_constructor_parameter("innerPadding", "5") f.add_constructor_parameter("scrollable", "False") f.add_constructor_parameter("style", "UIFrame.Raised") # Functions # Events # f.add_event("changed") f.construct_sourcecode("LUIFrame") frame = LUIFrame(width=300, height=100, parent=f.get_widget_node()) f.set_actions({ "Resize to 100x100": lambda: frame.set_size(100, 100), "Resize to 150x150": lambda: frame.set_size(150, 150), "Fit to children": lambda: frame.fit_to_children(), "Resize to Random Size": lambda: frame.set_size(random.randint(10, 150), random.randint(10, 150)), }) run()
class ConsoleGUI: def __init__(self, interpreter): self.interpreter = interpreter self.history_objects = [] skin = LUIDefaultSkin() skin.load() region = LUIRegion.make("LUI", base.win) handler = LUIInputHandler() base.mouseWatcher.attach_new_node(handler) region.set_input_handler(handler) self.console_frame = LUIFrame(parent = region.root, pos = (0, 0), width = base.win.get_x_size() - 10, height = base.win.get_y_size() * 0.75, style = LUIFrame.FS_raised, #style = LUIFrame.FS_sunken, margin = (5, 5, 5, 5), ) console = LUIVerticalLayout(parent = self.console_frame, spacing = 3) #console.use_dividers = True console.margin = (0, 0, 0, 0) console.width = self.console_frame.width self.history_region = LUIScrollableRegion(margin = 0, width = console.width - 10) console.add(self.history_region) self.history = LUIVerticalLayout(parent = self.history_region.content_node, spacing = 2) self.history.margin = (0, 0, 0, 0) self.history.width = self.history_region.width self.command_line = LUIInputField(width = console.width - 10) console.add(self.command_line) self.command_line.bind("tab", self.tab) self.command_line.bind("enter", self.enter) self.command_line.bind("control-c", self.copy) self.command_line.bind("control-v", self.paste) self.command_line.bind("control-x", self.cut) self.command_line.bind("control-u", self.kill_to_start) self.command_line.bind("control-k", self.kill_to_end) self.command_line.bind("control-l", self.kill_line) def set_visible(self, state): if state: self.console_frame.show() self.command_line.request_focus() else: self.console_frame.hide() # FIXME: Un-focus def write(self, text, color = "font_color_entry"): self.history_objects.append(ConsoleHistoryItem(self.history, text, color = color)) #self.history_region.scroll_to_bottom() def enter(self, event): print("text was entered. " + str(event)) should_continue = self.interpreter.command(self.command_line.get_value()+"\n") if not should_continue: self.command_line.set_value("") def tab(self, event): # FIXME: Implement print("tab!") self.copy(event) def copy(self, event): # FIXME: If text is selected, limit to that. tk_window = tk.Tk() tk_window.withdraw() tk_window.clipboard_clear() tk_window.clipboard_append(self.command_line.get_value()) print(tk_window, self.command_line.get_value(), tk_window.clipboard_get()) tk_window.destroy() def cut(self, event): # FIXME: If text is selected, limit to that. self.copy(event) self.command_line.set_value("") def paste(self, event): # FIXME: Add text at cursor position. tk_window = tk.Tk() tk_window.withdraw() print(tk_window.clipboard_get()) tk_window.destroy() def kill_to_start(self): # FIXME: Implement print("kill_to_start") def kill_to_end(self): # FIXME: Implement print("kill_to_end") def kill_line(self): # FIXME: Implement print("kill_line")
base.win.set_clear_color(Vec4(0.05, 0.05, 0.05, 1.0)) skin = LUIDefaultSkin() skin.load() region = LUIRegion.make("LUI", base.win) handler = LUIInputHandler() base.mouseWatcher.attach_new_node(handler) region.set_input_handler(handler) # bg = LUISprite(region.root, "blank", "skin") # bg.pos = 200, 200 # bg.size = 200, 300 container = LUIFrame( parent = region.root, pos = (200, 200), height=300, style = LUIFrame.FS_sunken) # label_tl = LUILabel(parent=container, text="Top Left", top_left=(0,0)) # label_tr = LUILabel(parent=container, text="Top Right", top_right=(0,0)) # label_bl = LUILabel(parent=container, text="Bottom Left", bottom_left=(0,0)) # label_br = LUILabel(parent=container, text="Bottom Right", bottom_right=(0,0)) # button = LUIButton(parent=container, top_left=(0, 0), text="Well this one .. is a long button! (A really long one!) ............ really long!") # button.bind("click", lambda event: button.set_text("Hello!")) container.size = 300, 300 # group = LUIRadioboxGroup() # box = LUIRadiobox(parent=container, group=group, top=50) # box2 = LUICheckbox(parent=container, top=100)