typedef struct {
gchar *label; a
gpointer data;
gpointer callback;
} GGaduMenuItem;
typedef GNode GGaduMenu;
label przechowuje tekst, który jest wyświetlany w menu. Znak "_" określa, że następujący po nim znak jest tzw. akceleratorem (czyt. skrótem).
typedef struct {
gchar *name;
gint type;
gpointer ptr;
} GGaduVar;
label zawiera nazwę zmiennej, type jej typ, a ptr wskaźnik do pamięci, gdzie jest/będzie przechowywana dana zmienna.
typedef struct {
gchar *display_name;
gchar *img_filename;
GSList *statuslist;
gint offline_status;
} GGaduProtocol;
display_name przechowuje nazwę protokołu, która jest wyświetlana na liście protokołów. img_filename jest ścieżką do obrazka z etykietą na zakładkę (taki pionowy tekst pojawiający się na zakładce). statuslist przechowuje listę wszystkich dostępnych stanów danego protokołu (np. dostępny, niedostępny, zajęty). offline_status określa, który ze stanów oznacza, że protokół nie ma połączenia z serwerem (jest w stanie offline).
typedef struct {
gpointer name;
gpointer source_plugin_name;
gpointer destination_plugin_name;
gpointer data;
gpointer data_return;
gint error;
gboolean free_me;
void (*free)(gpointer signal);
} GGaduSignal;
name przechowuje nazwę sygnału, np. "gui show warning".
source_plugin_name przechowuje nazwę pluginu, z którego został wysłany sygnał. Służy on m.in. do identyfikacji pluginu, w przypadku konieczności wysłania sygnału zwrotnego.
destination_plugin_name zawiera nazwę pluginu, który otrzyma sygnał. Może to być zwykła nazwa, NULL lub nazwa z tzw. wildcard. Jeśli jest to zwykła nazwa (np. "main-gui"), to tylko ten plugin otrzyma sygnał. Jeśli destination_plugin_name jest równe NULL, to sygnał zostanie wysłany do każdego załadowanego pluginu. Jeśli zostało użyta tzw. wildcard (np. "sound*"), to sygnał jest wysyłany do każdego pluginu pasującego do maski. Przykładowo, jeśli mamy "sound*" oraz załadowane pluginy sound-oss i sound-esd, to sygnał zostanie wysłany do tych dwóch pluginów.
data przechowuje wskaźnik do danych towarzyszących sygnałowi. Jeśli wyborazisz sobie sygnał jako zwykłą funkcję, to data będzie argumentem tej funkcji.
data_return jest wskaźnikiem do danych zwróconych przez funkcję obsługi sygnału. Jeśli znowu uruchomisz wyobraźnię, to data_return jest zmienną zwracaną przez funkcję za pośrednictwem return.
typedef struct {
gpointer name;
} GGaduSignalInfo;
typedef struct {
guint type;
gchar *name;
gchar *description;
gpointer ptr;
void *plugin_so_handler;
gchar *config_file;
GSList *variables;
GSList *signals;
GGaduProtocol *protocol;
void (*signal_receive_func)(gpointer,gpointer);
void (*destroy_plugin)();
void (*start_plugin)();
} GGaduPlugin;
type określa typ pluginu (czy jest to protokół, gui, inny). name przechowuje nazwę pluginu. description jest krótkim opisem pluginu. ptr to wskaźnik na strukturę charakterystyczną dla pluginu (np. protokołu). plugin_so_handler jest wskaźnikiem zwróconym przez dlopen.
config_file określa plik konfiguracyjny danego pluginu. variables jest listą zmiennych wczytanych z pliku konfiguracyjnego. signals jest listą sygnałów akceptowanych przez plugin.
protocol to specyficzna dla każdego pluginu struktura.
signal_receive_func jest wskaźnikiem do funkcji odbierającej sygnały dla danego pluginu. destroy_plugin jest wskaźnikiem do funkcji zwalniającej pamięć i czyszczącej po pluginie. start_plugin jest wskaźnikiem do funkcji uruchamiającej plugin.
typedef struct {
gchar *name;
gchar *path;
} GGaduPluginFile;
name jest nazwą pluginu, natomiast path ścieżką do pliku so pluginu.
typedef struct {
gboolean send_on_enter;
guint main_on_start;
guint width;
guint height;
gint pos_x;
gint pos_y;
GSList *all_available_plugins;
GSList *plugins;
gchar *configdir;
GSList *waiting_signals;
gboolean all_plugins_loaded;
GMainLoop *main_loop;
GSource *signals_source;
} GGaduConfig;
| Poprzedni | Spis tre¶ci | Nastêpny |
| Struktury | Pocz±tek rozdzia³u | unified-types.h |