Clipper On Line • Ver Tópico - Python e Harbour, indo para GUI LINUX

Python e Harbour, indo para GUI LINUX

Discussão sobre outras linguagens de programação.

Moderador: Moderadores

 

Python e Harbour, indo para GUI LINUX

Mensagempor Itamar M. Lins Jr. » 23 Abr 2020 14:01

Ola!

Probably many options. I'm a Linux user (currently Fedora 31, Harbour 3.2, gcc, Python 3). I've had success splitting up terminal applications into two parts:
1. Using glade and Python3 to develop a GUI front end, which calls....
2. A Harbour database "server" which does all the database heavy lifting

Item #2 can be based on the original Harbour terminal application code. Item #1 will be new. Good luck with the transition!

Como ?
* SAMPLE.PRG  Template Harbour 3.2 program callable from anywhere
*    sample compile: hbmk2 -static hbnf.hbc xhb.hbc sample.prg
*
* Sample call from Python3: >>> import subprocess
*                           >>> mret = subprocess.check_output(["./sample", "open"])
*   
* code as shown assumes one text parameter
* the do case statement can act on any number of predefined parameters
*          and multiple parameters per call if you so choose

PROCEDURE  MAIN(...)

PUBLIC mparms                                  && passed parameters

mparms      := HB_AParams()                    && array of parms
mparm_count := len( mparms )

msel = mparms[1]                               && get first parameter

do case
    case msel = "open"
        * code for open here
    case msel = "foobar"
        * code for foobar here
    otherwise
        * ...
endcase

RETURN

** End **


Não vi o código Python. Deve ser a parte das telas. Será DBF ?

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor JoséQuintas » 23 Abr 2020 16:11

Só pra lembrar... que todos esquecem...
O Harbour como ser usado totalmente como DLL.

Será que compensa mexer no Harbour pra trabalhar com essas coisas.....
Ou não seria melhor colocar como DLL e usar...

De vez em quando penso nisso.
Porque trazer recursos que já existem no VB para o Harbour, se podemos levar o Harbour para o VB?

E deve valer pra página de internet também.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor bencz » 24 Abr 2020 07:07

Nada de mais nesse projeto .... apenas um programa chamando outro....
Imagem
Avatar de usuário

bencz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 517
Data de registro: 28 Abr 2012 17:36
Curtiu: 6 vezes
Mens.Curtidas: 34 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor Itamar M. Lins Jr. » 25 Abr 2020 11:18

Ola!
Para quem quer aprender Python ou já sabe algo, e quer integrar com Harbour.
É uma noticia, apenas para informar que tem gente usando ou pelo menos tentando.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor Vlademiro » 25 Abr 2020 12:06

Uma outra forma, além das que foram postas, é criar um webservice usando Harbour. Os retornos podem ser em JSON. A lib httpd permite criar o servidor com poucas linhas e as funções hb_jsonencode/decode tratam das entradas e saídas.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor bencz » 25 Abr 2020 17:52

Vlademiro

Ai sim, vejo coisas boas!
Imagem
Avatar de usuário

bencz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 517
Data de registro: 28 Abr 2012 17:36
Curtiu: 6 vezes
Mens.Curtidas: 34 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor alxsts » 30 Abr 2020 18:54

Olá!
Vlademiro escreveu:Uma outra forma, além das que foram postas, é criar um webservice usando Harbour


Poderia postar um exemplo funcional?
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor Vlademiro » 30 Abr 2020 21:37

Claro, no momento não estou no computador, mais tarde eu coloco algumas dicas para quem quer começar "do zero"
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor Vlademiro » 30 Abr 2020 22:19

Anexei um exemplo que já tinha aqui.

httpd.prg
(1.19 KiB) Baixado 115 vezes


Ele deve ser compilado com hbhttpd.hbc
Ainda não é o webservice, mas já é um começo. Note que cada pasta virtual corresponde ao retorno de uma função. (Veja o hash na linha 29)
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor Vlademiro » 30 Abr 2020 22:38

Agora, a partir do exemplo anterior, substitua a função Start por :


FUNCTION Start()

   LOCAL hStruct := { => }
   
   hStruct[ "CODCLI" ] := "0001"
   hStruct[ "NOME" ] := "HELLO WORLD"
   
   UAddHeader( "Content-Type", "application/json" ) // Json type return

    RETURN HB_JsonEncode( hStruct )



Temos um retorno no formato JSON, que pode ser lido por qualquer aplicativo que consiga "enchergar" o servidor na rede.

A função UAddHeader() informa ao navegador que o retorno é em formato JSON
A função HB_JsonEncode converte um hash em uma string json

Agora vamos criar um cliente simples em PHP...
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor Vlademiro » 30 Abr 2020 22:57

Esse pequeno script, feito em PHP, lê o JSON do Harbour e o transforma em hash php (faz o inverso)

<?php
// Cria o cURL
$curl = curl_init();
// Seta algumas opções
curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'http://localhost:8002'
]);
// Envia a requisição e salva a resposta
$response = curl_exec($curl);
// Fecha a requisição e limpa a memória
$response = json_decode( $response );
var_dump( $response );

curl_close($curl);



Para que funcione precisa da extensão curl funcionando no seu PHP.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor Vlademiro » 30 Abr 2020 23:00

No contrib do harbour tem um exemplo desse httpd com outras funções, inclusive com rotinas de autenticação (sessão) que você pode usar para proteger seu webservice de acessos indesejados.

Se você está familiarizado com JS/JQuery, existem diversas libs que geram resultados muito bons a partir da leitura de um json. Por exemplo:

http://www.alpacajs.org/

Agora com Python eu já não conheço, mas nada que uma pesquisa no google não resolva, já que o JSON se transformou em um padrão.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor alxsts » 01 Mai 2020 19:07

Olá!

Obrigado Vlademiro!
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Python e Harbour, indo para GUI LINUX

Mensagempor mauricioportela » 05 Nov 2020 09:33

Não vi o código Python. Deve ser a parte das telas. Será DBF ?


a chamada do codigo python:


# importa do modulo de processos/subprocessos
import subprocess
# recebe na variavel 'mret' - um bloco
mret = subprocess.check_output(["./sample", "open"])



Eu executei aqui no meu computador (windows 10) mas, ele congela o interpretador python.

eu troquei:
./sample

por
sample.exe
Avatar de usuário

mauricioportela
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 83
Data de registro: 29 Jul 2016 04:22
Cidade/Estado: Vitoria da Conquista/Bahia
Curtiu: 4 vezes
Mens.Curtidas: 21 vezes




Retornar para Outras linguagens de programação

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 15 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro