Skip to content

Commit

Permalink
Merge branch 'dev' into aurora
Browse files Browse the repository at this point in the history
  • Loading branch information
azurejoga committed Oct 21, 2023
2 parents 967e53f + 2c69a8d commit 36eda76
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 57 deletions.
134 changes: 77 additions & 57 deletions aurora.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,68 +2,82 @@
import subprocess
import pickle
import webbrowser
import ctypes

# Constantes da API do Windows para criar um ponto de restauração
SMGR_CREATE = 0x100
SMGR_CONFIRM = 0x200
SMGR_AUTO = 0x400
SMGR_NOCHANGE = 0x800
SMGR_NORESTORE = 0x1000
SMGR_NOTSUPPORTED = 0x2000
SMGR_LOCK = 0x4000
SMGR_UNLOCK = 0x8000
SMGR_NOSMPAGEFILE = 0x10000

class WelcomeDialog(wx.Dialog):
def __init__(self, parent, id, title):
super(WelcomeDialog, self).__init__(parent, id, title)

panel = wx.Panel(self)

# Texto de boas-vindas na caixa de diálogo
welcome_text = wx.StaticText(panel, -1, "Olá, estamos felizes por você querer testar nosso programa!")
disclaimer_text = wx.StaticText(panel, -1, "Lembre-se que todas as alterações são feitas por você e não somos responsáveis ​​por quaisquer problemas.")
disclaimer_text = wx.StaticText(panel, -1, "Lembre-se que todas as alterações são feitas por você e não somos responsáveis por quaisquer problemas.")
restore_text = wx.StaticText(panel, -1, "Antes de fazer qualquer coisa, crie um ponto de restauração no seu PC para evitar eventuais problemas.")

# Botão "Ok, quero continuar" na caixa de diálogo
ok_button = wx.Button(panel, label="Ok, quero continuar")
ok_button.Bind(wx.EVT_BUTTON, self.on_ok)

# Layout da caixa de diálogo
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(welcome_text, 0, wx.ALL, 10)
sizer.Add(disclaimer_text, 0, wx.ALL, 10)
sizer.Add(restore_text, 0, wx.ALL, 10)
sizer.Add(ok_button, 0, wx.CENTER|wx.ALL, 10)
sizer.Add(ok_button, 0, wx.CENTER | wx.ALL, 10)

panel.SetSizer(sizer)

def on_ok(self, event):
self.EndModal(wx.ID_OK)

class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
super(MyFrame, self).__init__(parent, id, title, size=(400, 300))

panel = wx.Panel(self)

# Lista vazia
self.lista_de_comandos = wx.ListCtrl(panel, -1, style=wx.LC_REPORT)
self.lista_de_comandos.InsertColumn(0, "Nome", width=100)
self.lista_de_comandos.InsertColumn(1, "Descrição", width=150)
self.lista_de_comandos.InsertColumn(2, "Comando", width=200)
self.lista_de_comandos.InsertColumn(3, "Tipo", width=100)

# Criar o menu "Adicionar Comandos"
menu_bar = wx.MenuBar()
file_menu = wx.Menu()
add_command_item = file_menu.Append(wx.ID_ANY, "Adicionar Comandos", "Adicionar um novo comando")
self.Bind(wx.EVT_MENU, self.on_add_command, add_command_item)
menu_bar.Append(file_menu, "Comandos")

# Criar o menu "Ferramentas" e adicionar itens
tools_menu = wx.Menu()
open_github_repo_item = tools_menu.Append(wx.ID_ANY, "Abrir Repositório no GitHub", "Abrir o repositório no GitHub")
download_latest_github_item = tools_menu.Append(wx.ID_ANY, "Baixar Versão Mais Recente do GitHub", "Baixar a versão mais recente do GitHub")
create_restore_point_item = tools_menu.Append(wx.ID_ANY, "Criar Ponto de Restauração", "Criar um ponto de restauração no sistema")
self.Bind(wx.EVT_MENU, self.open_github_repo, open_github_repo_item)
self.Bind(wx.EVT_MENU, self.download_latest_github, download_latest_github_item)
self.Bind(wx.EVT_MENU, self.create_system_restore_point, create_restore_point_item)
menu_bar.Append(tools_menu, "Ferramentas")

self.SetMenuBar(menu_bar)

# Layout
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.lista_de_comandos, 1, wx.EXPAND|wx.ALL, 10)
sizer.Add(self.lista_de_comandos, 1, wx.EXPAND | wx.ALL, 10)

panel.SetSizer(sizer)

# Bind para a tecla Enter ou Espaço na lista de comandos
Expand Down Expand Up @@ -97,14 +111,14 @@ def on_add_command(self, event):
desc = dlg.desc_text.GetValue()
cmd = dlg.cmd_text.GetValue()
type = dlg.type_combo.GetValue()

# Adicionar o comando à lista
command = {"name": name, "desc": desc, "cmd": cmd, "type": type}
self.commands.append(command)
self.add_command_to_list(command)
# Salvar os comandos no arquivo
save_commands(self.commands)

dlg.Destroy()

def add_command_to_list(self, command):
Expand Down Expand Up @@ -146,6 +160,12 @@ def download_latest_github(self, event):
download_url = "https://github.com/seu-usuario/seu-repositorio/releases/latest"
webbrowser.open(download_url)

def create_system_restore_point(self, event):
# Abrir uma caixa de diálogo para inserir a descrição do ponto de restauração
description = wx.GetTextFromUser("Insira uma descrição para o ponto de restauração:", "Criar Ponto de Restauração")
if description:
create_system_restore_point(description)

def create_context_menu(self):
menu = wx.Menu()

Expand Down Expand Up @@ -209,89 +229,82 @@ def on_edit_command(self, event):
def on_remove_command(self, event):
selected_item = self.lista_de_comandos.GetFirstSelected()
if selected_item >= 0:
# Confirme se o usuário deseja remover o comando
confirm_dialog = wx.MessageDialog(self, "Tem certeza de que deseja remover este comando?", "Remover Comando", wx.YES_NO | wx.ICON_QUESTION)
result = confirm_dialog.ShowModal()
confirm_dialog.Destroy()

if result == wx.ID_YES:
# Remova o item da lista
self.lista_de_comandos.DeleteItem(selected_item)
# Remova o comando da lista de comandos
del self.commands[selected_item]
# Salve as alterações no arquivo
save_commands(self.commands)
# Remova o comando da lista e da exibição
del self.commands[selected_item]
self.lista_de_comandos.DeleteItem(selected_item)
# Salve as alterações no arquivo
save_commands(self.commands)

class AddCommandDialog(wx.Dialog):
def __init__(self, parent, id, title):
super(AddCommandDialog, self).__init__(parent, id, title)

panel = wx.Panel(self)

# Adicione os elementos para entrada de nome, descrição, comando e tipo de comando
name_label = wx.StaticText(panel, -1, "Nome:")
self.name_text = wx.TextCtrl(panel, -1, "")

desc_label = wx.StaticText(panel, -1, "Descrição:")
self.desc_text = wx.TextCtrl(panel, -1, "")

cmd_label = wx.StaticText(panel, -1, "Comando:")
self.cmd_text = wx.TextCtrl(panel, -1, "")
self.cmd_text = wx.TextCtrl(panel, -1, "", style=wx.TE_MULTILINE) # Permite várias linhas

type_label = wx.StaticText(panel, -1, "Tipo de Comando:")
self.type_combo = wx.ComboBox(panel, -1, choices=["CMD", "Powershell"], style=wx.CB_READONLY)

# Botões "Ok" e "Cancelar"
ok_button = wx.Button(panel, label="Ok")
ok_button.Bind(wx.EVT_BUTTON, self.on_ok)

cancel_button = wx.Button(panel, label="Cancelar")
cancel_button.Bind(wx.EVT_BUTTON, self.on_cancel)

# Layout da caixa de diálogo
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(name_label, 0, wx.ALL, 10)
sizer.Add(self.name_text, 0, wx.EXPAND|wx.ALL, 10)
sizer.Add(self.name_text, 0, wx.EXPAND | wx.ALL, 10)
sizer.Add(desc_label, 0, wx.ALL, 10)
sizer.Add(self.desc_text, 0, wx.EXPAND|wx.ALL, 10)
sizer.Add(self.desc_text, 0, wx.EXPAND | wx.ALL, 10)
sizer.Add(cmd_label, 0, wx.ALL, 10)
sizer.Add(self.cmd_text, 0, wx.EXPAND|wx.ALL, 10)
sizer.Add(self.cmd_text, 0, wx.EXPAND | wx.ALL, 10)
sizer.Add(type_label, 0, wx.ALL, 10)
sizer.Add(self.type_combo, 0, wx.EXPAND|wx.ALL, 10)
sizer.Add(ok_button, 0, wx.CENTER|wx.ALL, 10)
sizer.Add(cancel_button, 0, wx.CENTER|wx.ALL, 10)
sizer.Add(self.type_combo, 0, wx.EXPAND | wx.ALL, 10)
sizer.Add(ok_button, 0, wx.CENTER | wx.ALL, 10)
sizer.Add(cancel_button, 0, wx.CENTER | wx.ALL, 10)

panel.SetSizer(sizer)

def on_ok(self, event):
self.EndModal(wx.ID_OK)

def on_cancel(self, event):
self.EndModal(wx.ID_CANCEL)

class OutputDialog(wx.Dialog):
def __init__(self, parent, id, title, output):
super(OutputDialog, self).__init__(parent, id, title, size=(400, 300))

panel = wx.Panel(self)

# Texto de saída do comando
if output:
output_text = wx.TextCtrl(panel, -1, value=output.strip(), style=wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL|wx.VSCROLL)
output_text = wx.TextCtrl(panel, -1, value=output.strip(), style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL | wx.VSCROLL)
else:
output_text = wx.TextCtrl(panel, -1, value='O comando foi executado com sucesso!', style=wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL|wx.VSCROLL)
output_text = wx.TextCtrl(panel, -1, value='O comando foi executado com sucesso!', style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL | wx.VSCROLL)

# Botão "Fechar"
close_button = wx.Button(panel, label="Fechar")
close_button.Bind(wx.EVT_BUTTON, self.on_close)

# Layout da caixa de diálogo
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(output_text, 1, wx.EXPAND|wx.ALL, 10)
sizer.Add(close_button, 0, wx.CENTER|wx.ALL, 10)
sizer.Add(output_text, 1, wx.EXPAND | wx.ALL, 10)
sizer.Add(close_button, 0, wx.CENTER | wx.ALL, 10)

panel.SetSizer(sizer)

def on_close(self, event):
self.EndModal(wx.ID_OK)

Expand All @@ -312,6 +325,13 @@ def load_commands():
print("Erro ao carregar comandos:", e)
return []

def create_system_restore_point(description):
try:
ctypes.windll.shell32.ShellExecuteW(None, "runas", "powershell.exe", "Checkpoint-Computer -Description '{}'".format(description), "", 1)
wx.MessageBox("Ponto de restauração criado com sucesso!", "Ponto de Restauração", wx.OK | wx.ICON_INFORMATION)
except Exception as e:
wx.MessageBox("Erro ao criar o ponto de restauração:\n" + str(e), "Erro de Ponto de Restauração", wx.OK | wx.ICON_ERROR)

app = wx.App()

# Exibir a caixa de diálogo inicial
Expand Down
Binary file modified commands
Binary file not shown.

0 comments on commit 36eda76

Please sign in to comment.