Added compatibility with python scripts

This commit is contained in:
jeffser 2024-10-06 22:16:06 -06:00
parent 4d529619d6
commit f5845e95e6
2 changed files with 9 additions and 7 deletions

View File

@ -108,9 +108,9 @@ class code_block(Gtk.Box):
copy_button = Gtk.Button(icon_name="edit-copy-symbolic", css_classes=["flat", "circular"], tooltip_text=_("Copy Message"))
copy_button.connect("clicked", lambda *_: self.on_copy())
title_box.append(copy_button)
if language_name.lower() == 'bash':
if language_name and language_name.lower() in ['bash', 'python3']:
run_button = Gtk.Button(icon_name="execute-from-symbolic", css_classes=["flat", "circular"], tooltip_text=_("Run Script"))
run_button.connect("clicked", lambda *_: self.run_script())
run_button.connect("clicked", lambda *_: self.run_script(language_name))
title_box.append(run_button)
self.append(title_box)
self.append(Gtk.Separator())
@ -126,11 +126,11 @@ class code_block(Gtk.Box):
clipboard.set(text)
window.show_toast(_("Code copied to the clipboard"), window.main_overlay)
def run_script(self):
def run_script(self, language_name):
logger.debug("Running script")
start = self.buffer.get_start_iter()
end = self.buffer.get_end_iter()
dialogs.run_script(window, self.buffer.get_text(start, end, False))
dialogs.run_script(window, self.buffer.get_text(start, end, False), language_name)
class attachment(Gtk.Button):
__gtype_name__ = 'AlpacaAttachment'

View File

@ -419,9 +419,11 @@ def attach_website(self, url):
# Run Script
def run_script_response(self, dialog, task, script):
def run_script_response(self, dialog, task, script, language_name):
if dialog.choose_finish(task) == "accept":
logger.info('Running: \n{}'.format(script))
if language_name == 'python3':
script = 'echo "{}" | python3'.format(script.replace('"', '\\"'))
script += '; read -p "\n(Alpaca) {}"'.format(_('Press Enter to close...'))
using_flatpak = shutil.which('flatpak-spawn')
@ -460,7 +462,7 @@ def run_script_response(self, dialog, task, script):
except Exception as e:
logger.error(f'Error running script on {terminal_to_use}: {e}')
def run_script(self, script:str):
def run_script(self, script:str, language_name:str):
dialog = Adw.AlertDialog(
heading=_("Run Script"),
body=_("Make sure you understand what this script does before running it, Alpaca is not responsible for any damages to your device or data"),
@ -473,5 +475,5 @@ def run_script(self, script:str):
dialog.choose(
parent = self,
cancellable = None,
callback = lambda dialog, task, script=script: run_script_response(self, dialog, task, script)
callback = lambda dialog, task, script=script, language_name=language_name: run_script_response(self, dialog, task, script, language_name)
)