- ######
- # LEAVE THESE IMPORTS!
- ######
- import functions
- import random
- from textual.widgets import Log
-
- ######
- # config values (you can edit these to fit your environment and use case)
- ######
-
- # Serial port settings
- SERIAL_PORT = "/dev/ttyUSB0"
- BAUD_RATE = 115200
-
- LENGTH = 10
- REPEAT = 5
- DELAY = 100
-
- ###
- # ^ = pullup, v = pulldown
- ###
- triggers = [
- ["^", True], #0
- ["-", False], #1
- ["v", True], #2
- ["-", False], #3
- ["-", False], #4
- ["-", False], #5
- ["-", False], #6
- ["-", False], #7
- ]
-
- ###
- # name, enabled, string to match in output, function to run
- # if string is blank ("") doesnt show toggle, just run button
- ###
- conditions = [
- ["No01", False, "WillNeverMatch01", ""],
- ["No02", False, "WillNeverMatch02", ""],
- ["Heigh", False, "", "get_scroll_height"],
- ["AllTg", False, "", "toggle_all"],
- ["Trigr", False, "", "change_all_triggers"],
- ["Value", False, "", "random_values"],
- ['9600', False, '', 'change_baud_9600'],
- ['11520', False, '', 'change_baud_115200'],
- ]
-
- ######
- # Custom functions for conditions to trigger
- ######
-
- def get_scroll_height():
- if functions.app_instance:
- text_widget = functions.app_instance.query_one(".scrollable_log", Log) # Find the scrollable text area
- height = text_widget.scrollable_content_region.height # Get its height
- # Ensure the text is a string and append it to the Log widget
- random_number = random.randint(1, 100)
- new_text = f"[CONDITION] Scrollable height: {height} and Random Number: {random_number}"
- functions.add_text(new_text)
- functions.log_message(new_text) # Log the value
- else:
- functions.log_message("App instance not set!") # Debugging in case it's called too early
-
- def toggle_all():
- TriggersStatus = functions.get_trigger_value(0)
- if TriggersStatus is True:
- for i in range(8):
- functions.set_trigger_value(i, False)
- for i in range( len(conditions) ):
- functions.set_condition_value(i, False)
- else:
- for i in range(8):
- functions.set_trigger_value(i, True)
- for i in range( len(conditions) ):
- functions.set_condition_value(i, True)
-
- def change_all_triggers():
- for i in range(8):
- current_symbol = functions.get_trigger_string(i)
- cycle = ["^", "v", "-"]
- next_symbol = cycle[(cycle.index(current_symbol) + 1) % len(cycle)]
- functions.set_trigger_string(i, next_symbol)
-
- def random_values():
- functions.glitching_switch(False)
-
- OrigLen = functions.get_config_value("length")
- OrigRep = functions.get_config_value("repeat")
- OrigDel = functions.get_config_value("delay")
-
- NewLen = random.randint(1, 100)
- NewRep = random.randint(1, 100)
- NewDel = random.randint(1, 100)
-
- functions.set_config_value("length", NewLen)
- functions.set_config_value("repeat", NewRep)
- functions.set_config_value("delay", NewDel)
-
- functions.add_text(f"[UPDATED] length ({OrigLen} -> {NewLen}), repeat ({OrigRep} -> {NewRep}), delay ({OrigDel} -> {NewDel})")
-
- def change_baud_9600():
- functions.change_baudrate(9600)
- functions.set_uart_switch()
-
- def change_baud_115200():
- functions.change_baudrate(115200)
- functions.set_uart_switch(False)