Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - ShInKurO

Pagine: 1 2 [3] 4 5
31
Citazione
visto che mi trovo approfitto: prima o poi voglio salvare la mia classe custom in un file a sè stante.
non sono ancora arrivato a questo punto nello studio ma è ciò che sono i file mcc?
Non sai che vaso di pandora hai appena aperto  :lol:
Se vuoi mettere la tua classe in un file C separato fai pure, basta poi avere un header con tutte le definizioni della classe e includerlo dove la utilizzi. Per esempio se devi usare la classe dito all'interno della classe mano, potresti includere nel file .c della classe mano il file .h della classe dito e quindi istanziare quante dita vuoi.
Non è assolutamente quello il problema quando si parla di sorgenti, cioè separazione dei sorgenti eseguita per classi.
Quando crei una classe boopsi/mui come ben sai è possibile scegliere di creare classi pubbliche o private. Le tue classi sono tutte private, in quanto si trovano tutte all'interno del tuo programma e non sono accessibili dall'esterno (e le hai create definendole private, spero!).
Una classe pubblica boopsi/mui è dunque indipendente dal tuo programma e dev'essere accessibile dall'esterno, cioè in teoria anche da altri programmi.
Se dunque tu volessi creare una classe pubblica indipendente dal tuo progetto, per la serie:"un coso binario che sta all'interno di una directory che carichi solo quando ti serve dal tuo programma", parli effettivamente di una mcc.
Una MCC non è altro che una libreria Amiga con ulteriori definizioni, quindi prima di fare una mcc devi saper scrivere una libreria amiga. Se poi la volessi compatibile a livello di sorgente con tutti gli AmigaOS...auguri, ehm, no, semplicemente non è una cosa banale, praticamente dovresti utilizzare (via più semplice) parte del contenuto sorgente che trovi nelle mcc opensource, ma dovresti sapere molto bene ciò che fai (auguri ancora, è una cosa che avrei voluto fare anch'io, ma non ho mai avuto il tempo, avrei già pensato a un capitolo a se stante della mia guida, perchè è davvero una cosa difficoltosa avere una libreria compatibile con tutti i sistemi amiga e sai benissimo che la documentazione dei nostri sistemi lascia molto adesiderare, per usare un eufemismo).

Ti dico solamente che creare una lib amiga per os3.x è quasi possibile, per os4 e mos diventa più complicato, ma ci sono degli strumenti appositi che ti facilitano i lavori, per aros è praticamente improponibile. E dopo che hai ottenuto i codici relativi per ciascun sistema...auguri a metterli assieme. E sto parlando solo di libreria amiga semplice, non di classe boopsi/mui, per cui manca totalmente la documentazione.
Per fortuna qualcuno ha già messo insieme questo codice per te (le mcc opensource).

Citazione
in c++ senza mui se voglio far dialogare due oggetti, ad esempio, nel main prelevo un valore dal primo oggetto e lo piazzo in entrata al secondo tramite i rispettivi metodi.
con mui la struct data viene riempita ad ogni metodo e non ho "un'area franca" dove poter far dialogare due oggetti mui che non sia tramite la tecnica delle notifiche.
Faccio un esempio banale:
quando invoco mnew io inizializzo il mio oggetto e tra i vari, nell'area dati, è presente un vettore con le grandezze possibili di un font.
Ho poi un secondo oggetto, una cycle che dovrebbe visualizzare tutte ste grandezze, abbinato a un'altra cycle che visualizza i vari font presenti in una cartella.
Ero riuscito a far funzionare tutto fintantochè ai vari metodi avevo aggiunto, nei prototipi, parametri aggiuntivi ai vari msg, cl e obj. Ciò però è contro la filosofia mui che vuole solo quei tre parametri per i metodi.
Se metti tutto in un unico file, cattiva programmazione, ti dichiari una serie di var globali, casomai statiche e tutto si risolve.
Ma se voglio, in futuro, predisporre le varie classi ognuna nel proprio file così come già faccio per le altre librerie, come faccio?
Fermo restando che l'oggetto cycle all'apertuta del programma dovrebbe inizializzarsi da sè col suo bravo strptr e non con uno fornito dal metodo new di un'altro oggetto, se voglio fare questa forzatura come faccio? Se voglio che sia l'oggetto principale dell'applicativo a fornire dati agli altri ben prima della fase di disegno come faccio? Ho provato, in fase di uscita dal new dell'oggetto in questione a lanciare una set ma, essendo le due cycle posizionate prima nello script mui, il loro bravo new se lo sono già fatti.
Help!!!

edit:
una soluzione sarebbe quella di chiamare le funzioni di inizializzazione e di caricamento dei vettori (o delle liste) prima di tutto nel main, così da passare i vettori ai due cycle belli e pronti, ma se volessi invece far dialogare i tre oggetti in fase di esecuzione? E, soprattutto, è possibile in fase di esecuzione modificare una cycle?

Non mi ricordo assolutamente come funziona MUIC_Cycle, ma se vuoi un coso che quando aggiorni una lista di valori si accorga del cambiamento e aggiorni graficamente tutto non devi far altro che subclassare MUIC_Cycle, dichiararti un attributo pubblico e scrivere il relativo codice.
Per esempio:

- situazione di default, valori di default: setto il mio bel MUIA_MyCycle_MyLista dentro il costruttore o dentro MUIM_Setup overridati con i valori di default con una set(), a questo punto quello che c'è in OM_SET  della mia MUIC_MyCycle metterà i valori di default dove dovranno stare.

- situazione di cambiamento esterna: avviso il mio oggetto MyCycle che c'è stato questo cambiamento facendo una set su  MUIA_MyCycle_MyLista, OM_SET della mia MUIC_MyCycle metterà i valori di default dove dovranno stare.

32
Stai attento a usare variabili statiche e globali sugli AmigaOS, lo stack è statico, quindi si può saturare facilmente. Cerca di utilizzare sempre allocazioni dinamiche di memoria. Non so se hai già analizzato la situazione :)

33
Non so se ti potrebbero essere utili, visti gli errori che contengono, ma sul mio sito dovrebbero essere presenti i miei appunti di ingegneria del software. Quella è una base da cui partire assieme al capitolo 6 della mia guida...

34
Programmi e applicazioni / Re: Bring Zune to level of MUI 3.8
« il: 26 Gennaio 2012, 22:54:20 »
Pessima scelta quella di suddividere il mio bounty senza utilizzzare quello che avevo scritto io. Non arriverà ai livelli di mui3.8 così:

"Fix all Zune classes that do not function in the same way to their MUI 3.8 equivalents. Since this could be open-ended, only need to prove basic functionality is the same, don't need to track down every quirk."

Per la serie che uno scrive un programmino prova con una notifica stupida e può dire che MUIC_Notify è fixata, quando Zune ha seri problemi nel gestire le catene di notifiche complesse, come ho ben descritto sulla mia guida. E questo è solo un esempio, ce ne sono veramente tanti di casi, in pratica per funzionare seriamente dovrebbero compilarlo come MUI3.8 e portarlo su OS3.x, NON con Afa, ma proprio come sostituto totale di MUI, in questo modo verrebbero fuori tutte le incompatibilità.
Stessa cosa dovrebbero fare portandolo su OS4, ma:

"Optional:

    Port Zune to OS4 and MorphOS."

35
MorphOS / Re: MorphOS 3.0
« il: 22 Gennaio 2012, 14:17:51 »
Uff... :)
Tra l'altroquando uscirà dovrò farmi un weekend  giù per rifarmi i backup visto che non sono completi quelli di natale, e guardacaso la partizione incompleta è "Work" dove ho tutta la documentazione per programmare... me ne sono accorto oggi quando sulla ML di AROS hanno chiesto una cosa su MUIM_Setup e ricordavo fosse nella documentazione di MUI4... controllo dentro i backup e....  :evil:

36
Presentati / Re: Un saluto!
« il: 17 Gennaio 2012, 20:39:21 »
Sensible Soccer è l'unico gioco di calcio con il quale abbia mai giocato, a me fa schifo il calcio :)
Era davvero divertente :)

37
Altri & "Nerd OS" / Re: ScalOS Open Source
« il: 15 Gennaio 2012, 14:14:31 »
Hanno scritto Workbook con questo proposito, è incluso nella versione 68k di AROS se non sbaglio...

38
Altri & "Nerd OS" / Re: ScalOS Open Source
« il: 15 Gennaio 2012, 00:03:09 »
non hai mai provato a leggere e a correggere i sorgenti di wanderer e a fare un porting su os4 :-)
sono pessimi, molto meglio quelli di yam. Wanderer era stato creato per essere poco più che un abozzo per la workbench.library di AROS, poi ci hanno aggiunto tante cose non previste, è un sorgente abbastanza ostico, inoltre è nato quando zune non era usabile, quindi ci sono un sacco dicose che normalmente nella programmazione mui non hanno senso, insomma è fatto male, non so se negli ultimi 3 anni abbiano migliorato i sorgenti, ma penso proprio di no, visto anche che avevo detto più volte che si sarebbero dovuti modularizzare tutti i sorgenti e la logica del programma, mentre non mi pare sia avvenuta questa cosa.

I sorgenti migliori di un programma MUI open source sono ovviamente quelli di Ambient, ma devi avere una vasta conoscenza di MUI per comprenderli, sono più semplici quelli di Yam.

39
Altri & "Nerd OS" / ScalOS Open Source
« il: 14 Gennaio 2012, 15:37:28 »
Scalos is a desktop replacement for the Amiga. Some of its features: 100% Workbench replacement, Undo and Redo, 64bit arithmetic, Fully multitasking, Icon imagetypes, Icon datatype system, Icon dragging is more stable, Cybergraphics and Picasso96 24bit color support, Window patterns, Optimised backgroundpatterns routine, Live updating window scrolling, Drawer windows can be iconified, Menu preferences, Application Interface (API)

http://sourceforge.net/projects/scalos/

http://scalos.noname.fr/

Ovviamente tutto MUI :-)

Non ho mai avuto il piacere di usarlo, ero troppo attaccato al DOpus Magellan ai tempi del 3.x, e su MorphOS sarò attaccato ad Ambient, ma a differenza di quest'ultimo, abbastanza monolitico, se non sbaglio ScalOS si avvicina di più al Workbench originale come filosofia, cioè molto modulare.

40
AROS / Re: Ultime novità dalle nightly
« il: 09 Gennaio 2012, 22:11:38 »
Si può installare su pendrive?

41
Linguaggi di programmazione e scripting / A proposito di MUI
« il: 01 Gennaio 2012, 15:10:13 »
http://www.linkedin.com/groups/MUI-Magi ... g_ugrp_ovr

Ho creato questo gruppo di discussione su Linkedin, visto che mancava...  :D

42
Vado a memoria.
Dunque, in una classe puoi avere attributi privati, cioè delle variabili membro di una struttura C a cui però in teoria non possono accedere altre classi. Inoltre puoi avere gli attributi pubblici.
Un attributo è pubblico nel momento in cui tu overrraidi ("dichiari") un metodo OM_SET e/o un metodo OM_GET e al loro interno nello switch dai un nome all'attributo, per esempio MUIA_MIACLASSE_NOMEATTRIBUTO nel caso di MUI, in questo modo puoi controllare il settaggio/gettaggio dell'attributo attraverso SetAttr() e GetAtt(). Cmq avevo scritto un paragrafo riassuntivo nella mia guida, spe che cerco... è il 4.10:


Riassumendo abbiamo visto come una classe MUI può essere dotata di:

- Attributi privati : sono le variabili dichiarate dentro l'area dati della
                      classe che non sono state associate ad alcun simbolo;

- Attributi pubblici    : sono variabili dichiarate (di solito) all'interno
                          dell'area dati della classe, le quali sono associate in
                          OM_NEW/OM_SET/OM_GET a dei simboli (per esempio MUIA_Classe1_Attr1);

- Attributi notificabili: sono attributi pubblici il cui cambiamento di
                          valore viene rilevato e/o modificato da MUI per mezzo
                          di metodi quali MUIM_Notify e MUIM_Set;



nel tuo caso se non sbaglio puoi cambiare il contenuto di un attributo privato in questo modo:

struct areaDati1 *data = INST_DATA(cl, obj);
data->attr1 = VALORE_DA_ASSEGNARE;

Spero di averti chiarito le idee  :)

43
Altri & "Nerd OS" / Re: [NOS] GUI
« il: 30 Dicembre 2011, 13:16:46 »
Giusto per suggerire qualcosa che ricordi amiga ma che sia moderno:

L'OS dovrebbe fornire all'utente diversi modi per interagire con i servizi che offre:

- CLI evoluta con comandi intuitivi (NO UNIX, ma cmq compatibile con esso, più alla AmigaOS);
- GUI (e questa è da pensare, nel senso che dovrebbe essere non monolitica, e in grado di adattarsi a diversi tipi di input, dal mouse al touch);
- Scripting (Javascript): la scelta di javascript è presto detta, è difatti il linguaggio delle nuove UI, per quanto Python, ActionScript e altri siano superiori...;

Giusto per capire, il modulo che si occupa della GUI deve avere un server che riceve JS+CSS+HTML e sputi fuori una UI. Diciamo pure che si farebbe prima a portare tutta la piattaforma Mozilla (Gecko) e far disegnare ad essa tutta la GUI.

44
Altri & "Nerd OS" / Re: NOS, NsaOS :D
« il: 30 Dicembre 2011, 12:50:15 »
Citazione da: "TheKaneB"

Le icone erano disegnate schiacciate perchè i pixel del monitor sono quadrati mentre quelli televisivi sono più alti che larghi. Su una TV infatti si vedono bene, oppure su un emulatore puoi sperimentare con qualche filtro grafico.

EDIT: quindi presumo che la patch sia arrivata così tardi perchè in quel periodo iniziavano a circolare i primi monitor LCD su grafica esterna, mentre gli Amiga erano progettati per lavorare in PAL / NTSC, come da tradizione per le console da gioco.

È perchè dal 3.9 ci fu la collaborazione con Tantignone. L'articolo a cui si riferisce AmigaCori è appunto di Tantignone ed è su AmigaLife, io amo quell'articolo  :oops:

45
AmigaOS 4.x / Re: Amiga OS4.1 update 4 rilasciato
« il: 28 Dicembre 2011, 17:40:33 »
A proposito di USB2, io ho collegato un WD 500Gb formattato fat, per la precisione questo:

http://www.amazon.com/Western-Digital-P ... 24-7864267

SirionUSB lo riconosce, ma non appare nulla sul workbench, e nemmeno su MediaToolbox. Ho dovuto copiare i miei backup su pc tramite samba, e da li copiarli su hd...

Pagine: 1 2 [3] 4 5