Shadow Agency Code: Difference between revisions
Jump to navigation
Jump to search
Created page with "{{menuPromptEngineer}} <pre style="background-color:azure; border:1px outset azure; padding:0 40px; max-width:820px; margin:0 auto; "> import tkinter as tk from tkinter import filedialog import webbrowser from prompt_engineer.utils.ini_file import INIFile ===main.py=== class PromptEngineerApp(tk.Tk): def __init__(self, config_file): super().__init__() self.config = INIFile(config_file) self.load_window_settings() self.create_widgets()..." |
mNo edit summary |
||
| Line 1: | Line 1: | ||
{{menuPromptEngineer}} | {{menuPromptEngineer}} | ||
< | |||
<div style="background-color:azure; border:1px outset azure; padding:0 10px; max-width:860px; margin:0 auto;"> | |||
==main.py== | |||
<pre style="background-color:wheat; border:1px outset azure; padding:40px 40px; max-width:760px; margin:40px; "> | |||
import tkinter as tk | import tkinter as tk | ||
from tkinter import filedialog | from tkinter import filedialog | ||
| Line 6: | Line 9: | ||
from prompt_engineer.utils.ini_file import INIFile | from prompt_engineer.utils.ini_file import INIFile | ||
class PromptEngineerApp(tk.Tk): | class PromptEngineerApp(tk.Tk): | ||
def __init__(self, config_file): | def __init__(self, config_file): | ||
| Line 120: | Line 122: | ||
main() | main() | ||
</pre> | </pre> | ||
</div> | |||
Revision as of 17:34, 12 May 2024
main.py
import tkinter as tk
from tkinter import filedialog
import webbrowser
from prompt_engineer.utils.ini_file import INIFile
class PromptEngineerApp(tk.Tk):
def __init__(self, config_file):
super().__init__()
self.config = INIFile(config_file)
self.load_window_settings()
self.create_widgets()
self.create_menu()
self.file_path = None
def load_window_settings(self):
self.geometry(self.config.get('Window', 'geometry', '800x600'))
self.title(self.config.get('Window', 'title', 'PromptEngineer'))
def create_widgets(self):
self.text_area = tk.Text(self)
self.text_area.pack(fill=tk.BOTH, expand=True)
def save_window_settings(self):
self.config.set('Window', 'geometry', self.geometry())
self.config.save()
def destroy(self):
self.save_window_settings()
super().destroy()
def create_menu(self):
menubar = tk.Menu(self)
self.configure(menu=menubar)
self.create_file_menu(menubar)
self.create_tools_menu(menubar)
def create_file_menu(self, menubar):
file_menu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="Open", command=self.file_open)
file_menu.add_command(label="Save", command=self.file_save)
file_menu.add_command(label="Save As", command=self.file_save_as)
file_menu.add_command(label="Close", command=self.file_close)
file_menu.add_separator()
file_menu.add_command(label="Exit", command=self.destroy)
def create_tools_menu(self, menubar):
tools_menu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label="Tools", menu=tools_menu)
tools_menu.add_command(label="Home Site", command=self.open_home_site)
tools_menu.add_command(label="Help", command=self.open_help)
def open_home_site(self):
url = "https://groupKOS.com/chrysalis/Prompt_Engineer"
webbrowser.open(url)
def open_help(self):
file_path = "docs/README.md"
try:
with open(file_path, 'r') as file:
content = file.read()
self.text_area.delete(1.0, tk.END)
self.text_area.insert(tk.END, content)
except FileNotFoundError:
self.text_area.delete(1.0, tk.END)
self.text_area.insert(tk.END, "Help file not found.")
def file_open(self):
file_path = filedialog.askopenfilename()
if file_path:
try:
with open(file_path, 'r') as file:
content = file.read()
self.text_area.delete(1.0, tk.END)
self.text_area.insert(tk.END, content)
self.file_path = file_path
except FileNotFoundError:
self.text_area.delete(1.0, tk.END)
self.text_area.insert(tk.END, "File not found.")
def file_save(self):
if self.file_path:
content = self.text_area.get(1.0, tk.END)
try:
with open(self.file_path, 'w') as file:
file.write(content)
except IOError:
self.text_area.delete(1.0, tk.END)
self.text_area.insert(tk.END, "Error occurred while saving the file.")
else:
self.file_save_as()
def file_save_as(self):
file_path = filedialog.asksaveasfilename(defaultextension='.txt')
if file_path:
content = self.text_area.get(1.0, tk.END)
try:
with open(file_path, 'w') as file:
file.write(content)
self.file_path = file_path
except IOError:
self.text_area.delete(1.0, tk.END)
self.text_area.insert(tk.END, "Error occurred while saving the file.")
def file_close(self):
self.file_path = None
self.text_area.delete(1.0, tk.END)
def main():
app = PromptEngineerApp('prompt_engineer/utils/config.ini')
app.mainloop()
if __name__ == '__main__':
main()