HWGUI++ para Harbour++

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

HWGUI++ para Harbour++

Mensagem por marcosgambeta »

HWGUI++ é uma adaptação da HWGUI corrente, para ser utilizada em conjunto com o Harbour++.

Link do projeto no GitHub:
https://github.com/harbourplusplus/hwguipp

Seu desenvolvimento acompanhará o progresso do Harbour++, mas as alterações na HWGUI original serão monitoradas para manter um certo nível de sincronia.

Estando com o Harbour++ compilado, basta executar o comando abaixo para compilar a HWGUI++:

Código: Selecionar todos

hbmk2 hwguipp.hbp
E para compilar usando a HWGUI++:

Código: Selecionar todos

hbmk2 programa.prg hwguipp.hbc
Sugiro colocar a pasta hwguipp na pasta addons do Harbour++, para não ser preciso indicar a localização do arquivo hwguipp.hbc.
Atenciosamente,
Marcos Antonio Gambeta
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HWGUI++ para Harbour++

Mensagem por JoséQuintas »

Se achar interessante:

https://github.com/JoseQuintas/hwgui

Não tem nada diferente, porque é sincronizado com hwgui em mão dupla.
O que altera aí vai pra lá, e o que altera lá vém pra aí.
E sempre reseto para a posição oficial quando puxo alterações.

uso
git svn fetch
pra puxar do source-forge
E depois a opção reset main to here, descartando qualquer coisa diferente.

Se altero, uso
git svn update
pra enviar pro source-forge as alterações.

E por esse motivo, não faço nada diferente do oficial, porque vai entrar lá com certeza.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

HWGUI++ para Harbour++

Mensagem por marcosgambeta »

JoséQuintas escreveu:Se achar interessante:

https://github.com/JoseQuintas/hwgui
Obrigado.

Vai ser útil no monitoramento das alterações.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

HWGUI++ para Harbour++

Mensagem por marcosgambeta »

Por descuido meu, ficou faltando o arquivo hbutton.prg no repositório. Agora está presente.

Caso tenham algum problema na compilação, basta informar. Será tratado o mais breve possível.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

HWGUI++ para Harbour++

Mensagem por marcosgambeta »

Iniciei a implementação de uma sintaxe alternativa para a criação de objetos, conforme exemplo abaixo:

Código: Selecionar todos

#include "hwgui.ch"

PROCEDURE Main()

   LOCAL oDialog

   WITH OBJECT oDialog := HDialog():new()
      :title   := "Test"
      :nWidth  := 800
      :nHeight := 600
      :activate()
   ENDWITH

RETURN
Código equivalente usando comandos:

Código: Selecionar todos

#include "hwgui.ch"

PROCEDURE Main()

   LOCAL oDialog

   INIT DIALOG oDialog TITLE "Test" SIZE 800, 600

   ACTIVATE DIALOG oDialog

RETURN
Conforme a implementação avançar, testes serão adicionados na pasta 'tests'.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

HWGUI++ para Harbour++

Mensagem por marcosgambeta »

Para evitar código duplicado, a utilização das funções hwg_bitand e hwg_bitor foi descontinuada em favor das funções hb_bitand e hb_bitor, respectivamente.

As funções que forem descontinuadas não serão removidas na série corrente (1.x.x). Elas continuarão presentes, para não afetar o código dos usuários, e sua remoção poderá ocorrer na próxima série (2.x.x), dando assim tempo para os ajustes necessários.

Mudanças assim estarão registradas no arquivo CHANGES.md.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

HWGUI++ para Harbour++

Mensagem por marcosgambeta »

Junto com a sintaxe alternativa, outro recurso que receberá atenção será a possibilidade de trabalhar com herança conforme exemplo abaixo:

Código: Selecionar todos

#include "hwgui.ch"

PROCEDURE Main()

   LOCAL oDialog

   WITH OBJECT oDialog := MyDialog():new()
      :title   := "Minha janela de diálogo"
      :nWidth  := 640
      :nHeight := 480
      :myMethod()
      :activate()
   ENDWITH

RETURN

#include "hbclass.ch"

CLASS MyDialog FROM HDialog

   METHOD myMethod

ENDCLASS

METHOD myMethod() CLASS MyDialog

   hwg_MsgInfo("Executando método MyMethod", "Aviso")

RETURN NIL
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

HWGUI++ para Harbour++

Mensagem por marcosgambeta »

Mais dois exemplos envolvendo a sintaxe alternativa e herança:

Código: Selecionar todos

#include "hwgui.ch"

PROCEDURE Main()

   LOCAL oDialog
   LOCAL oButtonOk
   LOCAL oButtonCancel

   WITH OBJECT oDialog := HDialog():new()

      :title   := "Test"
      :nWidth  := 640
      :nHeight := 480

      WITH OBJECT oButtonOk := HButton():new()
         :title  := "&OK"
         :nLeft  := 20
         :nTop   := 20
         :bClick := {||hwg_MsgInfo("OK clicked", "Information")}
      ENDWITH

      WITH OBJECT oButtonCancel := HButton():new()
         :title  := "&Cancel"
         :nLeft  := 120
         :nTop   := 20
         :bClick := {||hwg_MsgInfo("Cancel clicked", "Information")}
      ENDWITH

      :activate()

   ENDWITH

RETURN

Código: Selecionar todos

#include "hwgui.ch"

PROCEDURE Main()

   LOCAL oDialog

   WITH OBJECT oDialog := MyDialog():new()
      :title   := "My dialog window"
      :nWidth  := 640
      :nHeight := 480
      :myMethod()
      :activate()
   ENDWITH

RETURN

#include "hbclass.ch"

CLASS MyDialog FROM HDialog

   DATA oButtonOK
   DATA oButtonCancel

   METHOD myMethod

ENDCLASS

METHOD myMethod() CLASS MyDialog

   WITH OBJECT ::oButtonOK := HButton():new()
      :title  := "&OK"
      :nLeft  := 20
      :nTop   := 20
      :bClick := {||hwg_MsgInfo("OK clicked", "Information")}
   ENDWITH

   WITH OBJECT ::oButtonCancel := HButton():new()
      :title  := "&Cancel"
      :nLeft  := 120
      :nTop   := 20
      :bClick := {||hwg_MsgInfo("Cancel clicked", "Information")}
   ENDWITH

RETURN NIL
As modificações feitas na classe HButton serão reproduzidas nos outros controles.
Atenciosamente,
Marcos Antonio Gambeta
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

HWGUI++ para Harbour++

Mensagem por alxsts »

Olá!

Parabéns Marcos! Belos trabalhos!
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HWGUI++ para Harbour++

Mensagem por JoséQuintas »

marcosgambeta escreveu:Junto com a sintaxe alternativa, outro recurso que receberá atenção será a possibilidade de trabalhar com herança
Só estranhei.
Na prática a atual permite isso.
E essa é minha idéia de uso, assim defino os meus visuais de forma padrão.
Mas com a hwgui original, isso vai ser aproveitado mais na criação do que durante o uso, exceto se criar novos métodos.
Ainda prefiro o redimensionamento da WVG, e vou tentar levar isso pra HWGUI.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

HWGUI++ para Harbour++

Mensagem por marcosgambeta »

Depois de compilar o Harbour++ no Fedora 36, testei a HWGUI++. Foi preciso uma série de ajustes, mas no final funcionou corretamente.

Segue o mesmo procedimento usado no Windows:

Compilar a HWGUI++:

Código: Selecionar todos

hbmk2 hwguipp.hbp
Compilar programas/projetos:

Código: Selecionar todos

hbmk2 programa hwguipp.hbc

Código: Selecionar todos

hbmk2 projeto.hbp hwguipp.hbc
Qualquer erro ou problema na utilização, basta registrar no link abaixo:

https://github.com/harbourplusplus/hwguipp/issues

A mensagem pode ser em português.

Na medida do possível, as duas versões (GTK+ e WinAPI) serão mantidas em sincronia.
Atenciosamente,
Marcos Antonio Gambeta
Responder