Riferimenti per il file brain_applets_generic.c


Descrizione Dettagliata

Vengono qui definite le funzioni utilizzate dalle applets BrainTop per interfacciarsi col resto del sistema (e piu' precisamente con il BrainAppletManager).
By default, ogni applet viene inizializzata nello stesso modo: viene invocata dal BrainAppletsManager, il quale preleva dal database i parametri fondamentali e alloca un'area di memoria condivisa cui l'applet stessa si aggancia; tale area viene poi mantenuta per eventuali scambi tra il manager e l'applet.
Dopodiche' vengono inizializzati gli elementi grafici comuni a tutte le applets (la finestra principale, il menu contestuale...), e l'applet e' pronta per svolgere la sua funzione

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <libxfcegui4/libxfcegui4.h>
#include <libxfce4util/i18n.h>
#include "brain_applets_generic.h"
#include <config.h>
#include <brain_db.h>
#include <brain_settings.h>
#include <brain_db_settings.h>

Funzioni

int hash_memory_key (char *s)
 Funzioncina di hash, con cui identificare il segmento di memoria condivisa usata per scambiare dati tra l'applet ed il resto del sistema.
void init_info (BrainApplet **this_applet, char *applet_name)
void ontop_applet (GtkMenuItem *menuitem, BrainApplet *applet)
void change_applet_side (BrainAppletSide new_side, unsigned int new_coord, BrainApplet *applet_definition)
gboolean get_motion_event (GtkWidget *widget, GdkEventMotion *event, BrainApplet *applet)
gboolean get_button_press_event (GtkWidget *widget, GdkEventButton *event, BrainApplet *applet)
void move_applet (GtkMenuItem *menuitem, BrainApplet *applet)
void remove_applet (GtkMenuItem *menuitem, BrainApplet *applet)
void resize_applet (GtkMenuItem *menuitem, BrainApplet *applet)
void run_configuration_panel_for_applet (GtkMenuItem *item, BrainApplet *applet)
GtkMenu * create_applet_contestual_menu (BrainApplet *applet)
gboolean activate_applet_contestual_menu (GtkWidget *widget, GdkEvent *event)
void enable_applet_contestual_menu (GtkWidget *applet, GtkMenu *menu)
int event_handler (GtkWidget *widget, GdkEvent *event, gpointer data)
void bind_applet_events (GtkWidget *widget, gpointer window)
void init_graphs (BrainApplet *this_applet)
BrainAppletbrain_applet_init (char *applet_name, brain_terminate_applet terminate, gboolean configure)
 Funzione di inizializzazione globale dell'applet.
int get_applets_setting (void *args, int numCols, char **result, char **columnNames)
BrainMcsResult brain_applet_get_all_settings (BrainClient *client, char *name, BrainMcsSetting **settings)
 Per prelevare tutti i settaggi di una specifica applet.
BrainMcsResult brain_applet_set_setting (BrainClient *client, BrainMcsSetting *nuovi_settaggi)
 Setta il valore di un parametro per una applet.

Variabili

static gboolean applet_in_drag = FALSE
BrainAppletSharedSegment


Documentazione delle funzioni

int hash_memory_key char *  s  ) 
 

Funzioncina di hash, con cui identificare il segmento di memoria condivisa usata per scambiare dati tra l'applet ed il resto del sistema.

Funzione usata per ricavare una chiave univoca con cui identificare il segmento di memoria condivisa usato per il passaggio di dati tra il sistema e la applet. Thanks to K&R (capitolo 6, sezione 6.6) :-)

void init_info BrainApplet **  this_applet,
char *  applet_name
 

Aggancia SharedSegment al segmento di memoria condivisa allocato dal BrainAppletsManager

void ontop_applet GtkMenuItem *  menuitem,
BrainApplet applet
 

Mette la finestra dell'applet in primo piano

Da fare:
Scrivere questa funzione!

void change_applet_side BrainAppletSide  new_side,
unsigned int  new_coord,
BrainApplet applet_definition
 

Se, durante lo spostamento, la applet raggiunge la prossimita' di un altro lato, vengono cambiati i suoi dati e viene ridisegnata sul nuovo margine

gboolean get_motion_event GtkWidget *  widget,
GdkEventMotion *  event,
BrainApplet applet
 

Permette di spostare la applet lungo il margine del monitor. Da notare che le applets possono essere sempre visualizzate solo lungo i lati dello schermo

gboolean get_button_press_event GtkWidget *  widget,
GdkEventButton *  event,
BrainApplet applet
 

Usata per porre fine allo spostamento dell'applet

void move_applet GtkMenuItem *  menuitem,
BrainApplet applet
 

Se viene selezionata la relativa voce nel menu contestuale, l'applet segue il cursore del mouse finche' non viene cliccato un pulsante

void remove_applet GtkMenuItem *  menuitem,
BrainApplet applet
 

Per rimuovere l'applet dal workspace corrente

Da fare:
Scrivere questa funzione!

void resize_applet GtkMenuItem *  menuitem,
BrainApplet applet
 

Ridimensiona l'applet selezionata

void run_configuration_panel_for_applet GtkMenuItem *  item,
BrainApplet applet
 

Invoca il BrainMcsSettings per visualizzare il pannello di configurazione dell'applet desiderata.
I pannelli di configurazione per le applets sono pressoche' uguali a quelli delle altre componenti, installati nella directory BRAINTOP_INSTALLATION_PATH/mcs-plugins e compilati come gmodules, con la differenza che il campo visible della struttura BrainMcsPlugin deve essere settato a FALSE nella funzione mcs_plugin_init()

Vedi anche:
brain-mcs-manager.c
< La path di installazione

GtkMenu* create_applet_contestual_menu BrainApplet applet  ) 
 

Il menu universale contiene le funzioni:
OnTop
Move
Remove
Resize
Se e' contemplata una funzione di configurazione per l'applet, viene aggiunta anche la voce "Configure".
Il menu generato e' comunque estensibile all'interno del codice dell'applet stessa

gboolean activate_applet_contestual_menu GtkWidget *  widget,
GdkEvent *  event
 

Callback per l'apertura del menu contestuale alla pressione del tasto destro del mouse sopra la finestra dell'applet

void enable_applet_contestual_menu GtkWidget *  applet,
GtkMenu *  menu
 

Assegna alla finestra dell'applet la callback per l'apertura del menu contestuale

int event_handler GtkWidget *  widget,
GdkEvent *  event,
gpointer  data
 

Gestisce gli eventi che giungono dal mouse

void bind_applet_events GtkWidget *  widget,
gpointer  window
 

Utile per sfruttare la motion del mouse durante lo spostamento di una applet

void init_graphs BrainApplet this_applet  ) 
 

Inizializza la finestra principale e il menu contestuale

La finestra dell'applet viene definita come NETK_WINDOW_DOCK per permettere al window manager di identificarla in quanto applet ed essere trattata in modo speciale, ad esempio per non farla comparire nella lista delle finestre selezionabili con Alt+Tab

Vedi anche:
clientWindowType() in client.c (in BrainWindowManager)

BrainApplet* brain_applet_init char *  applet_name,
brain_terminate_applet  terminate,
gboolean  configure
 

Funzione di inizializzazione globale dell'applet.

Questa funzione e' tra le piu' importanti per le applets: aggancia l'area di memoria condivisa usata per scambiare informazioni tra l'applet ed il resto del sistema ed inizializza i pochi ma sempre validi elementi grafici che compongono l'applicazione

int get_applets_setting void *  args,
int  numCols,
char **  result,
char **  columnNames
 

Converte le entry dei settaggi ricavate dal database in strutture BrainMcsSetting. Da usare come callback di SQLite

BrainMcsResult brain_applet_get_all_settings BrainClient client,
char *  name,
BrainMcsSetting **  settings
 

Per prelevare tutti i settaggi di una specifica applet.

Pesca, nell'apposita tabella del database centrale, i settaggi relativi ad una particolare applet. Si e' deciso di mettere qui la funzione di accesso al DB invece che nella libreria BrainManager per rendere piu' indipendente il componente

Da fare:
Discriminare i settaggi anche in base all'attivita' / workspace attivato
Avvertimento:
Quando non serve piu', liberare dalla memoria l'array di BrainMcsSetting allocato

BrainMcsResult brain_applet_set_setting BrainClient client,
BrainMcsSetting nuovi_settaggi
 

Setta il valore di un parametro per una applet.


Documentazione delle variabili

gboolean applet_in_drag = FALSE [static]
 

Flag che attesta l'attuale stato di spostamento dell'applet: diventa TRUE quando viene selezionata la voce "Move" nel menu contestuale

BrainApplet* SharedSegment
 

Il segmento di memoria condivisa usato per le comunicazioni tra la applet e il BrainAppletsManager


Generato il Sun Apr 16 01:36:44 2006 per BrainTop da  doxygen 1.4.6