Intro

In un articolo precedente abbiamo presentato la classe OPERATION_CALL  , un’interfaccia utilizzata nel framework di Colibrì per la comunicazione fra gli oggetti. La classe, ereditata da Gui_Interface, quindi da EXTENDED_WIDGET, è basata sul concetto di  comando, inteso come una sequenza di stringhe che definiscono una frase, e di oggetti (puntatori )  trasferiti alla classe attraverso una macro (vedi questo articolo..).

Le istanze di questa classe possono ricevere un comando comando attraverso una macro, anche quando non direttamente accessibile attraverso il puntatore, esistendo una funzionalità  di registrazione (visibilità globale) che ne permettono l’accesso attraverso un nomo univoco.

In origine il framework di Colibrì conteneva solo un modo di comunicazione fra gli oggetti basato sul criterio della  funzione di ricezione di un  messaggio, sul modello di Windows. Questa modalità è conservata ancora, permettendo un’interfacciamento semplice con la messaggistica di windows verso i controlli (o widgets) dell’interfaccia grafica di Colibrì.  in seguito l’introduzione di OPERATION_CALL 

ha permesso di semplificare la messaggistica interna al framework, permettendo comandi molto più complessi, non basati su id di comando come nelle API di Windows, ma su frasi di lunghezza qualunque, alle quali possono essere associati parametri. Questo permette, ad esempio, di mandare un comando del tipo

La macro significa: manda il comando “visualizza la ricetta che segue”  all’oggetto di nome _$dock_recipe  .  In questo caso la ricetta è definita dalla funzione color->get_recipe(), mentre le tre stringhe $dock_recipe, _$display, _$recipe sono definite in un vocabolario composto da una collezione di file di inclusione usati nel software. di seguito ne è data una parte presente in “CLB_keyword.h”

La nuova classe CLB_messenger non sostituisce la gestione precedente, ma la affianca come interfaccia più agevole da programmare. la OPERATION_CALL sarà in futuro non più supportata all’interno di Colibrì, poichè la nuova interfaccia CLB_messenger già fornisce tutte le caratteristiche necessarie alla comunicazione bidirezionale fra gli oggetti. Attualmente le due interfacce sono entrambe disponibili per le classi derivare da EXTENDED_WIDGET (praticamente tutti i controlli costruiti nel framework).

Pages: 1 2 3
%d bloggers like this:
Skip to toolbar