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 |