Autore Topic: Progettazione di GUI tramite tools automatici  (Letto 2251 volte)

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Progettazione di GUI tramite tools automatici
« il: 13 ſettembre 2011, 23:30:41 »
/MOD Topic Splittato: Continua qui la discussione sulla progettazione delle GUI...

Citazione da: "cdimauro"
Ma ogni volta definire all'arma bianca? Possibile che non si possa fare una discussione civile, anche se l'argomento è spinoso? Mah. :roll:
Citazione da: "TheKaneB"
Ad esempio mi piacerebbe vedere un porting di Qt su MOS,
No, dai. Le Qt no. Se di porting si dovesse parlare, preferirei di gran lunga quello di WPF (Windows Presentation Foundation). :animals-pig: (purtroppo manca l'emoticon che sbava  :snooty: )
Banalmente per le Qt la cosa sarebbe più fattibile e sono delle ottime librerie C++ (uno dei pochi linguaggi ufficialmente supportati dal devkit di MorphOS, dopo il C e l'assembly :D ). Figurati che casino portare Mono su MorphOS, e non so nemmeno se lo stesso Mono sia sufficiente (è compatibile con WPF? non ne ho idea sinceramente EDIT: http://www.mono-project.com/Compatibility non è compatibile con WPF e non hanno nemmeno intenzione di implementarlo).
Citazione

Citazione
perchè MUI4 proprio non riesco a digerirlo (nè tantomeno le versioni vecchie e i cloni, come Zune).
Come mai?
Perchè è vecchio. Cablare la GUI dentro al codice è una cosa da anni '90. Oggi, nel 2011, voglio un editor visuale o almeno un sistema per definire le GUI a prescindere dal codice (cosa che Qt mi offre tramite QtDesigner, ad esempio). Programmare con MUI, invece, significa affossare la GUI in chilometri di illegibili funzioni innestate, abbellite da simpatici #define che trasformano un potenziale programma C in una oscena lista della spesa con sindrome da CAPS-LOCK.

Esempio tratto da http://en.wikibooks.org/wiki/Aros/Developer/Zune

Codice: [Seleziona]
// gcc hello.c -lmui
#include <exec/types.h>
#include <libraries/mui.h>
 
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/muimaster.h>
#include <clib/alib_protos.h>
 
int main(void)
{
    Object *wnd, *app, *but;
 
    // GUI creation
    app = ApplicationObject,
        SubWindow, wnd = WindowObject,
            MUIA_Window_Title, "Hello world!",
            WindowContents, VGroup,
                Child, TextObject,
                    MUIA_Text_Contents, "33cHello world!nHow are you?",
                    End,
                Child, but = SimpleButton("_Ok"),
                End,
            End,
        End;
 
    if (app != NULL)
    {
        ULONG sigs = 0;
 
        // Click Close gadget or hit Escape to quit
        DoMethod(wnd, MUIM_Notify, MUIA_Window_CloseRequest, TRUE,
                 (IPTR)app, 2,
                 MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);
 
        // Click the button to quit
        DoMethod(but, MUIM_Notify, MUIA_Pressed, FALSE,
                 (IPTR)app, 2,
                 MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);
 
        // Open the window
        set(wnd, MUIA_Window_Open, TRUE);
 
        // Check that the window opened
        if (XGET(wnd, MUIA_Window_Open))
        {
            // Main loop
            while((LONG)DoMethod(app, MUIM_Application_NewInput, (IPTR)&sigs)
                  != MUIV_Application_ReturnID_Quit)
            {
                if (sigs)
                {
                    sigs = Wait(sigs | SIGBREAKF_CTRL_C);
                    if (sigs & SIGBREAKF_CTRL_C)
                        break;
                }
            }
        }
        // Destroy our application and all its objects
        MUI_DisposeObject(app);
    }
 
    return 0;
}

Comunque, lasciamo perdere questo OT, magari se ne riparla in un topic adatto :-)
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline ShInKurO

  • Tech
  • *****
  • Post: 66
  • Karma: +0/-0
    • Mostra profilo
Re: AmigaOS4.1.3 (Update3) rilasciato
« Risposta #1 il: 14 ſettembre 2011, 06:53:09 »
Citazione da: "TheKaneB"
Citazione
Citazione
perchè MUI4 proprio non riesco a digerirlo (nè tantomeno le versioni vecchie e i cloni, come Zune).
Come mai?
Perchè è vecchio. Cablare la GUI dentro al codice è una cosa da anni '90. Oggi, nel 2011, voglio un editor visuale o almeno un sistema per definire le GUI a prescindere dal codice (cosa che Qt mi offre tramite QtDesigner, ad esempio). Programmare con MUI, invece, significa affossare la GUI in chilometri di illegibili funzioni innestate, abbellite da simpatici #define che trasformano un potenziale programma C in una oscena lista della spesa con sindrome da CAPS-LOCK.

Esempio tratto da http://en.wikibooks.org/wiki/Aros/Developer/Zune

Codice: [Seleziona]
// gcc hello.c -lmui
#include <exec/types.h>
#include <libraries/mui.h>
 
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/muimaster.h>
#include <clib/alib_protos.h>
 
int main(void)
{
    Object *wnd, *app, *but;
 
    // GUI creation
    app = ApplicationObject,
        SubWindow, wnd = WindowObject,
            MUIA_Window_Title, "Hello world!",
            WindowContents, VGroup,
                Child, TextObject,
                    MUIA_Text_Contents, "33cHello world!nHow are you?",
                    End,
                Child, but = SimpleButton("_Ok"),
                End,
            End,
        End;
 
    if (app != NULL)
    {
        ULONG sigs = 0;
 
        // Click Close gadget or hit Escape to quit
        DoMethod(wnd, MUIM_Notify, MUIA_Window_CloseRequest, TRUE,
                 (IPTR)app, 2,
                 MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);
 
        // Click the button to quit
        DoMethod(but, MUIM_Notify, MUIA_Pressed, FALSE,
                 (IPTR)app, 2,
                 MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);
 
        // Open the window
        set(wnd, MUIA_Window_Open, TRUE);
 
        // Check that the window opened
        if (XGET(wnd, MUIA_Window_Open))
        {
            // Main loop
            while((LONG)DoMethod(app, MUIM_Application_NewInput, (IPTR)&sigs)
                  != MUIV_Application_ReturnID_Quit)
            {
                if (sigs)
                {
                    sigs = Wait(sigs | SIGBREAKF_CTRL_C);
                    if (sigs & SIGBREAKF_CTRL_C)
                        break;
                }
            }
        }
        // Destroy our application and all its objects
        MUI_DisposeObject(app);
    }
 
    return 0;
}

Comunque, lasciamo perdere questo OT, magari se ne riparla in un topic adatto :-)


Non basare il tuo giudizio sugli hello world in giro nell'universo Amiga, con MUI puoi fare moolto di più. Si tratta di riorganizzare il codice in moduli, separando le parti specifiche della gui da quelle di elaborazione, considera che questa è una cosa che va oltre la programmazione ad oggetti (per esempio NoWinED segue la programmazione OOP ma non questa filosofia, del resto quel codice è un campo di battaglia per l'apprendimento delle basi MUI..., mentre credo che i sorgenti di Ambient o del recente OWB MUI facciano al caso tuo), e nell'universo amiga è difficile trovare anche solo una guida pensata secondo l'OOP e MUI, quindi...  :D

Differente è il discorso :"scrivi un derivato XML e il sistema ti genera la gui", quello ahimè su Amiga non esiste associato ad una UI seria e testata  come MUI...
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: AmigaOS4.1.3 (Update3) rilasciato
« Risposta #2 il: 14 ſettembre 2011, 10:01:37 »
@Shinkuro: so come si separa il View (la GUI) dal Model (l'engine del programma), ma ho mostrato quell'hello world perchè ricalca esattamente ciò che volevo mostrare: la GUI va generata programmaticamente nel codice, e non esiste alcuno strumento per il design delle GUI data-driven. Come dicevo prima si tratta di un modello di sviluppo anni '90, e non mi va di perdere il mio tempo nella scrittura di codice che potrebbe fare un tool al posto mio. Appunto citavo Qt Designer, perchè sebbene la GUI venga generata staticamente a compile time, il suo codice viene processato da un tool automatico a partire da una descrizione XML generata da un tool visuale.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline raistlin77it

  • Tech Guru
  • *****
  • Post: 221
  • Karma: +2/-0
    • Mostra profilo
Re: AmigaOS4.1.3 (Update3) rilasciato
« Risposta #3 il: 14 ſettembre 2011, 12:32:24 »
Citazione da: "TheKaneB"
@Shinkuro: so come si separa il View (la GUI) dal Model (l'engine del programma), ma ho mostrato quell'hello world perchè ricalca esattamente ciò che volevo mostrare: la GUI va generata programmaticamente nel codice, e non esiste alcuno strumento per il design delle GUI data-driven. Come dicevo prima si tratta di un modello di sviluppo anni '90, e non mi va di perdere il mio tempo nella scrittura di codice che potrebbe fare un tool al posto mio. Appunto citavo Qt Designer, perchè sebbene la GUI venga generata staticamente a compile time, il suo codice viene processato da un tool automatico a partire da una descrizione XML generata da un tool visuale.

per MUI sotto MorphOS c'è chocolate castle,  che è un designer di gui http://http://teleinfo.pb.bialystok.pl/~krashan/software/chocolate/#screenshots, che ti da il sorgente in c da includere :D
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline Allanon

  • Administrator
  • Synthetic Voodoo
  • *****
  • Post: 3498
  • Karma: +17/-4
    • Mostra profilo
    • http://www.a-mc.biz
Re: AmigaOS4.1.3 (Update3) rilasciato
« Risposta #4 il: 14 ſettembre 2011, 13:31:35 »
Credo ci sia anche per aros...
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: AmigaOS4.1.3 (Update3) rilasciato
« Risposta #5 il: 14 ſettembre 2011, 13:59:33 »
gli darò un'occhiata appena possibile
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline raistlin77it

  • Tech Guru
  • *****
  • Post: 221
  • Karma: +2/-0
    • Mostra profilo
Re: AmigaOS4.1.3 (Update3) rilasciato
« Risposta #6 il: 14 ſettembre 2011, 14:15:33 »
Citazione da: "Allanon"
Credo ci sia anche per aros...

si, mi pare sia opensource, c'è anche muibuilder che va anche su 68k se non sbaglio
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline cdimauro

  • Human Debugger
  • *****
  • Post: 4291
  • Karma: +7/-95
    • Mostra profilo
Re: AmigaOS4.1.3 (Update3) rilasciato
« Risposta #7 il: 14 ſettembre 2011, 14:28:22 »
Ma non era meglio aprire un topic allo scopo? Io non ho risposto proprio perché Antonio ha detto che eravamo OT. :(

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: Progettazione di GUI tramite tools automatici
« Risposta #8 il: 14 ſettembre 2011, 14:37:16 »
Citazione da: "cdimauro"
Ma non era meglio aprire un topic allo scopo? Io non ho risposto proprio perché Antonio ha detto che eravamo OT. :(
/MOD
Ho splittato il topic perchè l'argomento è interessante e va approfondito :-)
Possiamo continuare qui
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline amitv

  • ASM Lover
  • *****
  • Post: 338
  • Karma: +1/-0
    • Mostra profilo
Re: Progettazione di GUI tramite tools automatici
« Risposta #9 il: 16 ſettembre 2011, 14:23:52 »
@ThekaneB

Almeno in questo os4 è piu' avanti:

http://http://amigabounty.net/index.php?function=viewproject&projectid=46
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: Progettazione di GUI tramite tools automatici
« Risposta #10 il: 16 ſettembre 2011, 14:30:21 »
Citazione da: "amitv"
@ThekaneB

Almeno in questo os4 è piu' avanti:

http://http://amigabounty.net/index.php?function=viewproject&projectid=46

Si, OS4 supporta gli shared object stile Unix, che hanno diversi difetti strutturali, ma sono veramente comodi per portare velocemente corposi software da Linux (in questo caso il framework Qt). Su MOS e AROS questa cosa manca, ed è più difficile effettuare il porting di grosse applicazioni.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Tags: