Clipper On Line • Ver Tópico - GT-HWGUI
Página 1 de 2

GT-HWGUI

MensagemEnviado: 27 Nov 2020 16:24
por JoséQuintas
Acabo de sugerir a criação da GT_HWGUI.

O segredo principal é este:

         hb_gtInfo( HB_GTI_NOTIFIERBLOCKGUI, {| nEvent, ... | t_oCrt:notifier( nEvent, ... ) } )


Como eu já disse por aqui várias vezes, é usar a janela do Harbour como Main.
Mas não se preocupem: seria uma alternativa a mais, não algo obrigatório.

GT-HWGUI

MensagemEnviado: 27 Nov 2020 17:47
por asimoes
Mostra um exemplo Quintas

GT-HWGUI

MensagemEnviado: 27 Nov 2020 17:56
por JoséQuintas
asimoes escreveu:Mostra um exemplo Quintas


Não mudaria nada, exceto a tela de fundo, caso usasse essa outra Main, igual acontece com GTWVG.

Pra ficar igual, faltaria também o redimensionamento automático, que é aquela questão de fator de conversão.

Ao invés de x, y usar x * fator e y * fator
Com default 1, continua como sempre, porque x * 1 = x.

Um exemplo: gtwvg.
Tela "console" com buttons hwgui, ou scrollbar, ou outros.

Com a diferença de poder usar telas totalmente hwgui, junto ou não.

GT-HWGUI

MensagemEnviado: 27 Nov 2020 20:11
por JoséQuintas
Primeiro protótipo de uma GT-HWGUI.
Então... GTWVG é assim... igual HWGUI ficou.... kkkkk
Console com recursos HWGUI !!!!!
GTWVG está só emprestando a janela e nada mais, nem testei com WVT.

GT-HWGUI

MensagemEnviado: 29 Nov 2020 07:32
por asimoes
Show Quintas
Mas isso ai precisar estar nos projetos harbour e hwgui certo?
Só falta ver na GTWVT

GT-HWGUI

MensagemEnviado: 29 Nov 2020 19:42
por JoséQuintas
Decidi dar um empurrãozinho das coisas....
Lancei a descoberta no grupo harbour-users.
Com certeza o pessoal das LIBs podem criar alguma coisa bem mais rápido do que eu, porque tem a ver diretamente com as LIBs.
E se aquilo for exclusivo da GTWVG, de repente pode ser aberto pra tudo, Linux e Windows.

GT-HWGUI

MensagemEnviado: 30 Nov 2020 21:47
por JoséQuintas
Esse meu teste entrou na pasta de testes da HWGUI.
Mas acho que não entenderam que o fonte da Main console é da própria Main HWGUI.

GT-HWGUI

MensagemEnviado: 01 Dez 2020 04:03
por JoséQuintas
O vídeo do youtube foi bloqueado, relatando sobre direitos autorais.
Como o post contém o que havia no vídeo, por enquanto excluindo a maior parte dele.
Não sei que parte tem a ver com isso, apenas imagino o nice button, com o nome do autor.
Espero que não seja a hwgui, ou a gtwvg.

GT-HWGUI

MensagemEnviado: 01 Dez 2020 06:36
por asimoes
Tinha música no vídeo? eles podem ter bloqueado por isso, remove o nome do Culik

GT-HWGUI

MensagemEnviado: 01 Dez 2020 11:58
por JoséQuintas
Gravei usando o celular, acabou entrando a música que tava tocando, mas bem baixo.

Mas o principal é isto mesmo:
         hb_gtInfo( HB_GTI_NOTIFIERBLOCKGUI, {| nEvent, ... | t_oCrt:notifier( nEvent, ... ) } )


Toda janela tem rotina de tratamento GUI, isso coloca a mesma rotina na janela GT.
E copia a classe principal da lib gui, altera o nome pra usar pra janela console.
Tipo... pega a classe da Window Main da hwgui, copia para GTMain, e altera pra, ao invés de criar uma janela, define a atual GT como sendo a janela Main.
Se usar a classe original, continua hwgui original.
Se usar essa cópia com outro nome, a janela GT passa a ser a Main.
Em outras palavras:
- na GT tá avisando que os eventos serão tratados pela hwgui
- na hwgui tá apenas trocando a janela de fundo pela atual GT

Lembrando:
Estamos falando de uma janela Main GT.
Outras janelas, como as DIALOGs, continuam como sempre foram, totalmente hwgui.
Então, não se perde nada da hwgui, apenas acrescenta a opção de determinada janela ser GT, e mesmo assim ter recursos hwgui nessa janela GT.

GT-HWGUI

MensagemEnviado: 02 Dez 2020 11:46
por JoséQuintas
Só fiz um teste rápido, sempre os mesmos fontes.
Usei o exemplo testget2.

Lembrando:
esse controle precisa de uma DIALOG, ao usar a GT, ela não tem as rotinas que a DIALOG tem.
Mas provavelmente basta acrescentar na classe.
É SÓ EXEMPLO, NÃO COMPENSA USAR CERTAS COISAS EM JANELA CONSOLE.
No uso prático vai ser uma DIALOG mesmo, aqui é só pra reforçar que a tela GT é apenas "uma tela de fundo" e nada mais, como se fosse um papel de parede.
É só pegar o fonte da dialog, e trocar a janela de fundo por uma GT, SE FOSSE O CASO, mas NÃO COMPENSA.

Comparando com hwgui, é como se eu tivesse usado a janela Main() da hwgui ao invés de usar a DIALOG, que é a forma correta.
Lembrando que o oposto seria verdadeiro, hwgui usando console vira gtwvg, gtwvg usando janela gui vira GUI.
Mas... se hwgui tem tudo pronto, não compensa mexer na gtwvg, foi só uma comparação simples, que sempre mencionei, e tá mais do que provado que é isso mesmo.

teste.png


Lembrando também. É HWGUI pura, apenas usando a janela GT como fundo.
Só um fonte a mais, sem mexer em NADA da hwgui.
Usando uma DIALOG, é a DIALOG que é responsável por cores e efeitos para esses controles.
O que se perdeu, é o que não está implementado no fonte pra usar GT, mas que não precisa, porque esse fonte funcionaria direto na DIALOG original, e usar GT seria só perda de tempo PRA ISSO.
Na janela GT usaria os GETS normais, afinal, ela seria pra isso.

Traduzindo:
- Pode usar tela GT
- Pode usar tela GT com coisas da HWGUI
- Pode usar tela HWGUI total
- E tudo ao mesmo tempo
Melhor que isso pra converter aplicativo impossível.

GT-HWGUI

MensagemEnviado: 02 Dez 2020 21:41
por JoséQuintas
Aqui fica claro o funcionamento de GUI:

SYSTEM ERROR
Error BASE/2010 Argument error: WAPI_SETTEXTCOLOR
Called from WAPI_SETTEXTCOLOR(0)
Called from WVGTSTICON:HANDLEEVENT(561)
Called from WVGCRT:NOTIFIER(393)
Called from (b)WVGSETAPPWINDOW(78)
Called from WAPI_ENABLEWINDOW(0)
Called from WVGTSTICON:DISABLE(409)
...


Notem que as mensagens do Windows passam por:
wvgSetAppWindow(), janela main igual usei pra HWGUI
wvgCrt:Notifier, similar à OnEvent() da HWGUI para a WINDOW MAIN
wvgTstIcon:Notifier, similar à OnEvent() do ícone da HWGUI

É troca de mensagens entre janelas o tempo todo.
Depois vou ver porque deu esse erro... é estranho porque o que não falta no aplicativo é ícone.... rs

GT-HWGUI

MensagemEnviado: 02 Dez 2020 22:19
por asimoes
Isso é OnEvent na hwgui fica executando como se fosse uma thread
Todas as classes se não me engano tem o seu OnEvent

GT-HWGUI

MensagemEnviado: 03 Dez 2020 17:47
por JoséQuintas
asimoes escreveu:Isso é OnEvent na hwgui fica executando como se fosse uma thread
Todas as classes se não me engano tem o seu OnEvent


Isso, e se não tiver, é porque pode estar na classe herdada.

Uma coisa que a GTWVG usa, talvez pra facilitar localizar, ou pra evitar pegar método errado, é o método com o nome da classe.

tipo:

CLASS wvgWindow
...
METHOD wvgWindow:HandleEvent()


ou

CLASS toolbar INHERIT wvgWindow, wvgPartHandler, wvgOutra
METHOD x()
   ::wvgWindow:HandleEvent()


é interessante saber dessa opção.
de repente uma classe herda outra, que herda outra, que herda outra, ou até que herda várias classes de uma vez.
E se queremos o método da classe herdada 1 e não da classe herdada 2?
Ou ao chamar ::Super:New(), vai fazer o new() de qual delas?
Do jeito acima, pode evitar confusão.

Pois é... isso de classe vai longe.
E se não tomar cuidado, pode deixar passar coisa importante.

No começo estranhei esse uso, mas depois entendi o porque.

GT-HWGUI

MensagemEnviado: 04 Dez 2020 15:02
por JoséQuintas
Agora vocês vão se espantar mais ainda.
Considerando apenas que funciona, sem se importar com outros detalhes.

A classe responsável por tudo.... não deu pra deixar menor.... kkkkk
Somente 3 linhas.
É a classe da HWGUI, trocando a janela pela GT.

CLASS HGT INHERIT HMainWindow
   METHOD New() INLINE ::Super:New(), ::Handle := hb_gtInfo( HB_GTI_WINHANDLE ), Self
ENDCLASS


E... na janela GT, desvia eventos GUI para os eventos da classe, que passou a ser a nova Main da hwgui.

THREAD STATIC MainWVT

FUNCTION MainGT()

   IF Empty( MainWVT )
      MainWVT := HGT():New()
      MainWVT:Handle := hb_gtInfo( HB_GTI_WINHANDLE )
      hb_gtInfo( HB_GTI_NOTIFIERBLOCKGUI, { | nEvent, ... | MainWVT:OnEvent( nEvent, ... ) } )
      //MainWVT:IsGT := .T.
   ENDIF

   RETURN MainWVT


De adicional, já tinha no fonte anterior, o evento de encerramento destruindo a classe que foi criada.

EXIT PROCEDURE KillGTChildren()

   IF HB_ISOBJECT( MainWVT ) .AND. MainWVT:ClassName() == "WVTCRT" .AND. MainWVT:isGT
      MainWVT:destroy()
      MainWVT := NIL
   ENDIF

   RETURN


Até eu me espantei agora...

GT-HWGUI

MensagemEnviado: 04 Dez 2020 15:18
por JoséQuintas
Ah sim... faltou...
Vai ficar maior kkkkkk

No mesmo fonte, precisa disto:

THREAD STATIC MainWVT


É a variável aonde vai ficar a classe da Main.

Lógico, e os #include, e #define

#include "hbclass.ch"
#include "hbgtinfo.ch"
#include "hwgui.ch"
#define HB_GTI_EXTENDED                   1000
#define HB_GTI_NOTIFIERBLOCKGUI           ( HB_GTI_EXTENDED + 10 )

GT-HWGUI

MensagemEnviado: 04 Dez 2020 15:34
por JoséQuintas
Tô rindo à toa por vários motivos.

Um deles, com certeza é:
passamos tanto tempo discutindo sobre GTWVG/GUI....
E tudo resolvido com 3 linhas....

Eu disse... tem coisa interessante na GTWVG, até mesmo pra acabar com o uso dela...

Só sobra da GTWVG a janela, que permite inserir a rotina GUI, o resto passa a ser HWGUI.
Todo restante da GTWVG... não precisa mais, hwgui tem tudo.

GT-HWGUI

MensagemEnviado: 04 Dez 2020 16:11
por JoséQuintas
Aproveitando também....

Não tem nada complexo aí de programação.
Não fiz nada diferente do que outras pessoas poderiam fazer.
Eu dizia sobre isso, dizia que deveria ser simples, mas não sabia como fazer.
Mas finalmente encontrei.

Não tem nada de programador avançado nisso.

E continuo sendo principiante em hwgui.
Uma coisa não tem nada a ver com a outra.
3 linhas de programação não me transformam em nenhum conhecedor de gui/hwgui.

GT-HWGUI

MensagemEnviado: 04 Dez 2020 18:56
por JoséQuintas
Agora fiz o teste removendo partes da GTWVG.
Pode apagar TODOS os PRGs.
Dos 8 fontes em C, só precisa 3: gtwvgd.c, wvgcore.c, wvgcuig.c
Devem ter funções que não precisaria, mas precisa dos 3.
Não sei se no XHarbour tem esses daí.

GT-HWGUI

MensagemEnviado: 10 Dez 2020 15:10
por JoséQuintas
Alguém poderia testar se isso também funciona em Linux?
Pode ser uma questão decisiva sobre tudo isso.

GT-HWGUI

MensagemEnviado: 12 Dez 2020 12:08
por JoséQuintas
Só teste rascunho....

gtwvg.png


gtwvt.png


gtwvw.png


1. Usando GTWVG
2. Usando GTWVT, a lib gui interna do Harbour
3. Usando GTWVW, mas Infelizmente, WVW não é uma GT oficial, e não mostrou o texto console.

Precisa mais testes, mas se tudo certo, elimina até a própria janela WVG, PRA USAR WVG.

GT-HWGUI

MensagemEnviado: 17 Dez 2020 18:36
por JoséQuintas
Está lançada a idéia....
Melhor lugar impossível, um grande assunto pra discussão...

https://github.com/harbour/core/discussions/222

GT-HWGUI

MensagemEnviado: 17 Dez 2020 19:00
por JoséQuintas
De repente acontece igual à documentação....

Estavam discutindo sobre formatos, alguém perguntou como era a documentação atual, e comparei com uma base de dados em formato txt.
Coincidência ou não, depois disso... voilá... tudo ficou disponível em site e outros formatos.
Quem sabe....

GT-HWGUI

MensagemEnviado: 23 Dez 2020 22:38
por JoséQuintas
Após uma semana de iniciada a discussão.... NADA

GT-HWGUI

MensagemEnviado: 29 Dez 2020 18:48
por Itamar M. Lins Jr.
Olá!
Após uma semana de iniciada a discussão.... NADA


Simples, vão pegar sua ideia e talvez farão um produto para vender. Quem sabe ?
A mesma coisa coisa que fazem com as ideias do Alexander Kresin.

Saudações,
Itamar M. Lins Jr.

GT-HWGUI

MensagemEnviado: 02 Jan 2021 23:35
por JoséQuintas
A propósito....
Me mostraram os fontes da WVWTools 2, pra expandir WVW.
É praticamente isso.