Página 1 de 1

HWGUI++ para Harbour++

Enviado: 21 Jun 2022 14:49
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.

HWGUI++ para Harbour++

Enviado: 21 Jun 2022 16:55
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.

HWGUI++ para Harbour++

Enviado: 22 Jun 2022 06:30
por marcosgambeta
JoséQuintas escreveu:Se achar interessante:

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

Vai ser útil no monitoramento das alterações.

HWGUI++ para Harbour++

Enviado: 18 Jul 2022 07:13
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.

HWGUI++ para Harbour++

Enviado: 30 Jul 2022 04:02
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'.

HWGUI++ para Harbour++

Enviado: 30 Jul 2022 04:20
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.

HWGUI++ para Harbour++

Enviado: 30 Jul 2022 10:34
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

HWGUI++ para Harbour++

Enviado: 30 Jul 2022 16:11
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.

HWGUI++ para Harbour++

Enviado: 30 Jul 2022 17:34
por alxsts
Olá!

Parabéns Marcos! Belos trabalhos!

HWGUI++ para Harbour++

Enviado: 31 Jul 2022 11:57
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.

HWGUI++ para Harbour++

Enviado: 07 Ago 2022 13:57
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.