SGUI | SDL 1.x Gui

1. SGUI | SDL 1.x Gui

???
gokernel

(usa Linux Mint)

Enviado em 04/11/2018 - 12:14h

Olá Pessoal !

Precisei usar uma GUI usando SDL 1.x e resolvi criar essa API:

Na verdade, essa é uma REimplementação de uma API minha antiga.

Projeto aqui:
https://github.com/gokernel2017/SGUI

O que me interessa é a parte do Editor: ... mas só coloquei(inicio bem basico) no github só para guardar.

Para sair do programa é só teclar F12.

BETA AINDA...


  


2. Re: SGUI | SDL 1.x Gui

???
gokernel

(usa Linux Mint)

Enviado em 05/11/2018 - 09:09h

Oi SamL !

Essa é melhor implementada, diferente da LIBRAS ela pode colocar vários sub objetos em OBJETOS ... a libAS só podia colocar 1 sub objeto.

O objetivo da SGUI é ser mais legível ...

Depois atualizarei ... hoje(segunda-feira) de manhã implementei algo melhor na Gui.

No final do dia tentarei atualizar no Github.




3. Re: SGUI | SDL 1.x Gui

???
gokernel

(usa Linux Mint)

Enviado em 09/11/2018 - 12:41h


Olá pessoal !

NOVIDADE: O projeto mudou de nome ... SGUI( SDL GUI ) era um nome muito específico para uma API que pretendo tornar mais geral.

O projeto foi renomeado para ( Application API ) aqui:
https://github.com/gokernel2017/Application

No meu entender o nome ( Application API ) se encaixa melhor no que pretendo implementar ... uma API/GUI geral( não somente SDL ).



4. Re: SGUI | SDL 1.x Gui

???
gokernel

(usa Linux Mint)

Enviado em 11/11/2018 - 11:38h

Olá pessoal !

Projeto atualizado e OBJECT ( editor ) está parcialmente implementado...



Coloquei um simples exemplo de um simples Editor ( editor.c ) de Texto, implementado:
01 - Abre um texto usando: editor <arquivo>
02 - Salva o texto (se for aberto no inicio) usando: CTRL + S
03 - Cores da Syntax ainda não implementada ... somente comentário de linha.




5. Re: SGUI | SDL 1.x Gui

???
gokernel

(usa Linux Mint)

Enviado em 14/11/2018 - 12:08h

Projeto atualizado com OBJECT ( editor ) e Sintax Color C completa.
Arquivo de exemplo: editor.c



6. Re: SGUI | SDL 1.x Gui

???
gokernel

(usa Linux Mint)

Enviado em 16/11/2018 - 19:38h

Olá pessoal !

Projeto atualizado !

BUG encontrado e já corrigido:

O BUG no arquivo: src/app.c:


//BUG NAS LINHAS COM:
//-------------------------------------------------------
// if (sub->first && sub->first->visible) {
//-------------------------------------------------------

// COM BUG
static void app_ObjectMouseFind (OBJECT *obj) {
OBJECT *sub = obj->first;
while (sub) {
if (sub->visible && mx > sub->rect.x && mx < sub->rect.x+sub->rect.w && my > sub->rect.y && my < sub->rect.y+sub->rect.h) {
mouse_find = sub;
if (sub->first && sub->first->visible) {
app_ObjectMouseFind (sub);
}
}
sub = sub->next;
}
}
// COM BUG:
static void app_ObjectDrawAll (OBJECT *obj) {
OBJECT *sub = obj->first;
while (sub) {
if (sub->visible) {
sub->proc (sub, MSG_DRAW, 0);
if (sub->first && sub->first->visible) {
app_ObjectDrawAll (sub);
}
}
sub = sub->next;
}
}
//
// OK SEM BUG !!!
//
static void app_ObjectMouseFind (OBJECT *obj) {
OBJECT *sub = obj->first;
while (sub) {
if (sub->visible && mx > sub->rect.x && mx < sub->rect.x+sub->rect.w && my > sub->rect.y && my < sub->rect.y+sub->rect.h) {
mouse_find = sub;
if (sub->first) { // corrigido aqui !
app_ObjectMouseFind (sub);
}
}
sub = sub->next;
}
}
//
// OK SEM BUG !!!
//
static void app_ObjectDrawAll (OBJECT *obj) {
OBJECT *sub = obj->first;
while (sub) {
if (sub->visible) {
sub->proc (sub, MSG_DRAW, 0);
if (sub->first) { // corrigido aqui !
app_ObjectDrawAll (sub);
}
}
sub = sub->next;
}
}





7. Re: SGUI | SDL 1.x Gui

???
gokernel

(usa Linux Mint)

Enviado em 17/11/2018 - 12:59h


Projeto atualizado !

01 - Implementado parcialmente MENU ... só funciona com teclas (ACIMA, ABAIXO), ainda não funciona ao clicar do mouse.
02 - Implementado ( Lista de Funções para MENU ) em EDITOR.
03 - Implementado (Vai para Funçao) no EDITOR.

Depois tentarei implementar ( Templates ) para o EDITOR.

Para ver essas implementações, arquivo: "editor.c"



8. Re: SGUI | SDL 1.x Gui

???
gokernel

(usa Linux Mint)

Enviado em 18/11/2018 - 13:27h

Olá pessoal !

Projeto atualizado !


EDITOR TEMPLATE implementado:
01 - Em Windows a pasta dos templates ( files.tem ) fica em: c:\editor\template\
02 - Em Linux a pasta dos templates ( files.tem ) fica em: /usr/editor/template/

Para usar templates ( arquivos.tem ) no EDITOR é preciso criar a pasta manualmente em cada SO !

Exemplo de um simples template ( program.tem ):

//-------------------------------------------------------------------
//
// FILE:
// program.c
//
// COMPILE:
// gcc program.c -o program -Wall
//
//-------------------------------------------------------------------
//
#include <stdio.h>

int main (int argc, char **argv) {
return 0;
}


INFO: Para salvar(pela primeira vez) o texto editado ... em Edit Line, digite o nome do arquivo ... e no Editor pressionar as teclas: CTRL + S.

Próxima implementação: "auto complete"

Beta Ainda !!!



9. Re: SGUI | SDL 1.x Gui

Steve
Steve

(usa Slackware)

Enviado em 18/11/2018 - 15:48h

Tentei testar seu programa, mas nem compilar seguindo suas instruções, funcionou...
Apenas o Make funcionou...
A sua 2ª Instrução gcc program.c -o program libapp.a -lSDL -Wall
Ele disse que não existe program.c... e não existe mesmo...

E não funciona comando do tipo editor nome_arquivo

Mesmo tentando compilar apenas o Editor conforme informa dentro do arquivo não funciona... veja...

bash-4.4# gcc editor.c -o editor libapp.a -lSDL -Wall

editor.c: In function ‘call_button2’:
editor.c:108:34: warning: ‘%s’ directive writing up to 255 bytes into a region of size 234 [-Wformat-overflow=]
sprintf (buf, "%s%s", EDITOR_TEMPLATE_DIR, entry->d_name);
^~
editor.c:108:17: note: ‘sprintf’ output between 22 and 277 bytes into a destination of size 255
sprintf (buf, "%s%s", EDITOR_TEMPLATE_DIR, entry->d_name);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: libapp.a(o_editor.o): in function `proc_editor':
o_editor.c:(.text+0x743): undefined reference to `isperator'
/usr/bin/ld: o_editor.c:(.text+0x777): undefined reference to `iswordchar'
/usr/bin/ld: o_editor.c:(.text+0x851): undefined reference to `iswordchar'
collect2: error: ld returned 1 exit status



Poderia dizer onde esta o problema? E porque não consigo compilar?


10. Re: SGUI | SDL 1.x Gui

???
gokernel

(usa Linux Mint)

Enviado em 18/11/2018 - 17:58h

Olá Caro Steve !




01 - Quando Escrevi no arquivo ( README.txt ):
-----------------------------------------------------------------
gcc program.c -o program libapp.a -lSDL -Wall
-----------------------------------------------------------------
Escrevi de forma genérica, ... substituir "program.c" pelo nome do arquivo a ser compilado...
OK ?

02 - E não funciona comando do tipo editor nome_arquivo:

RESPORTA: Quando o "editor.c" compilar, é só executar assim:
-----------------------------------------------------
editor simple.c
OU
editor qualquer_arquivo.c
-----------------------------------------------------

03:
----------------------------------------------------------------------------------------
o_editor.c:(.text+0x743): undefined reference to `isperator'
/usr/bin/ld: o_editor.c:(.text+0x777): undefined reference to `iswordchar'
/usr/bin/ld: o_editor.c:(.text+0x851): undefined reference to `iswordchar'
----------------------------------------------------------------------------------------

Neste caso aqui compilou sem problema no Windows 7 32 BITS e Linux 64 BITS ...

OBS: modifiquei aqui(retirei o inline) e já atualizei o projeto ... faça o novo Download do código e tente compilar !

PERGUNTA:
Em qual Sistema Operacional vc está compilando e em 32 ou 64 BITS ?

Grato pelas infos !!!



11. Re: SGUI | SDL 1.x Gui

Steve
Steve

(usa Slackware)

Enviado em 18/11/2018 - 20:24h

gokernel escreveu: OBS: modifiquei aqui(retirei o inline) e já atualizei o projeto ... faça o novo Download do código e tente compilar !
PERGUNTA:
Em qual Sistema Operacional vc está compilando e em 32 ou 64 BITS ?


ESCLARECENDO: Eu sou iniciante em C, meu objetivo é ver, aprender e etc... Ainda estou caminhando...
Bom, agora ele compilou o editor.c e inclusive rodou mostrando a janela do seu programa, com linhas, fundo colorido, letras coloridas, bem maneiro! Seu programa é de grande ajuda para quem está aprendendo, pq tem muita coisa maneira, até mesmo a linha que se move na tela do cursor, UAU... As marcações com informações de coluna e etc... Garanto que é um Grande Aprendizado pra mim que sou iniciante... Se eu puder ajudar, acho que só posso mesmo ajudar testando kkkkkkkkkkkkkkkkkk pois pra dar palpite acho que não terei muita utilidade com o código, a não ser como usuário...

Tudo parece funcionar, mas claro, vc ainda está mechendo...
OBS: Ao clicar em Template, aqui deu Segmentation fault e fechou
Pode ser pq não tenho nenhum template obviamente, mas talvez devesse tratar essa exceção...
mas tipo, Achei o máximo o editor! Porque ele está escrito em C...


Estou compilando no Slackware64-Current (64Bits)


12. Re: SGUI | SDL 1.x Gui

???
gokernel

(usa Linux Mint)

Enviado em 18/11/2018 - 23:02h

Olá Steve !


Tudo parece funcionar, mas claro, vc ainda está mechendo...
OBS: Ao clicar em Template, aqui deu Segmentation fault e fechou
Pode ser pq não tenho nenhum template obviamente, mas talvez devesse tratar essa exceção...
mas tipo, Achei o máximo o editor! Porque ele está escrito em C...


Obrigado por reportar o BUG ... executei aqui e quebrou também(sem a pasta: /usr/editor/template/ ) rarssrs ...

Já atualizai o código com BUG corrigido do projeto e funcionou normal...

OBS: precisa criar a pasta, para usar template:
Em Windows: c:\editor\template\
Em Linux: /usr/editor/template/

E criar os arquivos de "templates.tem" nessa pasta para inserir no editor !

E se quiser executar o editor com tela maior(tamanho h) usar assim:
-----------------------------------------------------
editor arquivo.c -h 700
-----------------------------------------------------

Aqui uso assim, com tela GRANDE:
--------------------------------------------------------------------------
editor simple.c -h 768 -noframe
--------------------------------------------------------------------------
OBS: meu note tem resolução (1366 x 768 )

Grato mais uma vez pela info !!!




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts