Creazione Frontend

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Szat
Linux 1.x
Linux 1.x
Messaggi: 118
Iscritto il: ven 5 ago 2005, 0:00
Slackware: current
Kernel: linux-2.6.27.7
Desktop: Kde4.2
Distribuzione: Kubuntu
Località: Torino

Creazione Frontend

Messaggio da Szat »

Ciao a tutti

ho sempre programmato programmi eseguibili da shell. Ora mi piacerebbe imparare le QT4 quindi mi sto studiando il tutorial.

Ho un prrogramma e vorrei sviluppare una piccola GUI però non ho idea di come far comunicare le due applicazioni, quindi in pratica il motore esiste già, devo fare solo la GUI e vorrei che fossero ben staccati (due progetti diversi, il motore deve poter essere sviluppato in modo indipendente). Sono in cerca di consigli/risorse visto che non ho trovato molto su google (nemmeno qui nel forum).

Il tutto in C++ + QT4

Ciao e grazie in anticipo

Szat
Linux 1.x
Linux 1.x
Messaggi: 118
Iscritto il: ven 5 ago 2005, 0:00
Slackware: current
Kernel: linux-2.6.27.7
Desktop: Kde4.2
Distribuzione: Kubuntu
Località: Torino

Re: Creazione Frontend

Messaggio da Szat »

In realtà la condizione C++ è solo provvisoria... Potrei anche decidere di fare in modo diverso. Avete presente maple? Bene il kernel è staccato dalla GUI che è fatta in java...

Avatar utente
mcosta
Linux 0.x
Linux 0.x
Messaggi: 54
Iscritto il: mar 15 giu 2004, 0:00
Nome Cognome: Massimo Costa
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: KDE 4.2.4
Località: Marano (NA)

Re: Creazione Frontend

Messaggio da mcosta »

Per rendere il core e la GUI indipendenti ci sono fondamentalmente due strade:
  • Stabilire un canale di comunicazione (SOCKET, SHARED MEMORY, ECC...) e usarlo per far comunicare i due componenti
  • Estrarre dal core una libreria linkabile sia dalla GUI sia dal programma a linea di comando

Szat
Linux 1.x
Linux 1.x
Messaggi: 118
Iscritto il: ven 5 ago 2005, 0:00
Slackware: current
Kernel: linux-2.6.27.7
Desktop: Kde4.2
Distribuzione: Kubuntu
Località: Torino

Re: Creazione Frontend

Messaggio da Szat »

mcosta ha scritto:Per rendere il core e la GUI indipendenti ci sono fondamentalmente due strade:
  • Stabilire un canale di comunicazione (SOCKET, SHARED MEMORY, ECC...) e usarlo per far comunicare i due componenti
Ciao direi che questa è la soluzione che mi piace di più... Hai voglia di fare un piccolo esempio di implementazione?

Grazie per la risposta

Avatar utente
mcosta
Linux 0.x
Linux 0.x
Messaggi: 54
Iscritto il: mar 15 giu 2004, 0:00
Nome Cognome: Massimo Costa
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: KDE 4.2.4
Località: Marano (NA)

Re: Creazione Frontend

Messaggio da mcosta »

Szat ha scritto: Ciao direi che questa è la soluzione che mi piace di più... Hai voglia di fare un piccolo esempio di implementazione?

Grazie per la risposta
Ad esempio (usando SOCKET UDP), potresti avere nel core due thread: uno in ascolto su socket e l'altro in lettura da shell; alla ricezione di un ordine (da socket o shell) questo viene inoltrato verso il gestore degli ordini e processato.
In questo modo l'applicazione principale sarebbe indipendente dalla sorgente degli ordini.

La GUI deve a questo punto inviare comandi al core ed eventualmente riceverne risposta tramite socket UDP.

L'utilizzo di SOCKET UDP consente di
  • Non preoccuparti di gestire connessioni
  • Poter eseguire GUI e core su macchine diverse
Ovviamente l'esempio è banale ma penso che possa essere un buon inizio.

Ciao

Szat
Linux 1.x
Linux 1.x
Messaggi: 118
Iscritto il: ven 5 ago 2005, 0:00
Slackware: current
Kernel: linux-2.6.27.7
Desktop: Kde4.2
Distribuzione: Kubuntu
Località: Torino

Re: Creazione Frontend

Messaggio da Szat »

Pensavo fosse più semplice... CI penserò se tenere la GUI staccata dal kernel...

Dovrei spendere del tempo per pensarci... Ma alla fine conviene davvero oppure no?

Luke
Linux 0.x
Linux 0.x
Messaggi: 16
Iscritto il: mar 21 mar 2006, 14:26
Nome Cognome: Luca
Slackware: 13.37
Desktop: Xfce
Località: Pordenone

Re: Creazione Frontend

Messaggio da Luke »

mcosta dice bene ma mi permetto di aggiungere un'alternativa: in certi casi la GUI si occupa solo di raccogliere le preferenze dell'utente, poi apre una shell ed esegue il programma (o i programmi) da linea di comando con le opzioni scelte tramite la GUI. Non è l'approccio ideale per tutti i casi, ma se il programma a linea di comando non è interattivo forse è la soluzione migliore. Per esempio è l'approccio di k3b che alla fine lancia mkisofs, cdrecord, growisofs,ecc con i parametri del caso.

Ciao

Luke

Avatar utente
Blizzard
Master
Master
Messaggi: 1509
Iscritto il: mar 2 gen 2007, 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox
Contatta:

Re: Creazione Frontend

Messaggio da Blizzard »

Per semplicità di esempio puoi dare un'occhiata a KSlacky InfoPKG.
È un software che ho sviluppato in questa community con qt4 ed utilizza l'ultimo approccio descritto.
Una manciata di righe di codice molto semplici. Possono essere un discreto esempio.

Trovi la discussione in questo forum o il sito su google.

Gio

In KSIP utilizzo l'approccio di aprire un terminale. Questo perchè tutte le operazioni vanno a seguito di un /bin/su. In alternativa si può fare la fork di un nuovo processo e creare una pipe per mostrare l'output del processo spawned nell'interfaccia grafica. Ti viene qualcosa alla K3B

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Re: Creazione Frontend

Messaggio da lennynero »

Una cosa che mi chiedevo io è come si può creare una comunicazione, magari mediante socket, core<>GUI asicrona. Mi spiego meglio: aMuleGUI connessa ad amuled mostra tutte le info in tempo (quasi)reale in qualunque momento la si utilizza...come fa a non rispettare un protocollo di handshaking rigido e mostrare sempre le info aggiornate? c'è un thread che all'occorrenza serve quella GUI fornendovi tutti i dati? o usa la memoria condivisa? Inoltre si possono linkare diverse GUI contmporaneamente al core..., questo significa che il thread si moltiplica?

Grazie in anticipo per eventuali delucidazioni.

Szat
Linux 1.x
Linux 1.x
Messaggi: 118
Iscritto il: ven 5 ago 2005, 0:00
Slackware: current
Kernel: linux-2.6.27.7
Desktop: Kde4.2
Distribuzione: Kubuntu
Località: Torino

Re: Creazione Frontend

Messaggio da Szat »

Blizzard ha scritto:Per semplicità di esempio puoi dare un'occhiata a KSlacky InfoPKG.
È un software che ho sviluppato in questa community con qt4 ed utilizza l'ultimo approccio descritto.
Una manciata di righe di codice molto semplici. Possono essere un discreto esempio.
Ok ho già scaricato il sorgente. Grazie

Avatar utente
ZeD
Linux 1.x
Linux 1.x
Messaggi: 112
Iscritto il: ven 28 ott 2005, 12:30
Slackware: 12.1
Località: Terra

Re: Creazione Frontend

Messaggio da ZeD »

lennynero ha scritto:Una cosa che mi chiedevo io è come si può creare una comunicazione, magari mediante socket, core<>GUI asicrona.
Magari non è di diretto interesse,ma ti consiglio di spulciarti questo thread su iclc++ :)

Rispondi