Skip to content

Commit

Permalink
Correção do bug que abria Scripts dentro da tela de Inicio
Browse files Browse the repository at this point in the history
  • Loading branch information
gabrielogregorio committed May 10, 2021
1 parent 45401d1 commit a5a34b5
Show file tree
Hide file tree
Showing 8 changed files with 285 additions and 331 deletions.
7 changes: 3 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ libs/__pycache__/
..gitignor.swp
backups
registros.json
registros.json
logs/registros.json
logs\registros.json
.vscode/
.\logs\registros.json
.\logs\registros.json
FULLTESTES.safira
logs/registros.json
35 changes: 33 additions & 2 deletions configuracoes/configuracoes.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"sintaxe": "simples.json",
"fonte": "Garuda",
"logs": "ativado",
"versao": 0.37,
"versao": 0.38,
"abertos": [
"scripts/pt-br/11. Arquivos.safira",
"scripts/pt-br/09. Incremente-decremente.safira",
Expand Down Expand Up @@ -126,7 +126,38 @@
"scripts/pt-br/14. pare.safira",
"scripts/pt-br/15. interrompa.safira",
"scripts/pt-br/14. pare.safira",
"scripts/pt-br/14. pare.safira"
"scripts/pt-br/14. pare.safira",
"scripts/pt-br/01. Variaveis.safira",
"scripts/pt-br/02. Exibir algo na tela.safira",
"scripts/pt-br/03. Digitado.safira",
"scripts/pt-br/04. Testar Condicoes.safira",
"scripts/pt-br/05. Enquanto.safira",
"scripts/pt-br/06. Repita.safira",
"scripts/pt-br/07. Espere.safira",
"scripts/pt-br/08. Sortear um n\u00famero aleatorio.safira",
"scripts/pt-br/10. Funcoes.safira",
"scripts/pt-br/10. Funcoes.safira",
"scripts/pt-br/11. Arquivos.safira",
"scripts/pt-br/12. Trabalhando com bibliotecas.safira",
"scripts/pt-br/13. continue.safira",
"scripts/pt-br/14. pare.safira",
"scripts/pt-br/15. interrompa.safira",
"scripts/pt-br/16. Listas.safira",
"scripts/pt-br/17. para_cada_item_da_lista.safira",
"scripts/pt-br/18. para_cada_item_da_string.safira",
"scripts/pt-br/19. upper_lower_capitalize.safira",
"scripts/pt-br/19. upper_lower_capitalize.safira",
"scripts/pt-br/20. para cada.safira",
"scripts/pt-br/21. Tente.safira",
"scripts/pt-br/01. Variaveis.safira",
"scripts/pt-br/08. Sortear um n\u00famero aleatorio.safira",
"scripts/pt-br/12. Trabalhando com bibliotecas.safira",
"scripts/pt-br/13. continue.safira",
"scripts/pt-br/09. Incremente-decremente.safira",
"scripts/pt-br/07. Espere.safira",
"scripts/pt-br/10. Funcoes.safira",
"scripts/pt-br/15. interrompa.safira",
"scripts/pt-br/02. Exibir algo na tela.safira"
],
"idioma": "pt-br"
}
20 changes: 10 additions & 10 deletions configuracoes/configuracoes_load.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"0": {
"nome": "",
"foco": true,
"foco": false,
"lst_breakpoints": [],
"arquivoSalvo": {
"link": "",
Expand All @@ -18,31 +18,31 @@
},
"1": {
"nome": "",
"foco": false,
"foco": true,
"lst_breakpoints": [],
"arquivoSalvo": {
"link": "",
"texto": "\n"
"link": "scripts/pt-br/15. interrompa.safira",
"texto": "# Voc\u00ea quer finalizar o programa por completo ao chegar em um ponto\n# Como fazer isso? Vamos usar o interrompa!\n\n\nmostre \"Iniciando sistema!\"\nmostre \"Carregando dados!\"\n\ninterrompa\n\nmostre \"Enviando Mensagens!\"\n\n"
},
"arquivoAtual": {
"texto": "\n"
"texto": "# Voc\u00ea quer finalizar o programa por completo ao chegar em um ponto\n# Como fazer isso? Vamos usar o interrompa!\n\n\nmostre \"Iniciando sistema!\" na cor \"blue\"\nmostre \"Carregando dados!\" na cor \"red\"\nmostre nessa linha \"ol\u00e1\" na cor \"green\"\n#interrompa\n\nmostre \"Enviando Mensagens!\" na cor \"#ffaa11\"\n\n\n"
},
"listaContextos": [],
"contexto": 0,
"ja_foi_marcado_nao_salvo": false,
"ja_foi_marcado_nao_salvo": true,
"tipo": "editor",
"listaAbas": []
},
"2": {
"nome": "",
"foco": true,
"foco": false,
"lst_breakpoints": [],
"arquivoSalvo": {
"link": "scripts/pt-br/14. pare.safira",
"texto": "# Mudando s\u00f3 um pouquinho do cen\u00e1rio anterior\n#\n# E se voc\u00ea quisesse executar um loop, por\u00e9m, quando \n# chegar em uma condi\u00e7\u00e3o, voc\u00ea quer para o loop.\n# Como fazer isso? Vamos usar o pare!\n\n\nsoma = 1\nenquanto soma for menor que 10\n{\n # Incrementando o valor da soma em +1\n soma vale soma mais 1\n\n # Se o valor for igual a 5, pare o loop!\n se soma for igual a 5 { pare }\n\n # Mostrando na tela\n mostre \"soma: %\" inserindo soma\n}\n\n"
"link": "scripts/pt-br/02. Exibir algo na tela.safira",
"texto": "# Este comando exibe alguma coisa na tela\n# Uma mensagem por exemplo\n\n\nnome = \"Safira\" \n\nmostre \"Bom dia, \"\nmostre \"% tudo bem?\" inserindo nome\n\nmostre \"\"\nmostre \":--------------------------------------------:\"\nmostre \": Voc\u00ea deve ter notado que o comando mostre :\"\nmostre \": exibir cada coisa em uma linha diferente :\"\nmostre \": Se voc\u00ea quiser exibir tudo na mesma linha :\"\nmostre \": precisa usar o comando mostre nessa linha :\"\nmostre \":--------------------------------------------:\"\nmostre \"\"\n\n\nmostre nessa linha \"Bom dia \"\nmostre nessa linha nome\n\nmostre \"\"\n\n# Voc\u00ea tamb\u00e9m pode dar uma cor aos textos exibidos\n# Basta informar um c\u00f3digo Hexadecimal ou o nome das cores,\n# por enquanto em ingl\u00eas. Pesquise por esse c\u00f3digo no Google por #88ffff\nmostre \"Texto colorido\" na cor \"#88ffff\"\n\n"
},
"arquivoAtual": {
"texto": "# Mudando s\u00f3 um pouquinho do cen\u00e1rio anterior\n#\n# E se voc\u00ea quisesse executar um loop, por\u00e9m, quando \n# chegar em uma condi\u00e7\u00e3o, voc\u00ea quer para o loop.\n# Como fazer isso? Vamos usar o pare!\n\n\nsoma = 1\nenquanto soma for menor que 10\n{\n # Incrementando o valor da soma em +1\n soma vale soma mais 1\n\n # Se o valor for igual a 5, pare o loop!\n se soma for igual a 5 { pare }\n\n # Mostrando na tela\n mostre \"soma: %\" inserindo soma\n}\n\n"
"texto": "# Este comando exibe alguma coisa na tela\n# Uma mensagem por exemplo\n\n\nnome = \"Safira\" \n\nmostre \"Bom dia, \"\nmostre \"% tudo bem?\" inserindo nome\n\nmostre \"\"\nmostre \":--------------------------------------------:\"\nmostre \": Voc\u00ea deve ter notado que o comando mostre :\"\nmostre \": exibir cada coisa em uma linha diferente :\"\nmostre \": Se voc\u00ea quiser exibir tudo na mesma linha :\"\nmostre \": precisa usar o comando mostre nessa linha :\"\nmostre \":--------------------------------------------:\"\nmostre \"\"\n\n\nmostre nessa linha \"Bom dia \"\nmostre nessa linha nome\n\nmostre \"\"\n\n# Voc\u00ea tamb\u00e9m pode dar uma cor aos textos exibidos\n# Basta informar um c\u00f3digo Hexadecimal ou o nome das cores,\n# por enquanto em ingl\u00eas. Pesquise por esse c\u00f3digo no Google por #88ffff\nmostre \"Texto colorido\" na cor \"#88ffff\"\n\n"
},
"listaContextos": [],
"contexto": 0,
Expand Down
86 changes: 45 additions & 41 deletions interpretador/interpretador.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,17 +134,16 @@ def __init__(self, bool_logs: bool,
self.compilado = True


def analisa_inicio_codigo(self, linha:str) -> str:
"""Obtem uma linha de código e retorna o número da linha
def __obter_num_linha(self, linha:str) -> str:
"""retorna o número da linha
Args:
linha (str): linha de código
Returns:
str: Retorna a linha do código
"""
linha = linha.strip()
posicoes = finditer(r'^(\[\d*\])', linha)
posicoes = finditer(r'^(\[\d*\])', linha.strip())

num_linha = 0
for uma_posicao in posicoes:
Expand All @@ -162,37 +161,45 @@ def cortar_comentarios(self, codigo: str) -> str:
Returns:
str: O código com todos os comentários removidos
"""
lista = codigo.split('\n')
linhas = codigo.split('\n')

codigo_final = ""

string = ""
for linha in lista:
# Percorrer por todas as linhas do código
for linha in linhas:
linha = linha.strip()

''' Ao iniciar a análise de uma String,
simbolos de comentários não deverão ser considerados
'''
iniciou_string = False
parcial = ""

temp = ""
for letra in range(len(linha)):

for char in range(len(linha)):
tem_string = linha[letra] == '"'

if linha[char] == '"':
if not iniciou_string:
iniciou_string = True
else:
iniciou_string = False
temp += linha[char]
if tem_string:
if not iniciou_string: iniciou_string = True
else: iniciou_string = False

parcial += linha[letra]
continue

if not iniciou_string:
if linha[char] == "#" or linha[char:char+2] == "//":
if linha[letra] == "#" or linha[letra:letra+2] == "//":
break

temp += linha[char]
parcial += linha[letra]

parcial = parcial.strip()

temp = temp.strip()
linha_nao_vazia = self.__obter_num_linha(parcial) != len(parcial)

if self.analisa_inicio_codigo(temp) != len(temp):
string += temp + "\n"
if linha_nao_vazia:
codigo_final += parcial + "\n"

return string
return codigo_final

def aguardar_liberacao_breakPoint(self) -> None:
"""Fica em um loop aguardando o Breakpoint ser liberado
Expand Down Expand Up @@ -1231,26 +1238,26 @@ def interpretador(self, linha):

if caractere in self.dicLetras["funcoes"] or not self.compilado:
__resultado = self.analisa_instrucao('^(<funcoes>)(.*)(<recebeParametros_parentese_abre>)(.*)(<recebeParametros_parentese_fecha>)$', linha, self.compilado)
if __resultado[0]: return [self.funcao_declarar_funcao(__resultado[1][2], __resultado[1][4]),self.num_linha, "Funcoes"]
if __resultado[0]: return [self.__funcao_declarar_funcao(__resultado[1][2], __resultado[1][4]),self.num_linha, "Funcoes"]

__resultado = self.analisa_instrucao('^(<funcoes>)(.*)(<recebeParametros>)(.*)$', linha, self.compilado)
if __resultado[0]: return [self.funcao_declarar_funcao(__resultado[1][2], __resultado[1][4]),self.num_linha, "Funcoes"]
if __resultado[0]: return [self.__funcao_declarar_funcao(__resultado[1][2], __resultado[1][4]),self.num_linha, "Funcoes"]

__resultado = self.analisa_instrucao('^(<funcoes>)(\\s*[\\w*\\_]*\\s*)(<recebeParametros_parentese_abre>)\\s*(<recebeParametros_parentese_fecha>)$', linha, self.compilado)
if __resultado[0]: return [self.funcao_declarar_funcao(__resultado[1][2]), self.num_linha, "Funcoes"]
if __resultado[0]: return [self.__funcao_declarar_funcao(__resultado[1][2]), self.num_linha, "Funcoes"]

__resultado = self.analisa_instrucao('^(<funcoes>)(\\s*[\\w*\\_]*\\s*)$', linha, self.compilado)
if __resultado[0]: return [self.funcao_declarar_funcao(__resultado[1][2]), self.num_linha, "Funcoes"]
if __resultado[0]: return [self.__funcao_declarar_funcao(__resultado[1][2]), self.num_linha, "Funcoes"]

__resultado = self.analisa_instrucao('^(.*)(<passandoParametros>)(.*)$', linha, self.compilado)
if __resultado[0]: return [self.funcao_executar_funcao(__resultado[1][1], __resultado[1][3]), self.num_linha, "Funcoes"]
if __resultado[0]: return [self.__funcao_executar_funcao(__resultado[1][1], __resultado[1][3]), self.num_linha, "Funcoes"]

__resultado = self.analisa_instrucao('^(.*)(<passando_parametros_abrir>)(.*)(<passando_parametros_fechar>)$', linha, self.compilado)
if __resultado[0]:
return [self.funcao_executar_funcao(__resultado[1][1], __resultado[1][3]), self.num_linha, "Funcoes"]
return [self.__funcao_executar_funcao(__resultado[1][1], __resultado[1][3]), self.num_linha, "Funcoes"]

#__resultado = self.analisa_instrucao('^[A-Z0-9a-z_]*\\s*$', linha, self.compilado)
#if __resultado[0]: return [self.funcao_executar_funcao(__resultado[1][1]), self.num_linha, "Funcoes"]
#if __resultado[0]: return [self.__funcao_executar_funcao(__resultado[1][1]), self.num_linha, "Funcoes"]

return [ [False, "{}'{}'".format( self.msg('comando_desconhecido'), linha ), 'fazerNada'], self.num_linha, ""]

Expand Down Expand Up @@ -1359,15 +1366,15 @@ def comandos_uso_geral(self, possivel_variavel):
##################################################################

__resultado = self.analisa_instrucao('^(.*)(<passandoParametros>)(.*)$', possivel_variavel, self.compilado)
if __resultado[0]: return self.funcao_executar_funcao(__resultado[1][1], __resultado[1][3])
if __resultado[0]: return self.__funcao_executar_funcao(__resultado[1][1], __resultado[1][3])


__resultado = self.analisa_instrucao('^(.*)(<passando_parametros_abrir>)(.*)(<passando_parametros_fechar>)$', possivel_variavel, self.compilado)
if __resultado[0]: return self.funcao_executar_funcao(__resultado[1][1], __resultado[1][3])
if __resultado[0]: return self.__funcao_executar_funcao(__resultado[1][1], __resultado[1][3])


#__resultado = self.analisa_instrucao('^[A-Z0-9a-z_]*\\s*$', possivel_variavel, self.compilado)
#if __resultado[0]: return self.funcao_executar_funcao(__resultado[1][1])
#if __resultado[0]: return self.__funcao_executar_funcao(__resultado[1][1])


return [True, None]
Expand Down Expand Up @@ -2551,7 +2558,6 @@ def funcao_exibir_outra_ln(self, linha):
if self.verificar_tipo(resultado[1]) == 'string':
resultado[1] = str(resultado[1]).replace("\\n", "\n")


if len(resultado) == 3:
if "exibirCor" in resultado[2]:
return [resultado[0], ':mostreLinha:{}'.format(resultado[2]) + str(resultado[1]), 'exibirNaTela']
Expand All @@ -2563,18 +2569,16 @@ def funcao_exibir_mesma_ln(self, linha):

resultado = self.abstrair_mostre_valor(linha)


if not resultado[0]:
return resultado


if self.verificar_tipo(resultado[1]) == 'string':
resultado[1] = str(resultado[1]).replace("\\n", "\n")


if len(resultado) > 3:
if len(resultado) == 3:
if "exibirCor" in resultado[2]:
return [resultado[0], ':nessaLinha:{}'.format(resultado[2]) + str(resultado[1]), 'exibirNaTela']

return [resultado[0], ':nessaLinha:::' + str(resultado[1]), 'exibirNaTela']

def funcao_na_cor(self, linha, cor):
Expand Down Expand Up @@ -2913,7 +2917,7 @@ def funcao_declarar_listas(self, variavel, itens):
lista_itens.append(itens[anterior: valor_item[0]])

anterior = valor_item[1]

if len(itens[anterior:]) > 0:
lista_itens.append(itens[anterior:])

Expand Down Expand Up @@ -2944,8 +2948,8 @@ def funcao_declarar_listas(self, variavel, itens):
return [True, None, 'fazerNada']


def funcao_declarar_funcao(self, nome_funcao:str, parametros=None, classe:bool=True):
#self.log("__funcao_declarar_funcao: nome_funcao = '{}', parametros = '{}'".format(nome_funcao, parametros))
def __funcao_declarar_funcao(self, nome_funcao:str, parametros=None, classe:bool=True):
#self.log("____funcao_declarar_funcao: nome_funcao = '{}', parametros = '{}'".format(nome_funcao, parametros))

if parametros is not None:
if parametros.strip() == "":
Expand Down Expand Up @@ -3003,8 +3007,8 @@ def funcao_declarar_funcao(self, nome_funcao:str, parametros=None, classe:bool=T
funcao_em_analise = nome_funcao
return [True, True, 'declararFuncao', funcao_em_analise]

def funcao_executar_funcao(self, nome_funcao, parametros=None):
#self.log("__funcao_executar_funcao: nome_funcao = '{}', parametros='{}'".format(nome_funcao, parametros))
def __funcao_executar_funcao(self, nome_funcao, parametros=None):
#self.log("____funcao_executar_funcao: nome_funcao = '{}', parametros='{}'".format(nome_funcao, parametros))

if parametros is not None:
if parametros.strip() == "":
Expand Down
2 changes: 1 addition & 1 deletion logs/registros.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"acessos": 388, "vezes_interpretador_iniciado": 0}
{"acessos": 468, "vezes_interpretador_iniciado": 0}
11 changes: 3 additions & 8 deletions telas/Colors.py
Original file line number Diff line number Diff line change
@@ -1,32 +1,27 @@
from util.funcoes import carregar_json
from platform import system as platform_system

#objeto['font'] = ('Ubuntu Mono', '')
#fonte = "Lucida Sans"
#if (platform_system() == 'Linux'):
# fonte = 'Ubuntu Mono'

class Colors():
def __init__(self):
self.dic = {}

def __get_sett_file(self):
def __get_config_file(self):
return carregar_json("configuracoes/configuracoes.json")["tema"]

def update_design_dic(self):
try:
texto_json = "temas/interface/{}".format(self.__get_sett_file())
texto_json = "temas/interface/{}".format(self.__get_config_file())
self.dic = carregar_json(texto_json)
except Exception as e:
return [False, e]

def get(self, chave):
try:
return self.dic[chave]
except Exception as e:
print(e)
return {}



def get_design_dic(self):
return self.dic
2 changes: 0 additions & 2 deletions telas/Home.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,6 @@ def __carregar_opcoes(self, nome:str, pai:object, dados:list):
bt_item.grid(row=pos, column=1, sticky='w')
pos = pos + 1



def __carregar_opcoes_aprender(self, nome:str, pai:object, dados:list):

lb_aprender = Label(pai, self.design.get("inicio_lb_especial"), text=nome)
Expand Down

0 comments on commit a5a34b5

Please sign in to comment.